/* Generated by Cython 3.0.11 */

#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
#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
#else
#define __PYX_EXTRA_ABI_MODULE_NAME ""
#endif
#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
#define CYTHON_HEX_VERSION 0x03000BF0
#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
#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
#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
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#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
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #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
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(CYTHON_LIMITED_API)
  #ifdef Py_LIMITED_API
    #undef __PYX_LIMITED_VERSION_HEX
    #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
  #endif
  #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 0
  #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
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(Py_GIL_DISABLED) || 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
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #ifndef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #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
  #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_GIL
  #define CYTHON_FAST_GIL 0
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef 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
  #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 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 0
  #endif
#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
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 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
#ifndef CYTHON_USE_CPP_STD_MOVE
  #if defined(__cplusplus) && (\
    __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
    #define CYTHON_USE_CPP_STD_MOVE 1
  #else
    #define CYTHON_USE_CPP_STD_MOVE 0
  #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 CYTHON_COMPILING_IN_LIMITED_API
    static CYTHON_INLINE PyObject* __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 *exception_table = NULL;
        PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
        #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
        PyObject *version_info;
        PyObject *py_minor_version = NULL;
        #endif
        long minor_version = 0;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
        minor_version = 11;
        #else
        if (!(version_info = PySys_GetObject("version_info"))) goto end;
        if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
        minor_version = PyLong_AsLong(py_minor_version);
        Py_DECREF(py_minor_version);
        if (minor_version == -1 && PyErr_Occurred()) goto end;
        #endif
        if (!(types_module = PyImport_ImportModule("types"))) goto end;
        if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
        if (minor_version <= 7) {
            (void)p;
            result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else if (minor_version <= 10) {
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else {
            if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
        }
    end:
        Py_XDECREF(code_type);
        Py_XDECREF(exception_table);
        Py_XDECREF(types_module);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
    #ifndef CO_OPTIMIZED
    #define CO_OPTIMIZED 0x0001
    #endif
    #ifndef CO_NEWLOCALS
    #define CO_NEWLOCALS 0x0002
    #endif
    #ifndef CO_VARARGS
    #define CO_VARARGS 0x0004
    #endif
    #ifndef CO_VARKEYWORDS
    #define CO_VARKEYWORDS 0x0008
    #endif
    #ifndef CO_ASYNC_GENERATOR
    #define CO_ASYNC_GENERATOR 0x0200
    #endif
    #ifndef CO_GENERATOR
    #define CO_GENERATOR 0x0020
    #endif
    #ifndef CO_COROUTINE
    #define CO_COROUTINE 0x0080
    #endif
#elif PY_VERSION_HEX >= 0x030B0000
  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) {
    PyCodeObject *result;
    PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
    if (!empty_bytes) return NULL;
    result =
      #if PY_VERSION_HEX >= 0x030C0000
        PyUnstable_Code_NewWithPosOnlyArgs
      #else
        PyCode_NewWithPosOnlyArgs
      #endif
        (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
    Py_DECREF(empty_bytes);
    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
  #if PY_VERSION_HEX >= 0x030d00A4
  #  define __Pyx_PyCFunctionFast PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
  #else
  #  define __Pyx_PyCFunctionFast _PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
  #endif
#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_MAJOR_VERSION >= 0x030900B1
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
#else
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
#endif
#define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
#elif !CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
    return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
}
#endif
static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
#else
    return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
}
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
#if __PYX_LIMITED_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 >= 0x030d00A1
  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#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 && PY_VERSION_HEX < 0x030d0000 || 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 && PY_VERSION_HEX < 0x030d0000 && 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_COMPILING_IN_LIMITED_API
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
#else
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
#endif
#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE((PyObject*)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_ITEM(o, i) PySequence_ITEM(o, i)
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
#else
  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#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/Dbn.h"
#include "YODA/Estimate.h"
#include "YODA/Point.h"
#include "YODA/Utils/BinnedUtils.h"
#include "YODA/AnalysisObject.h"
#include "YODA/Fillable.h"
#include "YODA/Scatter.h"
#include "YODA/Utils/sortedvector.h"
#include "YODA/Estimate0D.h"
#include "merge.hh"
#include "YODA/Counter.h"
#include "YODA/BinnedAxis.h"
#include "YODA/Histo.h"
#include "YODA/Profile.h"
#include "YODA/BinnedEstimate.h"
#include <iostream>
#include <sstream>
#include "YODA/IO.h"
#include "YODA/Reader.h"
#include "YODA/ReaderYODA.h"
#include "YODA/ReaderFLAT.h"
#include "YODA/Writer.h"
#include "YODA/WriterYODA.h"
#include "YODA/WriterYODA1.h"
#include "YODA/WriterFLAT.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 Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#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)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#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
  #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
#include <string.h>
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
#include <string.h>
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[] = {
  "include/Binning.pyx",
  "<stringsource>",
  "include/Functions.pyx",
  "include/IO.pyx",
  "include/generated/Axis.pyx",
  "include/generated/Bin1D.pyx",
  "include/generated/BinnedEstimate1D.pyx",
  "util.pxd",
  "core.pyx",
  "include/AnalysisObject.pyx",
  "include/Counter.pyx",
  "include/Dbn0D.pyx",
  "include/Estimate.pyx",
  "include/Estimate0D.pyx",
  "include/Point.pyx",
  "include/generated/Bin2D.pyx",
  "include/generated/Bin3D.pyx",
  "include/generated/BinnedEstimate2D.pyx",
  "include/generated/BinnedEstimate3D.pyx",
  "include/generated/BinnedHisto1D.pyx",
  "include/generated/BinnedHisto2D.pyx",
  "include/generated/BinnedHisto3D.pyx",
  "include/generated/BinnedProfile1D.pyx",
  "include/generated/BinnedProfile2D.pyx",
  "include/generated/Dbn1D.pyx",
  "include/generated/Dbn2D.pyx",
  "include/generated/Dbn3D.pyx",
  "include/generated/Point1D.pyx",
  "include/generated/Point2D.pyx",
  "include/generated/Point3D.pyx",
  "include/generated/Point4D.pyx",
  "include/generated/Scatter1D.pyx",
  "include/generated/Scatter2D.pyx",
  "include/generated/Scatter3D.pyx",
  "include/generated/Scatter4D.pyx",
  "type.pxd",
  "include/Errors.pyx",
};
/* #### Code section: utility_code_proto_before_types ### */
/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* #### 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_AnalysisObject;
struct __pyx_obj_4yoda_4core_Counter;
struct __pyx_obj_4yoda_4core_Dbn0D;
struct __pyx_obj_4yoda_4core_Estimate;
struct __pyx_obj_4yoda_4core_Estimate0D;
struct __pyx_obj_4yoda_4core_Point;
struct __pyx_obj_4yoda_4core_Axis;
struct __pyx_obj_4yoda_4core_BinnedEstimate1D;
struct __pyx_obj_4yoda_4core_BinnedEstimate2D;
struct __pyx_obj_4yoda_4core_BinnedEstimate3D;
struct __pyx_obj_4yoda_4core_BinnedHisto1D;
struct __pyx_obj_4yoda_4core_BinnedHisto2D;
struct __pyx_obj_4yoda_4core_BinnedHisto3D;
struct __pyx_obj_4yoda_4core_BinnedProfile1D;
struct __pyx_obj_4yoda_4core_BinnedProfile2D;
struct __pyx_obj_4yoda_4core_Dbn1D;
struct __pyx_obj_4yoda_4core_Dbn2D;
struct __pyx_obj_4yoda_4core_Dbn3D;
struct __pyx_obj_4yoda_4core_Point1D;
struct __pyx_obj_4yoda_4core_Point2D;
struct __pyx_obj_4yoda_4core_Point3D;
struct __pyx_obj_4yoda_4core_Point4D;
struct __pyx_obj_4yoda_4core_Scatter1D;
struct __pyx_obj_4yoda_4core_Scatter2D;
struct __pyx_obj_4yoda_4core_Scatter3D;
struct __pyx_obj_4yoda_4core_Scatter4D;
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_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr;

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

/* "yoda/declarations.pxd":26
 * 
 * ctypedef map[string, string] Annotations
 * ctypedef double (*dbl_dbl_fptr) (double)             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef double (*__pyx_t_4yoda_12declarations_dbl_dbl_fptr)(double);
struct __pyx_defaults;
typedef struct __pyx_defaults __pyx_defaults;
struct __pyx_defaults1;
typedef struct __pyx_defaults1 __pyx_defaults1;
struct __pyx_defaults {
  PyObject *__pyx_arg_errors1;
  PyObject *__pyx_arg_errors2;
};
struct __pyx_defaults1 {
  PyObject *__pyx_arg_errors1;
  PyObject *__pyx_arg_errors2;
};

/* "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/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/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/Estimate.pyx":2
 * cimport util
 * cdef class Estimate(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A point estimate, consisting of a central value and an error breakdown.
 */
struct __pyx_obj_4yoda_4core_Estimate {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Estimate0D.pyx":2
 * cimport util
 * cdef class Estimate0D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     An Estimate0D, consisting of a central value and an error breakdown.
 */
struct __pyx_obj_4yoda_4core_Estimate0D {
  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/generated/Axis.pyx":9
 * #################################################
 * cimport util
 * cdef class Axis(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A discrete or continuous axis, depending on the edge type.
 */
struct __pyx_obj_4yoda_4core_Axis {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
  PyObject *axisT;
};


/* "include/generated/BinnedEstimate1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate1D, i.e. a collection of Estimate objects.
 */
struct __pyx_obj_4yoda_4core_BinnedEstimate1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedEstimate2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate2D, i.e. a collection of Estimate objects.
 */
struct __pyx_obj_4yoda_4core_BinnedEstimate2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedEstimate3D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate3D, i.e. a collection of Estimate objects.
 */
struct __pyx_obj_4yoda_4core_BinnedEstimate3D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedHisto1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto1D, i.e. a collection of Dbn1D objects.
 */
struct __pyx_obj_4yoda_4core_BinnedHisto1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedHisto2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto2D, i.e. a collection of Dbn2D objects.
 */
struct __pyx_obj_4yoda_4core_BinnedHisto2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedHisto3D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto3D, i.e. a collection of Dbn3D objects.
 */
struct __pyx_obj_4yoda_4core_BinnedHisto3D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedProfile1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedProfile1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedProfile1D, i.e. a collection of Dbn2D objects.
 */
struct __pyx_obj_4yoda_4core_BinnedProfile1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/BinnedProfile2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedProfile2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedProfile2D, i.e. a collection of Dbn3D objects.
 */
struct __pyx_obj_4yoda_4core_BinnedProfile2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
  PyObject *_config;
  PyObject *_binning;
};


/* "include/generated/Dbn1D.pyx":9
 * #################################################
 * 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/generated/Dbn2D.pyx":9
 * #################################################
 * cimport util
 * cdef class Dbn2D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 2D distribution 'counter', used and exposed by 2D histograms and their bins.
 */
struct __pyx_obj_4yoda_4core_Dbn2D {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


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


/* "include/generated/Point1D.pyx":9
 * #################################################
 * 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/generated/Point2D.pyx":9
 * #################################################
 * 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/generated/Point3D.pyx":9
 * #################################################
 * 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/generated/Point4D.pyx":9
 * #################################################
 * cimport util
 * cdef class Point4D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 4D point with errors, used by the Scatter4D class.
 */
struct __pyx_obj_4yoda_4core_Point4D {
  struct __pyx_obj_4yoda_4core_Point __pyx_base;
};


/* "include/generated/Scatter1D.pyx":9
 * #################################################
 * 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/generated/Scatter2D.pyx":9
 * #################################################
 * 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/generated/Scatter3D.pyx":9
 * #################################################
 * 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/generated/Scatter4D.pyx":9
 * #################################################
 * cimport util
 * cdef class Scatter4D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     4D scatter plot, i.e. a collection of Point4D objects with positions and errors.
 */
struct __pyx_obj_4yoda_4core_Scatter4D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/AnalysisObject.pyx":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     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":42
 *         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/Binning.pyx":11
 * 
 *     def config(self):
 *         return ''.join(a.type() for a in self.axes)             # <<<<<<<<<<<<<<
 * 
 *     def width(self, dim, index):
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_a;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "include/generated/Axis.pyx":38
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Axis.pyx":42
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):
 *           edges_i = list(int(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Axis.pyx":46
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):
 *           edges_s = list(str(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 *           self.axisT = 's'
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":156
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":157
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":158
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":162
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":163
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":164
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":168
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":169
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":170
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":174
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":175
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":176
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":180
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":181
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":182
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":186
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":187
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":188
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":192
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":193
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":194
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":198
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":199
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":200
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":204
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":205
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":206
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":210
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":211
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":212
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":216
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":217
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":218
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":222
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":223
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":224
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":228
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":229
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":230
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":234
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":235
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":236
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":240
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":241
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":242
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":246
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":247
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":248
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":252
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":253
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":254
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":258
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":259
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":260
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":264
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":265
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":266
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":270
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":271
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":272
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":276
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":277
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":278
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":282
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":283
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":284
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":288
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":289
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":290
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":294
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":295
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":296
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":300
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":301
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":302
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":306
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":307
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":308
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":312
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":313
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedEstimate3D.pyx":314
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto3D.pyx":50
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto3D.pyx":51
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedHisto3D.pyx":52
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/BinnedProfile2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point1D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point1D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point1D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point2D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point2D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point2D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point3D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point3D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point3D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point4D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point4D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/generated/Point4D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 * 
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};



/* "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/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/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 *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn0D *__pyx_vtabptr_4yoda_4core_Dbn0D;


/* "include/Estimate.pyx":2
 * cimport util
 * cdef class Estimate(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A point estimate, consisting of a central value and an error breakdown.
 */

struct __pyx_vtabstruct_4yoda_4core_Estimate {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Estimate *(*estptr)(struct __pyx_obj_4yoda_4core_Estimate *);
};
static struct __pyx_vtabstruct_4yoda_4core_Estimate *__pyx_vtabptr_4yoda_4core_Estimate;


/* "include/Estimate0D.pyx":2
 * cimport util
 * cdef class Estimate0D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     An Estimate0D, consisting of a central value and an error breakdown.
 */

struct __pyx_vtabstruct_4yoda_4core_Estimate0D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Estimate0D *(*estptr)(struct __pyx_obj_4yoda_4core_Estimate0D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Estimate0D *__pyx_vtabptr_4yoda_4core_Estimate0D;


/* "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/generated/Axis.pyx":9
 * #################################################
 * cimport util
 * cdef class Axis(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A discrete or continuous axis, depending on the edge type.
 */

struct __pyx_vtabstruct_4yoda_4core_Axis {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Axis<double>  *(*axis_d_ptr)(struct __pyx_obj_4yoda_4core_Axis *);
  YODA::Axis<int>  *(*axis_i_ptr)(struct __pyx_obj_4yoda_4core_Axis *);
  YODA::Axis<std::string>  *(*axis_s_ptr)(struct __pyx_obj_4yoda_4core_Axis *);
};
static struct __pyx_vtabstruct_4yoda_4core_Axis *__pyx_vtabptr_4yoda_4core_Axis;
static CYTHON_INLINE YODA::Axis<double>  *__pyx_f_4yoda_4core_4Axis_axis_d_ptr(struct __pyx_obj_4yoda_4core_Axis *);
static CYTHON_INLINE YODA::Axis<int>  *__pyx_f_4yoda_4core_4Axis_axis_i_ptr(struct __pyx_obj_4yoda_4core_Axis *);
static CYTHON_INLINE YODA::Axis<std::string>  *__pyx_f_4yoda_4core_4Axis_axis_s_ptr(struct __pyx_obj_4yoda_4core_Axis *);


/* "include/generated/BinnedEstimate1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate1D, i.e. a collection of Estimate objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedEstimate1D<double>  *(*binned_d_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);
  YODA::BinnedEstimate1D<int>  *(*binned_i_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);
  YODA::BinnedEstimate1D<std::string>  *(*binned_s_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate1D *__pyx_vtabptr_4yoda_4core_BinnedEstimate1D;
static CYTHON_INLINE YODA::BinnedEstimate1D<double>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);
static CYTHON_INLINE YODA::BinnedEstimate1D<int>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);
static CYTHON_INLINE YODA::BinnedEstimate1D<std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *);


/* "include/generated/BinnedEstimate2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate2D, i.e. a collection of Estimate objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedEstimate2D<double,double>  *(*binned_dd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<double,int>  *(*binned_di_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<double,std::string>  *(*binned_ds_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<int,double>  *(*binned_id_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<int,int>  *(*binned_ii_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<int,std::string>  *(*binned_is_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<std::string,double>  *(*binned_sd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<std::string,int>  *(*binned_si_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
  YODA::BinnedEstimate2D<std::string,std::string>  *(*binned_ss_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate2D *__pyx_vtabptr_4yoda_4core_BinnedEstimate2D;
static CYTHON_INLINE YODA::BinnedEstimate2D<double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *);


/* "include/generated/BinnedEstimate3D.pyx":10
 * cimport util
 * 
 * cdef class BinnedEstimate3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedEstimate3D, i.e. a collection of Estimate objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate3D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedEstimate3D<double,double,double>  *(*binned_ddd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,double,int>  *(*binned_ddi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,double,std::string>  *(*binned_dds_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,int,double>  *(*binned_did_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,int,int>  *(*binned_dii_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,int,std::string>  *(*binned_dis_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,std::string,double>  *(*binned_dsd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,std::string,int>  *(*binned_dsi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<double,std::string,std::string>  *(*binned_dss_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,double,double>  *(*binned_idd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,double,int>  *(*binned_idi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,double,std::string>  *(*binned_ids_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,int,double>  *(*binned_iid_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,int,int>  *(*binned_iii_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,int,std::string>  *(*binned_iis_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,std::string,double>  *(*binned_isd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,std::string,int>  *(*binned_isi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<int,std::string,std::string>  *(*binned_iss_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,double,double>  *(*binned_sdd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,double,int>  *(*binned_sdi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,double,std::string>  *(*binned_sds_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,int,double>  *(*binned_sid_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,int,int>  *(*binned_sii_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,int,std::string>  *(*binned_sis_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,std::string,double>  *(*binned_ssd_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,std::string,int>  *(*binned_ssi_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *(*binned_sss_ptr)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedEstimate3D *__pyx_vtabptr_4yoda_4core_BinnedEstimate3D;
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *);


/* "include/generated/BinnedHisto1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto1D, i.e. a collection of Dbn1D objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedHisto1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedHisto1D<double>  *(*binned_d_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);
  YODA::BinnedHisto1D<int>  *(*binned_i_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);
  YODA::BinnedHisto1D<std::string>  *(*binned_s_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedHisto1D *__pyx_vtabptr_4yoda_4core_BinnedHisto1D;
static CYTHON_INLINE YODA::BinnedHisto1D<double>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);
static CYTHON_INLINE YODA::BinnedHisto1D<int>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);
static CYTHON_INLINE YODA::BinnedHisto1D<std::string>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *);


/* "include/generated/BinnedHisto2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto2D, i.e. a collection of Dbn2D objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedHisto2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedHisto2D<double,double>  *(*binned_dd_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<double,int>  *(*binned_di_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<double,std::string>  *(*binned_ds_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<int,double>  *(*binned_id_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<int,int>  *(*binned_ii_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<int,std::string>  *(*binned_is_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<std::string,double>  *(*binned_sd_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<std::string,int>  *(*binned_si_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
  YODA::BinnedHisto2D<std::string,std::string>  *(*binned_ss_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedHisto2D *__pyx_vtabptr_4yoda_4core_BinnedHisto2D;
static CYTHON_INLINE YODA::BinnedHisto2D<double,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<double,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<double,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<int,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<int,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<int,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *);


/* "include/generated/BinnedHisto3D.pyx":10
 * cimport util
 * 
 * cdef class BinnedHisto3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedHisto3D, i.e. a collection of Dbn3D objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedHisto3D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedHisto3D<double,double,double>  *(*binned_ddd_ptr)(struct __pyx_obj_4yoda_4core_BinnedHisto3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedHisto3D *__pyx_vtabptr_4yoda_4core_BinnedHisto3D;
static CYTHON_INLINE YODA::BinnedHisto3D<double,double,double>  *__pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *);


/* "include/generated/BinnedProfile1D.pyx":10
 * cimport util
 * 
 * cdef class BinnedProfile1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedProfile1D, i.e. a collection of Dbn2D objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedProfile1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedProfile1D<double>  *(*binned_d_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);
  YODA::BinnedProfile1D<int>  *(*binned_i_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);
  YODA::BinnedProfile1D<std::string>  *(*binned_s_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedProfile1D *__pyx_vtabptr_4yoda_4core_BinnedProfile1D;
static CYTHON_INLINE YODA::BinnedProfile1D<double>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);
static CYTHON_INLINE YODA::BinnedProfile1D<int>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);
static CYTHON_INLINE YODA::BinnedProfile1D<std::string>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *);


/* "include/generated/BinnedProfile2D.pyx":10
 * cimport util
 * 
 * cdef class BinnedProfile2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     BinnedProfile2D, i.e. a collection of Dbn3D objects.
 */

struct __pyx_vtabstruct_4yoda_4core_BinnedProfile2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::BinnedProfile2D<double,double>  *(*binned_dd_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<double,int>  *(*binned_di_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<double,std::string>  *(*binned_ds_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<int,double>  *(*binned_id_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<int,int>  *(*binned_ii_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<int,std::string>  *(*binned_is_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<std::string,double>  *(*binned_sd_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<std::string,int>  *(*binned_si_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
  YODA::BinnedProfile2D<std::string,std::string>  *(*binned_ss_ptr)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_BinnedProfile2D *__pyx_vtabptr_4yoda_4core_BinnedProfile2D;
static CYTHON_INLINE YODA::BinnedProfile2D<double,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<double,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<double,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<int,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<int,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<int,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *);


/* "include/generated/Dbn1D.pyx":9
 * #################################################
 * 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 *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn1D *__pyx_vtabptr_4yoda_4core_Dbn1D;


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

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


/* "include/generated/Dbn3D.pyx":9
 * #################################################
 * cimport util
 * cdef class Dbn3D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 3D distribution 'counter', used and exposed by 3D histograms 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 *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn3D *__pyx_vtabptr_4yoda_4core_Dbn3D;


/* "include/generated/Point1D.pyx":9
 * #################################################
 * 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/generated/Point2D.pyx":9
 * #################################################
 * 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/generated/Point3D.pyx":9
 * #################################################
 * 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/generated/Point4D.pyx":9
 * #################################################
 * cimport util
 * cdef class Point4D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 4D point with errors, used by the Scatter4D class.
 */

struct __pyx_vtabstruct_4yoda_4core_Point4D {
  struct __pyx_vtabstruct_4yoda_4core_Point __pyx_base;
  YODA::Point4D *(*p4ptr)(struct __pyx_obj_4yoda_4core_Point4D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Point4D *__pyx_vtabptr_4yoda_4core_Point4D;


/* "include/generated/Scatter1D.pyx":9
 * #################################################
 * 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/generated/Scatter2D.pyx":9
 * #################################################
 * 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/generated/Scatter3D.pyx":9
 * #################################################
 * 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 *);


/* "include/generated/Scatter4D.pyx":9
 * #################################################
 * cimport util
 * cdef class Scatter4D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     4D scatter plot, i.e. a collection of Point4D objects with positions and errors.
 */

struct __pyx_vtabstruct_4yoda_4core_Scatter4D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Scatter4D *(*s4ptr)(struct __pyx_obj_4yoda_4core_Scatter4D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Scatter4D *__pyx_vtabptr_4yoda_4core_Scatter4D;
static CYTHON_INLINE YODA::Scatter4D *__pyx_f_4yoda_4core_9Scatter4D_s4ptr(struct __pyx_obj_4yoda_4core_Scatter4D *);
/* #### 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 && !CYTHON_COMPILING_IN_LIMITED_API
  #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 */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
#else
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
#endif
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
    #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
#else
    #define __Pyx_Arg_NewRef_VARARGS(arg) arg
    #define __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#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);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
    #define __Pyx_Arg_NewRef_FASTCALL(arg) arg  /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
                                                   to have the same reference counting */
    #define __Pyx_Arg_XDECREF_FASTCALL(arg)
#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
    #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
    #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
#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);

/* MoveIfSupported.proto */
#if CYTHON_USE_CPP_STD_MOVE
  #include <utility>
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) std::move(x)
#else
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) x
#endif

/* 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);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __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);

/* 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);

/* 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

/* 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

/* 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);

/* 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

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

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

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

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

/* StringJoin.proto */
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyString_Join __Pyx_PyBytes_Join
#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
#else
#define __Pyx_PyString_Join PyUnicode_Join
#define __Pyx_PyBaseString_Join PyUnicode_Join
#endif
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);

/* 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

/* 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);

/* 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) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS
    as_c_string = PyBytes_AS_STRING(obj);
    size = PyBytes_GET_SIZE(obj);
#else
    if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) {
        return (double)-1;
    }
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}
static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS
    as_c_string = PyByteArray_AS_STRING(obj);
    size = PyByteArray_GET_SIZE(obj);
#else
    as_c_string = PyByteArray_AsString(obj);
    if (as_c_string == NULL) {
        return (double)-1;
    }
    size = PyByteArray_Size(obj);
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}

/* pyunicode_as_double.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS
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 && CYTHON_ASSUME_SAFE_MACROS
    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))

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

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

/* 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

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

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

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* 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

/* 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

/* 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);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __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 */
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define __Pyx_init_assertions_enabled()  (0)
  #define __pyx_assertions_enabled()  (1)
#elif CYTHON_COMPILING_IN_LIMITED_API  ||  (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000)
  static int __pyx_assertions_enabled_flag;
  #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
  static int __Pyx_init_assertions_enabled(void) {
    PyObject *builtins, *debug, *debug_str;
    int flag;
    builtins = PyEval_GetBuiltins();
    if (!builtins) goto bad;
    debug_str = PyUnicode_FromStringAndSize("__debug__", 9);
    if (!debug_str) goto bad;
    debug = PyObject_GetItem(builtins, debug_str);
    Py_DECREF(debug_str);
    if (!debug) goto bad;
    flag = PyObject_IsTrue(debug);
    Py_DECREF(debug);
    if (flag == -1) goto bad;
    __pyx_assertions_enabled_flag = flag;
    return 0;
  bad:
    __pyx_assertions_enabled_flag = 1;
    return -1;
  }
#else
  #define __Pyx_init_assertions_enabled()  (0)
  #define __pyx_assertions_enabled()  (!Py_OptimizeFlag)
#endif

/* 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);

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

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#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

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

/* 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);

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

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

/* 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

/* RaiseUnexpectedTypeError.proto */
static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);

/* Py3UpdateBases.proto */
static PyObject* __Pyx_PEP560_update_bases(PyObject *bases);

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

/* 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

/* 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 CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    typesModule = PyImport_ImportModule("types");
    if (!typesModule) return NULL;
    methodType = PyObject_GetAttrString(typesModule, "MethodType");
    Py_DECREF(typesModule);
    if (!methodType) return NULL;
    result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
    Py_DECREF(methodType);
    return result;
}
#elif 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 || CYTHON_COMPILING_IN_LIMITED_API
  #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 CYTHON_COMPILING_IN_LIMITED_API
    PyObject_HEAD
    PyObject *func;
#elif PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_BACKPORT_VECTORCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    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 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_classobj;
#endif
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#undef __Pyx_CyOrPyCFunction_Check
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
#undef __Pyx_IsSameCFunction
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
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 && PY_VERSION_HEX < 0x030d0000
#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

/* 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);

/* 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_11
#define __PYX_HAVE_RT_ImportType_proto_3_0_11
#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_11(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_0_11 {
   __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
};
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
#endif

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

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

/* 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

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

/* 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

/* Print.proto */
static int __Pyx_Print(PyObject*, PyObject *, int);
#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
static PyObject* __pyx_print = 0;
static PyObject* __pyx_print_kwargs = 0;
#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_int(int value);

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

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

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

/* PrintOne.proto */
static int __Pyx_PrintOne(PyObject* stream, PyObject *o);

/* 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

/* 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 unsigned long __Pyx_get_runtime_version(void);
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);

/* 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 CYTHON_INLINE YODA::AnalysisObject *__pyx_f_4yoda_4core_14AnalysisObject_aoptr(struct __pyx_obj_4yoda_4core_AnalysisObject *__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 YODA::Dbn0D *__pyx_f_4yoda_4core_5Dbn0D_d0ptr(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto*/
static YODA::Estimate *__pyx_f_4yoda_4core_8Estimate_estptr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto*/
static YODA::Estimate0D *__pyx_f_4yoda_4core_10Estimate0D_estptr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto*/
static YODA::Point *__pyx_f_4yoda_4core_5Point_pptr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Axis<double>  *__pyx_f_4yoda_4core_4Axis_axis_d_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Axis<int>  *__pyx_f_4yoda_4core_4Axis_axis_i_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Axis<std::string>  *__pyx_f_4yoda_4core_4Axis_axis_s_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate1D<double>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate1D<int>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate1D<std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto1D<double>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto1D<int>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto1D<std::string>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<double,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<double,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<double,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<int,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<int,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<int,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto2D<std::string,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedHisto3D<double,double,double>  *__pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile1D<double>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile1D<int>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile1D<std::string>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<double,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<double,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<double,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<int,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<int,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<int,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::BinnedProfile2D<std::string,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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::Dbn2D *__pyx_f_4yoda_4core_5Dbn2D_d2ptr(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::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 YODA::Point4D *__pyx_f_4yoda_4core_7Point4D_p4ptr(struct __pyx_obj_4yoda_4core_Point4D *__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*/
static CYTHON_INLINE YODA::Scatter4D *__pyx_f_4yoda_4core_9Scatter4D_s4ptr(struct __pyx_obj_4yoda_4core_Scatter4D *__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 *>  *); /*proto*/
static PyObject *__pyx_f_4yoda_4core__aobjects_to_dict(std::vector<YODA::AnalysisObject *>  *); /*proto*/
static PyObject *__pyx_f_4yoda_4core_Bin1D(PyObject *); /*proto*/
static PyObject *__pyx_f_4yoda_4core_Bin2D(PyObject *); /*proto*/
static PyObject *__pyx_f_4yoda_4core_Bin3D(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_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_6libcpp_6string_std__in_string(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_double(std::vector<double>  const &); /*proto*/
static std::vector<double>  __pyx_convert_vector_from_py_double(PyObject *); /*proto*/
static std::vector<std::string>  __pyx_convert_vector_from_py_std_3a__3a_string(PyObject *); /*proto*/
static std::pair<double,double>  __pyx_convert_pair_from_py_double__and_double(PyObject *); /*proto*/
static PyObject *__pyx_convert_pair_to_py_double____double(std::pair<double,double>  const &); /*proto*/
static std::vector<int>  __pyx_convert_vector_from_py_int(PyObject *); /*proto*/
static std::vector<std::vector<double> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(PyObject *); /*proto*/
static std::vector<std::vector<int> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_int(std::vector<int>  const &); /*proto*/
static std::vector<std::vector<std::string> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(PyObject *); /*proto*/
static std::vector<size_t>  __pyx_convert_vector_from_py_size_t(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_size_t(std::vector<size_t>  const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(std::vector<std::vector<double> >  const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(std::vector<std::pair<double,double> >  const &); /*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_object;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_sum;
static PyObject *__pyx_builtin_AssertionError;
static PyObject *__pyx_builtin_open;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_IndexError;
/* #### Code section: string_decls ### */
static const char __pyx_k_D[] = "D";
static const char __pyx_k_N[] = "N";
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_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__2[] = "";
static const char __pyx_k__5[] = ",";
static const char __pyx_k__6[] = "<";
static const char __pyx_k__7[] = "-";
static const char __pyx_k_ao[] = "ao";
static const char __pyx_k_da[] = "da";
static const char __pyx_k_dd[] = "dd";
static const char __pyx_k_di[] = "di";
static const char __pyx_k_ds[] = "ds";
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_id[] = "id";
static const char __pyx_k_ii[] = "ii";
static const char __pyx_k_is[] = "is";
static const char __pyx_k_rb[] = "rb";
static const char __pyx_k_s1[] = "s1";
static const char __pyx_k_sW[] = "sW";
static const char __pyx_k_sd[] = "sd";
static const char __pyx_k_si[] = "si";
static const char __pyx_k_ss[] = "ss";
static const char __pyx_k_st[] = "st";
static const char __pyx_k_xs[] = "xs";
static const char __pyx_k_ys[] = "ys";
static const char __pyx_k_H1D[] = "H1D";
static const char __pyx_k_H2D[] = "H2D";
static const char __pyx_k_H3D[] = "H3D";
static const char __pyx_k_P1D[] = "P1D";
static const char __pyx_k_P2D[] = "P2D";
static const char __pyx_k_P3D[] = "P3D";
static const char __pyx_k_P4D[] = "P4D";
static const char __pyx_k_RMS[] = "RMS";
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_S4D[] = "S4D";
static const char __pyx_k__10[] = "*";
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_auc[] = "auc";
static const char __pyx_k_bin[] = "bin";
static const char __pyx_k_ddd[] = "ddd";
static const char __pyx_k_ddi[] = "ddi";
static const char __pyx_k_dds[] = "dds";
static const char __pyx_k_did[] = "did";
static const char __pyx_k_dii[] = "dii";
static const char __pyx_k_dim[] = "dim";
static const char __pyx_k_dis[] = "dis";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_dsd[] = "dsd";
static const char __pyx_k_dsi[] = "dsi";
static const char __pyx_k_dss[] = "dss";
static const char __pyx_k_end[] = "end";
static const char __pyx_k_err[] = "err";
static const char __pyx_k_idd[] = "idd";
static const char __pyx_k_idi[] = "idi";
static const char __pyx_k_ids[] = "ids";
static const char __pyx_k_idx[] = "idx";
static const char __pyx_k_iid[] = "iid";
static const char __pyx_k_iii[] = "iii";
static const char __pyx_k_iis[] = "iis";
static const char __pyx_k_isd[] = "isd";
static const char __pyx_k_isi[] = "isi";
static const char __pyx_k_iss[] = "iss";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_max[] = "max";
static const char __pyx_k_mid[] = "mid";
static const char __pyx_k_min[] = "min";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_oss[] = "oss";
static const char __pyx_k_pos[] = "pos";
static const char __pyx_k_row[] = "row";
static const char __pyx_k_rtn[] = "rtn";
static const char __pyx_k_sW2[] = "sW2";
static const char __pyx_k_s_s[] = "<%s '%s'>";
static const char __pyx_k_sdd[] = "sdd";
static const char __pyx_k_sdi[] = "sdi";
static const char __pyx_k_sds[] = "sds";
static const char __pyx_k_set[] = "set";
static const char __pyx_k_sid[] = "sid";
static const char __pyx_k_sii[] = "sii";
static const char __pyx_k_sis[] = "sis";
static const char __pyx_k_ssd[] = "ssd";
static const char __pyx_k_ssi[] = "ssi";
static const char __pyx_k_sss[] = "sss";
static const char __pyx_k_sum[] = "sum";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_tmp[] = "tmp";
static const char __pyx_k_val[] = "val";
static const char __pyx_k_vec[] = "vec";
static const char __pyx_k_vol[] = "vol";
static const char __pyx_k_Axis[] = "Axis";
static const char __pyx_k__108[] = ".";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_asum[] = "asum";
static const char __pyx_k_axes[] = "axes";
static const char __pyx_k_base[] = "base";
static const char __pyx_k_bins[] = "bins";
static const char __pyx_k_cont[] = "cont";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_dLen[] = "dLen";
static const char __pyx_k_dVol[] = "dVol";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_edge[] = "edge";
static const char __pyx_k_errW[] = "errW";
static const char __pyx_k_errm[] = "errm";
static const char __pyx_k_errp[] = "errp";
static const char __pyx_k_errs[] = "errs";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_file[] = "file";
static const char __pyx_k_fill[] = "fill";
static const char __pyx_k_find[] = "find";
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_join[] = "join";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_maxs[] = "maxs";
static const char __pyx_k_mean[] = "mean";
static const char __pyx_k_mins[] = "mins";
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_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_vals[] = "vals";
static const char __pyx_k_xErr[] = "xErr";
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_xVal[] = "xVal";
static const char __pyx_k_xmax[] = "xmax";
static const char __pyx_k_xmin[] = "xmin";
static const char __pyx_k_yErr[] = "yErr";
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_yVal[] = "yVal";
static const char __pyx_k_yoda[] = "yoda";
static const char __pyx_k_zErr[] = "zErr";
static const char __pyx_k_zMax[] = "zMax";
static const char __pyx_k_zMid[] = "zMid";
static const char __pyx_k_zMin[] = "zMin";
static const char __pyx_k_zRMS[] = "zRMS";
static const char __pyx_k_zVal[] = "zVal";
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_Point[] = "Point";
static const char __pyx_k__1405[] = "?";
static const char __pyx_k_areas[] = "areas";
static const char __pyx_k_array[] = "array";
static const char __pyx_k_begin[] = "begin";
static const char __pyx_k_binAt[] = "binAt";
static const char __pyx_k_bin_2[] = "_bin";
static const char __pyx_k_cdata[] = "cdata";
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_d2ptr[] = "d2ptr";
static const char __pyx_k_dArea[] = "dArea";
static const char __pyx_k_edges[] = "edges";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_errUp[] = "errUp";
static const char __pyx_k_index[] = "index";
static const char __pyx_k_init1[] = "__init1";
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_istxt[] = "_istxt";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_lower[] = "lower";
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_point[] = "point";
static const char __pyx_k_print[] = "print";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_reset[] = "reset";
static const char __pyx_k_scale[] = "scale";
static const char __pyx_k_split[] = "split";
static const char __pyx_k_stdin[] = "stdin";
static const char __pyx_k_sumW2[] = "sumW2";
static const char __pyx_k_sumWA[] = "sumWA";
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_super[] = "super";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_title[] = "title";
static const char __pyx_k_utf_8[] = "utf-8";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_width[] = "width";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_xEdge[] = "xEdge";
static const char __pyx_k_xErrs[] = "xErrs";
static const char __pyx_k_xMaxs[] = "xMaxs";
static const char __pyx_k_xMean[] = "xMean";
static const char __pyx_k_xMins[] = "xMins";
static const char __pyx_k_xVals[] = "xVals";
static const char __pyx_k_yEdge[] = "yEdge";
static const char __pyx_k_yErrs[] = "yErrs";
static const char __pyx_k_yMaxs[] = "yMaxs";
static const char __pyx_k_yMean[] = "yMean";
static const char __pyx_k_yMins[] = "yMins";
static const char __pyx_k_yVals[] = "yVals";
static const char __pyx_k_zEdge[] = "zEdge";
static const char __pyx_k_zErrs[] = "zErrs";
static const char __pyx_k_zMaxs[] = "zMaxs";
static const char __pyx_k_zMean[] = "zMean";
static const char __pyx_k_zMins[] = "zMins";
static const char __pyx_k_zVals[] = "zVals";
static const char __pyx_k_Axis_s[] = "<Axis[%s]>";
static const char __pyx_k_Binned[] = "Binned";
static const char __pyx_k_aolist[] = "aolist";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_asdict[] = "asdict";
static const char __pyx_k_attach[] = "attach";
static const char __pyx_k_binDim[] = "binDim";
static const char __pyx_k_buffer[] = "buffer";
static const char __pyx_k_config[] = "config";
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_errEnv[] = "errEnv";
static const char __pyx_k_errNeg[] = "errNeg";
static const char __pyx_k_errPos[] = "errPos";
static const char __pyx_k_errsdn[] = "errsdn";
static const char __pyx_k_errsup[] = "errsup";
static const char __pyx_k_estptr[] = "estptr";
static const char __pyx_k_factor[] = "factor";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_init_1[] = "__init_1";
static const char __pyx_k_init_2[] = "__init_2";
static const char __pyx_k_kwargs[] = "kwargs";
static const char __pyx_k_lowerX[] = "lowerX";
static const char __pyx_k_lowerY[] = "lowerY";
static const char __pyx_k_lowerZ[] = "lowerZ";
static const char __pyx_k_masked[] = "_masked";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_name_2[] = "name";
static const char __pyx_k_nbinsX[] = "nbinsX";
static const char __pyx_k_nbinsY[] = "nbinsY";
static const char __pyx_k_nbinsZ[] = "nbinsZ";
static const char __pyx_k_normto[] = "normto";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_others[] = "others";
static const char __pyx_k_points[] = "points";
static const char __pyx_k_rebinX[] = "rebinX";
static const char __pyx_k_rebinY[] = "rebinY";
static const char __pyx_k_rebinZ[] = "rebinZ";
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_rmErrs[] = "rmErrs";
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_setErr[] = "setErr";
static const char __pyx_k_setVal[] = "setVal";
static const char __pyx_k_source[] = "source";
static const char __pyx_k_status[] = "status";
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_sumWA2[] = "sumWA2";
static const char __pyx_k_sumWX2[] = "sumWX2";
static const char __pyx_k_sumWY2[] = "sumWY2";
static const char __pyx_k_sumWZ2[] = "sumWZ2";
static const char __pyx_k_upperX[] = "upperX";
static const char __pyx_k_upperY[] = "upperY";
static const char __pyx_k_upperZ[] = "upperZ";
static const char __pyx_k_valMax[] = "valMax";
static const char __pyx_k_valMin[] = "valMin";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_weight[] = "weight";
static const char __pyx_k_xEdges[] = "xEdges";
static const char __pyx_k_xErrDn[] = "xErrDn";
static const char __pyx_k_xErrUp[] = "xErrUp";
static const char __pyx_k_xWidth[] = "xWidth";
static const char __pyx_k_xedges[] = "xedges";
static const char __pyx_k_yEdges[] = "yEdges";
static const char __pyx_k_yErrDn[] = "yErrDn";
static const char __pyx_k_yErrUp[] = "yErrUp";
static const char __pyx_k_yWidth[] = "yWidth";
static const char __pyx_k_zEdges[] = "zEdges";
static const char __pyx_k_zErrDn[] = "zErrDn";
static const char __pyx_k_zErrUp[] = "zErrUp";
static const char __pyx_k_zWidth[] = "zWidth";
static const char __pyx_k_Binning[] = "Binning";
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_Histo3D[] = "Histo3D";
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_Point4D[] = "Point4D";
static const char __pyx_k_autostr[] = "_autostr";
static const char __pyx_k_binning[] = "_binning";
static const char __pyx_k_cpptype[] = "cpptype";
static const char __pyx_k_default[] = "default";
static const char __pyx_k_density[] = "density";
static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_edgesA1[] = "edgesA1";
static const char __pyx_k_edgesA2[] = "edgesA2";
static const char __pyx_k_edgesA3[] = "edgesA3";
static const char __pyx_k_edges_d[] = "edges_d";
static const char __pyx_k_edges_i[] = "edges_i";
static const char __pyx_k_edges_s[] = "edges_s";
static const char __pyx_k_errAvgs[] = "errAvgs";
static const char __pyx_k_errDown[] = "errDown";
static const char __pyx_k_errors1[] = "errors1";
static const char __pyx_k_errors2[] = "errors2";
static const char __pyx_k_fillDim[] = "fillDim";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_indexAt[] = "indexAt";
static const char __pyx_k_index_2[] = "_index";
static const char __pyx_k_indices[] = "_indices";
static const char __pyx_k_maskBin[] = "maskBin";
static const char __pyx_k_maxsize[] = "maxsize";
static const char __pyx_k_mkHisto[] = "mkHisto";
static const char __pyx_k_nsample[] = "nsample";
static const char __pyx_k_numBins[] = "numBins";
static const char __pyx_k_numErrs[] = "numErrs";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_quadSum[] = "quadSum";
static const char __pyx_k_relErrW[] = "relErrW";
static const char __pyx_k_rmPoint[] = "rmPoint";
static const char __pyx_k_sWcross[] = "sWcross";
static const char __pyx_k_sample1[] = "sample1";
static const char __pyx_k_sample2[] = "sample2";
static const char __pyx_k_setErrs[] = "setErrs";
static const char __pyx_k_setPath[] = "setPath";
static const char __pyx_k_sources[] = "sources";
static const char __pyx_k_version[] = "version";
static const char __pyx_k_weights[] = "weights";
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_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_zErrAvg[] = "zErrAvg";
static const char __pyx_k_zStdDev[] = "zStdDev";
static const char __pyx_k_zStdErr[] = "zStdErr";
static const char __pyx_k_zWidths[] = "zWidths";
static const char __pyx_k_Axis_max[] = "Axis.max";
static const char __pyx_k_Axis_mid[] = "Axis.mid";
static const char __pyx_k_Axis_min[] = "Axis.min";
static const char __pyx_k_Estimate[] = "Estimate";
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_binIndex[] = "binIndex";
static const char __pyx_k_binedges[] = "binedges";
static const char __pyx_k_core_pyx[] = "core.pyx";
static const char __pyx_k_divbyvol[] = "divbyvol";
static const char __pyx_k_divideBy[] = "divideBy";
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_indexArr[] = "indexArr";
static const char __pyx_k_integral[] = "integral";
static const char __pyx_k_isMasked[] = "isMasked";
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_mapTypes[] = "_mapTypes";
static const char __pyx_k_maskBins[] = "maskBins";
static const char __pyx_k_numBinsX[] = "numBinsX";
static const char __pyx_k_numBinsY[] = "numBinsY";
static const char __pyx_k_numBinsZ[] = "numBinsZ";
static const char __pyx_k_operator[] = "operator";
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_readFLAT[] = "readFLAT";
static const char __pyx_k_readYODA[] = "readYODA";
static const char __pyx_k_rebinXBy[] = "rebinXBy";
static const char __pyx_k_rebinXTo[] = "rebinXTo";
static const char __pyx_k_rebinYBy[] = "rebinYBy";
static const char __pyx_k_rebinYTo[] = "rebinYTo";
static const char __pyx_k_rebinZBy[] = "rebinZBy";
static const char __pyx_k_rebinZTo[] = "rebinZTo";
static const char __pyx_k_relErrUp[] = "relErrUp";
static const char __pyx_k_rmPoints[] = "rmPoints";
static const char __pyx_k_rmSource[] = "rmSource";
static const char __pyx_k_scaleErr[] = "scaleErr";
static const char __pyx_k_scaleVal[] = "scaleVal";
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_skipPath[] = "skipPath";
static const char __pyx_k_totalErr[] = "totalErr";
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_xErrPlus[] = "xErrPlus";
static const char __pyx_k_yErrAvgs[] = "yErrAvgs";
static const char __pyx_k_yErrPlus[] = "yErrPlus";
static const char __pyx_k_zErrAvgs[] = "zErrAvgs";
static const char __pyx_k_zErrPlus[] = "zErrPlus";
static const char __pyx_k_Axis_edge[] = "Axis.edge";
static const char __pyx_k_Axis_type[] = "Axis.type";
static const char __pyx_k_Dbn0D_set[] = "Dbn0D.set";
static const char __pyx_k_Dbn1D_RMS[] = "Dbn1D.RMS";
static const char __pyx_k_Dbn1D_set[] = "Dbn1D.set";
static const char __pyx_k_Dbn2D_RMS[] = "Dbn2D.RMS";
static const char __pyx_k_Dbn2D_set[] = "Dbn2D.set";
static const char __pyx_k_Dbn3D_RMS[] = "Dbn3D.RMS";
static const char __pyx_k_Dbn3D_set[] = "Dbn3D.set";
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_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_Scatter4D[] = "Scatter4D";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_addPoints[] = "addPoints";
static const char __pyx_k_binning_2[] = "binning";
static const char __pyx_k_crossTerm[] = "crossTerm";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_errDownUp[] = "errDownUp";
static const char __pyx_k_errNegPos[] = "errNegPos";
static const char __pyx_k_hasSource[] = "hasSource";
static const char __pyx_k_indices_2[] = "indices";
static const char __pyx_k_isVisible[] = "isVisible";
static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_itertools[] = "itertools";
static const char __pyx_k_local_set[] = "_local_set";
static const char __pyx_k_maskBinAt[] = "maskBinAt";
static const char __pyx_k_maskSlice[] = "maskSlice";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_mkScatter[] = "mkScatter";
static const char __pyx_k_naiveChi2[] = "naiveChi2";
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_pat_match[] = "pat_match";
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_relErrAvg[] = "relErrAvg";
static const char __pyx_k_relErrEnv[] = "relErrEnv";
static const char __pyx_k_resetPath[] = "resetPath";
static const char __pyx_k_skipTitle[] = "skipTitle";
static const char __pyx_k_sumWcross[] = "sumWcross";
static const char __pyx_k_writeFLAT[] = "writeFLAT";
static const char __pyx_k_writeYODA[] = "writeYODA";
static const char __pyx_k_xErrMinus[] = "xErrMinus";
static const char __pyx_k_xVariance[] = "xVariance";
static const char __pyx_k_yErrMinus[] = "yErrMinus";
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_zErrMinus[] = "zErrMinus";
static const char __pyx_k_zVariance[] = "zVariance";
static const char __pyx_k_Axis_index[] = "Axis.index";
static const char __pyx_k_Axis_width[] = "Axis.width";
static const char __pyx_k_BinWrapper[] = "BinWrapper";
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_mean[] = "Dbn1D.mean";
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_Dbn2D_xRMS[] = "Dbn2D.xRMS";
static const char __pyx_k_Dbn2D_yRMS[] = "Dbn2D.yRMS";
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_Dbn3D_xRMS[] = "Dbn3D.xRMS";
static const char __pyx_k_Dbn3D_yRMS[] = "Dbn3D.yRMS";
static const char __pyx_k_Dbn3D_zRMS[] = "Dbn3D.zRMS";
static const char __pyx_k_Estimate0D[] = "Estimate0D";
static const char __pyx_k_Estimate1D[] = "Estimate1D";
static const char __pyx_k_Estimate2D[] = "Estimate2D";
static const char __pyx_k_Estimate3D[] = "Estimate3D";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_annotation[] = "annotation";
static const char __pyx_k_attrgetter[] = "attrgetter";
static const char __pyx_k_axisConfig[] = "axisConfig";
static const char __pyx_k_covariance[] = "covariance";
static const char __pyx_k_densitySum[] = "densitySum";
static const char __pyx_k_efficiency[] = "efficiency";
static const char __pyx_k_getLibPath[] = "getLibPath";
static const char __pyx_k_global_set[] = "_global_set";
static const char __pyx_k_index_list[] = "index_list";
static const char __pyx_k_lengthMeta[] = "lengthMeta";
static const char __pyx_k_maskedBins[] = "maskedBins";
static const char __pyx_k_maxDensity[] = "maxDensity";
static const char __pyx_k_mkEstimate[] = "mkEstimate";
static const char __pyx_k_mktxtifstr[] = "_mktxtifstr";
static const char __pyx_k_numEntries[] = "numEntries";
static const char __pyx_k_pat_uncorr[] = "pat_uncorr";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_quadSumAvg[] = "quadSumAvg";
static const char __pyx_k_quadSumEnv[] = "quadSumEnv";
static const char __pyx_k_quadSumNeg[] = "quadSumNeg";
static const char __pyx_k_quadSumPos[] = "quadSumPos";
static const char __pyx_k_relErrDown[] = "relErrDown";
static const char __pyx_k_resetTitle[] = "resetTitle";
static const char __pyx_k_setBinning[] = "setBinning";
static const char __pyx_k_setErrPlus[] = "setErrPlus";
static const char __pyx_k_setIndices[] = "setIndices";
static const char __pyx_k_set_config[] = "_set_config";
static const char __pyx_k_stat_uncor[] = "^stat|^uncor";
static const char __pyx_k_unpatterns[] = "unpatterns";
static const char __pyx_k_writeYODA1[] = "writeYODA1";
static const char __pyx_k_Axis__init1[] = "_Axis__init1";
static const char __pyx_k_Axis__init2[] = "_Axis__init2";
static const char __pyx_k_Binning_max[] = "Binning.max";
static const char __pyx_k_Binning_mid[] = "Binning.mid";
static const char __pyx_k_Binning_min[] = "Binning.min";
static const char __pyx_k_Counter_err[] = "Counter.err";
static const char __pyx_k_Counter_set[] = "Counter.set";
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_scale[] = "Dbn1D.scale";
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_scale[] = "Dbn2D.scale";
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_Dbn2D_xMean[] = "Dbn2D.xMean";
static const char __pyx_k_Dbn2D_yMean[] = "Dbn2D.yMean";
static const char __pyx_k_Dbn3D_reset[] = "Dbn3D.reset";
static const char __pyx_k_Dbn3D_scale[] = "Dbn3D.scale";
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_Dbn3D_xMean[] = "Dbn3D.xMean";
static const char __pyx_k_Dbn3D_yMean[] = "Dbn3D.yMean";
static const char __pyx_k_Dbn3D_zMean[] = "Dbn3D.zMean";
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_max[] = "Point1D.max";
static const char __pyx_k_Point1D_min[] = "Point1D.min";
static const char __pyx_k_Point1D_val[] = "Point1D.val";
static const char __pyx_k_Point2D_max[] = "Point2D.max";
static const char __pyx_k_Point2D_min[] = "Point2D.min";
static const char __pyx_k_Point2D_val[] = "Point2D.val";
static const char __pyx_k_Point3D_max[] = "Point3D.max";
static const char __pyx_k_Point3D_min[] = "Point3D.min";
static const char __pyx_k_Point3D_val[] = "Point3D.val";
static const char __pyx_k_Point4D_max[] = "Point4D.max";
static const char __pyx_k_Point4D_min[] = "Point4D.min";
static const char __pyx_k_Point4D_val[] = "Point4D.val";
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_mro_entries[] = "__mro_entries__";
static const char __pyx_k_relTotalErr[] = "relTotalErr";
static const char __pyx_k_setErrMinus[] = "setErrMinus";
static const char __pyx_k_str_to_file[] = "_str_to_file";
static const char __pyx_k_totalErrAvg[] = "totalErrAvg";
static const char __pyx_k_totalErrEnv[] = "totalErrEnv";
static const char __pyx_k_totalErrNeg[] = "totalErrNeg";
static const char __pyx_k_totalErrPos[] = "totalErrPos";
static const char __pyx_k_Axis___init1[] = "Axis.__init1";
static const char __pyx_k_Axis___init2[] = "Axis.__init2";
static const char __pyx_k_Axis_numBins[] = "Axis.numBins";
static const char __pyx_k_Binning_edge[] = "Binning.edge";
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_stdDev[] = "Dbn1D.stdDev";
static const char __pyx_k_Dbn1D_stdErr[] = "Dbn1D.stdErr";
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_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_sumWY2[] = "Dbn3D.sumWY2";
static const char __pyx_k_Dbn3D_sumWZ2[] = "Dbn3D.sumWZ2";
static const char __pyx_k_Estimate_err[] = "Estimate.err";
static const char __pyx_k_Estimate_set[] = "Estimate.set";
static const char __pyx_k_Estimate_val[] = "Estimate.val";
static const char __pyx_k_Point1D_copy[] = "Point1D.copy";
static const char __pyx_k_Point1D_errs[] = "Point1D.errs";
static const char __pyx_k_Point1D_setX[] = "Point1D.setX";
static const char __pyx_k_Point1D_v1_g[] = "<Point1D(v1=%g)>";
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_errs[] = "Point2D.errs";
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_errs[] = "Point3D.errs";
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_Point4D_copy[] = "Point4D.copy";
static const char __pyx_k_Point4D_errs[] = "Point4D.errs";
static const char __pyx_k_Point_setErr[] = "Point.setErr";
static const char __pyx_k_Point_setVal[] = "Point.setVal";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_densityError[] = "densityError";
static const char __pyx_k_fixed_length[] = "fixed_length";
static const char __pyx_k_initializing[] = "_initializing";
static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_localIndices[] = "localIndices";
static const char __pyx_k_relErrDownUp[] = "relErrDownUp";
static const char __pyx_k_rmAnnotation[] = "rmAnnotation";
static const char __pyx_k_s_s_d_points[] = "<%s '%s' %d points>";
static const char __pyx_k_s_s_s_d_bins[] = "<%s[%s] '%s' %d bins>";
static const char __pyx_k_stringsource[] = "<stringsource>";
static const char __pyx_k_version_info[] = "version_info";
static const char __pyx_k_BinnedHisto1D[] = "BinnedHisto1D";
static const char __pyx_k_BinnedHisto2D[] = "BinnedHisto2D";
static const char __pyx_k_BinnedHisto3D[] = "BinnedHisto3D";
static const char __pyx_k_Binning_width[] = "Binning.width";
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_xStdDev[] = "Dbn2D.xStdDev";
static const char __pyx_k_Dbn2D_xStdErr[] = "Dbn2D.xStdErr";
static const char __pyx_k_Dbn2D_yStdDev[] = "Dbn2D.yStdDev";
static const char __pyx_k_Dbn2D_yStdErr[] = "Dbn2D.yStdErr";
static const char __pyx_k_Dbn3D_relErrW[] = "Dbn3D.relErrW";
static const char __pyx_k_Dbn3D_xStdDev[] = "Dbn3D.xStdDev";
static const char __pyx_k_Dbn3D_xStdErr[] = "Dbn3D.xStdErr";
static const char __pyx_k_Dbn3D_yStdDev[] = "Dbn3D.yStdDev";
static const char __pyx_k_Dbn3D_yStdErr[] = "Dbn3D.yStdErr";
static const char __pyx_k_Dbn3D_zStdDev[] = "Dbn3D.zStdDev";
static const char __pyx_k_Dbn3D_zStdErr[] = "Dbn3D.zStdErr";
static const char __pyx_k_Estimate_copy[] = "Estimate.copy";
static const char __pyx_k_Point1D_xErrs[] = "Point1D.xErrs";
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_setErrs[] = "Point.setErrs";
static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_effNumEntries[] = "effNumEntries";
static const char __pyx_k_hasAnnotation[] = "hasAnnotation";
static const char __pyx_k_includeBinVol[] = "includeBinVol";
static const char __pyx_k_index_between[] = "index_between";
static const char __pyx_k_init_subclass[] = "__init_subclass__";
static const char __pyx_k_integralError[] = "integralError";
static const char __pyx_k_lengthContent[] = "lengthContent";
static const char __pyx_k_prep_patterns[] = "_prep_patterns";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_serializeMeta[] = "serializeMeta";
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_Binning___init[] = "Binning.__init__";
static const char __pyx_k_Binning_config[] = "Binning.config";
static const char __pyx_k_Counter_relErr[] = "Counter.relErr";
static const char __pyx_k_Counter_scaleW[] = "Counter.scaleW";
static const char __pyx_k_Dbn1D_variance[] = "Dbn1D.variance";
static const char __pyx_k_Dbn2D_variance[] = "Dbn2D.variance";
static const char __pyx_k_Dbn3D_variance[] = "Dbn3D.variance";
static const char __pyx_k_Estimate0D_err[] = "Estimate0D.err";
static const char __pyx_k_Estimate0D_set[] = "Estimate0D.set";
static const char __pyx_k_Estimate0D_val[] = "Estimate0D.val";
static const char __pyx_k_Estimate_errUp[] = "Estimate.errUp";
static const char __pyx_k_Estimate_reset[] = "Estimate.reset";
static const char __pyx_k_Estimate_scale[] = "Estimate.scale";
static const char __pyx_k_Point1D__init1[] = "_Point1D__init1";
static const char __pyx_k_Point1D__init2[] = "_Point1D__init2";
static const char __pyx_k_Point1D__init3[] = "_Point1D__init3";
static const char __pyx_k_Point1D__init4[] = "_Point1D__init4";
static const char __pyx_k_Point1D_scaleX[] = "Point1D.scaleX";
static const char __pyx_k_Point2D__init1[] = "_Point2D__init1";
static const char __pyx_k_Point2D__init2[] = "_Point2D__init2";
static const char __pyx_k_Point2D__init3[] = "_Point2D__init3";
static const char __pyx_k_Point2D__init4[] = "_Point2D__init4";
static const char __pyx_k_Point2D_scaleX[] = "Point2D.scaleX";
static const char __pyx_k_Point2D_scaleY[] = "Point2D.scaleY";
static const char __pyx_k_Point3D__init1[] = "_Point3D__init1";
static const char __pyx_k_Point3D__init2[] = "_Point3D__init2";
static const char __pyx_k_Point3D__init3[] = "_Point3D__init3";
static const char __pyx_k_Point3D__init4[] = "_Point3D__init4";
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_Point4D__init1[] = "_Point4D__init1";
static const char __pyx_k_Point4D__init2[] = "_Point4D__init2";
static const char __pyx_k_Scatter1D_errs[] = "Scatter1D.errs";
static const char __pyx_k_Scatter1D_maxs[] = "Scatter1D.maxs";
static const char __pyx_k_Scatter1D_mins[] = "Scatter1D.mins";
static const char __pyx_k_Scatter1D_vals[] = "Scatter1D.vals";
static const char __pyx_k_Scatter1D_xMax[] = "Scatter1D.xMax";
static const char __pyx_k_Scatter1D_xMin[] = "Scatter1D.xMin";
static const char __pyx_k_Scatter2D_errs[] = "Scatter2D.errs";
static const char __pyx_k_Scatter2D_maxs[] = "Scatter2D.maxs";
static const char __pyx_k_Scatter2D_mins[] = "Scatter2D.mins";
static const char __pyx_k_Scatter2D_vals[] = "Scatter2D.vals";
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_errs[] = "Scatter3D.errs";
static const char __pyx_k_Scatter3D_maxs[] = "Scatter3D.maxs";
static const char __pyx_k_Scatter3D_mins[] = "Scatter3D.mins";
static const char __pyx_k_Scatter3D_vals[] = "Scatter3D.vals";
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_Scatter4D_errs[] = "Scatter4D.errs";
static const char __pyx_k_Scatter4D_maxs[] = "Scatter4D.maxs";
static const char __pyx_k_Scatter4D_mins[] = "Scatter4D.mins";
static const char __pyx_k_Scatter4D_vals[] = "Scatter4D.vals";
static const char __pyx_k_addPoint_point[] = "__addPoint_point";
static const char __pyx_k_areaUnderCurve[] = "areaUnderCurve";
static const char __pyx_k_include_IO_pyx[] = "include/IO.pyx";
static const char __pyx_k_read_symmetric[] = "read_symmetric";
static const char __pyx_k_relTotalErrAvg[] = "relTotalErrAvg";
static const char __pyx_k_relTotalErrEnv[] = "relTotalErrEnv";
static const char __pyx_k_relTotalErrNeg[] = "relTotalErrNeg";
static const char __pyx_k_relTotalErrPos[] = "relTotalErrPos";
static const char __pyx_k_BinnedProfile1D[] = "BinnedProfile1D";
static const char __pyx_k_BinnedProfile2D[] = "BinnedProfile2D";
static const char __pyx_k_Dbn1D_xVariance[] = "Dbn1D.xVariance";
static const char __pyx_k_Dbn2D_crossTerm[] = "Dbn2D.crossTerm";
static const char __pyx_k_Dbn2D_xVariance[] = "Dbn2D.xVariance";
static const char __pyx_k_Dbn2D_yVariance[] = "Dbn2D.yVariance";
static const char __pyx_k_Dbn3D_crossTerm[] = "Dbn3D.crossTerm";
static const char __pyx_k_Dbn3D_xVariance[] = "Dbn3D.xVariance";
static const char __pyx_k_Dbn3D_yVariance[] = "Dbn3D.yVariance";
static const char __pyx_k_Dbn3D_zVariance[] = "Dbn3D.zVariance";
static const char __pyx_k_Estimate_errAvg[] = "Estimate.errAvg";
static const char __pyx_k_Estimate_errEnv[] = "Estimate.errEnv";
static const char __pyx_k_Estimate_errNeg[] = "Estimate.errNeg";
static const char __pyx_k_Estimate_errPos[] = "Estimate.errPos";
static const char __pyx_k_Estimate_relErr[] = "Estimate.relErr";
static const char __pyx_k_Estimate_rmErrs[] = "Estimate.rmErrs";
static const char __pyx_k_Estimate_setErr[] = "Estimate.setErr";
static const char __pyx_k_Estimate_setVal[] = "Estimate.setVal";
static const char __pyx_k_Estimate_valMax[] = "Estimate.valMax";
static const char __pyx_k_Estimate_valMin[] = "Estimate.valMin";
static const char __pyx_k_Point1D___init1[] = "Point1D.__init1";
static const char __pyx_k_Point1D___init2[] = "Point1D.__init2";
static const char __pyx_k_Point1D___init3[] = "Point1D.__init3";
static const char __pyx_k_Point1D___init4[] = "Point1D.__init4";
static const char __pyx_k_Point1D_xErrAvg[] = "Point1D.xErrAvg";
static const char __pyx_k_Point2D___init1[] = "Point2D.__init1";
static const char __pyx_k_Point2D___init2[] = "Point2D.__init2";
static const char __pyx_k_Point2D___init3[] = "Point2D.__init3";
static const char __pyx_k_Point2D___init4[] = "Point2D.__init4";
static const char __pyx_k_Point2D_xErrAvg[] = "Point2D.xErrAvg";
static const char __pyx_k_Point2D_yErrAvg[] = "Point2D.yErrAvg";
static const char __pyx_k_Point3D___init1[] = "Point3D.__init1";
static const char __pyx_k_Point3D___init2[] = "Point3D.__init2";
static const char __pyx_k_Point3D___init3[] = "Point3D.__init3";
static const char __pyx_k_Point3D___init4[] = "Point3D.__init4";
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_Point4D___init1[] = "Point4D.__init1";
static const char __pyx_k_Point4D___init2[] = "Point4D.__init2";
static const char __pyx_k_Scatter1D__mknp[] = "Scatter1D._mknp";
static const char __pyx_k_Scatter1D_clone[] = "Scatter1D.clone";
static const char __pyx_k_Scatter1D_edges[] = "Scatter1D.edges";
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_xErrs[] = "Scatter1D.xErrs";
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_edges[] = "Scatter2D.edges";
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_edges[] = "Scatter3D.edges";
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_Scatter4D__mknp[] = "Scatter4D._mknp";
static const char __pyx_k_Scatter4D_clone[] = "Scatter4D.clone";
static const char __pyx_k_Scatter4D_edges[] = "Scatter4D.edges";
static const char __pyx_k_Scatter4D_point[] = "Scatter4D.point";
static const char __pyx_k_Scatter4D_reset[] = "Scatter4D.reset";
static const char __pyx_k_Scatter4D_scale[] = "Scatter4D.scale";
static const char __pyx_k_annotationsDict[] = "annotationsDict";
static const char __pyx_k_deserializeMeta[] = "deserializeMeta";
static const char __pyx_k_getYodaDataPath[] = "getYodaDataPath";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_BinnedEstimate1D[] = "BinnedEstimate1D";
static const char __pyx_k_BinnedEstimate2D[] = "BinnedEstimate2D";
static const char __pyx_k_BinnedEstimate3D[] = "BinnedEstimate3D";
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_Estimate0D_clone[] = "Estimate0D.clone";
static const char __pyx_k_Estimate0D_errUp[] = "Estimate0D.errUp";
static const char __pyx_k_Estimate0D_reset[] = "Estimate0D.reset";
static const char __pyx_k_Estimate0D_scale[] = "Estimate0D.scale";
static const char __pyx_k_Estimate_errDown[] = "Estimate.errDown";
static const char __pyx_k_Estimate_numErrs[] = "Estimate.numErrs";
static const char __pyx_k_Estimate_quadSum[] = "Estimate.quadSum";
static const char __pyx_k_Estimate_sources[] = "Estimate.sources";
static const char __pyx_k_Point1D_setXErrs[] = "Point1D.setXErrs";
static const char __pyx_k_Point1D_xErrPlus[] = "Point1D.xErrPlus";
static const char __pyx_k_Point2D_setXErrs[] = "Point2D.setXErrs";
static const char __pyx_k_Point2D_setYErrs[] = "Point2D.setYErrs";
static const char __pyx_k_Point2D_xErrPlus[] = "Point2D.xErrPlus";
static const char __pyx_k_Point2D_yErrPlus[] = "Point2D.yErrPlus";
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_Point3D_xErrPlus[] = "Point3D.xErrPlus";
static const char __pyx_k_Point3D_yErrPlus[] = "Point3D.yErrPlus";
static const char __pyx_k_Point3D_zErrPlus[] = "Point3D.zErrPlus";
static const char __pyx_k_Point_setErrPlus[] = "Point.setErrPlus";
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_Scatter4D_points[] = "Scatter4D.points";
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_naiveChi2reduced[] = "naiveChi2reduced";
static const char __pyx_k_serializeContent[] = "serializeContent";
static const char __pyx_k_serializeSources[] = "serializeSources";
static const char __pyx_k_BinnedHisto1D_bin[] = "BinnedHisto1D.bin";
static const char __pyx_k_BinnedHisto1D_set[] = "BinnedHisto1D.set";
static const char __pyx_k_BinnedHisto2D_bin[] = "BinnedHisto2D.bin";
static const char __pyx_k_BinnedHisto2D_set[] = "BinnedHisto2D.set";
static const char __pyx_k_BinnedHisto3D_bin[] = "BinnedHisto3D.bin";
static const char __pyx_k_BinnedHisto3D_set[] = "BinnedHisto3D.set";
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_Estimate0D_errNeg[] = "Estimate0D.errNeg";
static const char __pyx_k_Estimate0D_errPos[] = "Estimate0D.errPos";
static const char __pyx_k_Estimate0D_relErr[] = "Estimate0D.relErr";
static const char __pyx_k_Estimate0D_rmErrs[] = "Estimate0D.rmErrs";
static const char __pyx_k_Estimate0D_setErr[] = "Estimate0D.setErr";
static const char __pyx_k_Estimate0D_setVal[] = "Estimate0D.setVal";
static const char __pyx_k_Estimate_relErrUp[] = "Estimate.relErrUp";
static const char __pyx_k_Estimate_rmSource[] = "Estimate.rmSource";
static const char __pyx_k_Estimate_totalErr[] = "Estimate.totalErr";
static const char __pyx_k_Estimate_value_2e[] = "<Estimate(value=%.2e)>";
static const char __pyx_k_Point1D_xErrMinus[] = "Point1D.xErrMinus";
static const char __pyx_k_Point2D_v1_g_v2_g[] = "<Point2D(v1=%g, v2=%g)>";
static const char __pyx_k_Point2D_xErrMinus[] = "Point2D.xErrMinus";
static const char __pyx_k_Point2D_yErrMinus[] = "Point2D.yErrMinus";
static const char __pyx_k_Point3D_xErrMinus[] = "Point3D.xErrMinus";
static const char __pyx_k_Point3D_yErrMinus[] = "Point3D.yErrMinus";
static const char __pyx_k_Point3D_zErrMinus[] = "Point3D.zErrMinus";
static const char __pyx_k_Point_setErrMinus[] = "Point.setErrMinus";
static const char __pyx_k_Scatter1D__init_1[] = "_Scatter1D__init_1";
static const char __pyx_k_Scatter1D__init_2[] = "_Scatter1D__init_2";
static const char __pyx_k_Scatter1D_errAvgs[] = "Scatter1D.errAvgs";
static const char __pyx_k_Scatter1D_rmPoint[] = "Scatter1D.rmPoint";
static const char __pyx_k_Scatter2D__init_1[] = "_Scatter2D__init_1";
static const char __pyx_k_Scatter2D__init_2[] = "_Scatter2D__init_2";
static const char __pyx_k_Scatter2D_errAvgs[] = "Scatter2D.errAvgs";
static const char __pyx_k_Scatter2D_rmPoint[] = "Scatter2D.rmPoint";
static const char __pyx_k_Scatter3D__init_1[] = "_Scatter3D__init_1";
static const char __pyx_k_Scatter3D__init_2[] = "_Scatter3D__init_2";
static const char __pyx_k_Scatter3D_errAvgs[] = "Scatter3D.errAvgs";
static const char __pyx_k_Scatter3D_rmPoint[] = "Scatter3D.rmPoint";
static const char __pyx_k_Scatter4D__init_1[] = "_Scatter4D__init_1";
static const char __pyx_k_Scatter4D__init_2[] = "_Scatter4D__init_2";
static const char __pyx_k_Scatter4D_errAvgs[] = "Scatter4D.errAvgs";
static const char __pyx_k_Scatter4D_rmPoint[] = "Scatter4D.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_includeMaskedBins[] = "includeMaskedBins";
static const char __pyx_k_include_Dbn0D_pyx[] = "include/Dbn0D.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_BinnedHisto1D__bin[] = "BinnedHisto1D._bin";
static const char __pyx_k_BinnedHisto1D_bins[] = "BinnedHisto1D.bins";
static const char __pyx_k_BinnedHisto1D_dVol[] = "BinnedHisto1D.dVol";
static const char __pyx_k_BinnedHisto1D_fill[] = "BinnedHisto1D.fill";
static const char __pyx_k_BinnedHisto1D_sumW[] = "BinnedHisto1D.sumW";
static const char __pyx_k_BinnedHisto1D_xMax[] = "BinnedHisto1D.xMax";
static const char __pyx_k_BinnedHisto1D_xMin[] = "BinnedHisto1D.xMin";
static const char __pyx_k_BinnedHisto1D_xRMS[] = "BinnedHisto1D.xRMS";
static const char __pyx_k_BinnedHisto2D__bin[] = "BinnedHisto2D._bin";
static const char __pyx_k_BinnedHisto2D_bins[] = "BinnedHisto2D.bins";
static const char __pyx_k_BinnedHisto2D_dVol[] = "BinnedHisto2D.dVol";
static const char __pyx_k_BinnedHisto2D_fill[] = "BinnedHisto2D.fill";
static const char __pyx_k_BinnedHisto2D_sumW[] = "BinnedHisto2D.sumW";
static const char __pyx_k_BinnedHisto2D_xMax[] = "BinnedHisto2D.xMax";
static const char __pyx_k_BinnedHisto2D_xMin[] = "BinnedHisto2D.xMin";
static const char __pyx_k_BinnedHisto2D_xRMS[] = "BinnedHisto2D.xRMS";
static const char __pyx_k_BinnedHisto2D_yMax[] = "BinnedHisto2D.yMax";
static const char __pyx_k_BinnedHisto2D_yMin[] = "BinnedHisto2D.yMin";
static const char __pyx_k_BinnedHisto2D_yRMS[] = "BinnedHisto2D.yRMS";
static const char __pyx_k_BinnedHisto3D__bin[] = "BinnedHisto3D._bin";
static const char __pyx_k_BinnedHisto3D_bins[] = "BinnedHisto3D.bins";
static const char __pyx_k_BinnedHisto3D_dVol[] = "BinnedHisto3D.dVol";
static const char __pyx_k_BinnedHisto3D_fill[] = "BinnedHisto3D.fill";
static const char __pyx_k_BinnedHisto3D_sumW[] = "BinnedHisto3D.sumW";
static const char __pyx_k_BinnedHisto3D_xMax[] = "BinnedHisto3D.xMax";
static const char __pyx_k_BinnedHisto3D_xMin[] = "BinnedHisto3D.xMin";
static const char __pyx_k_BinnedHisto3D_xRMS[] = "BinnedHisto3D.xRMS";
static const char __pyx_k_BinnedHisto3D_yMax[] = "BinnedHisto3D.yMax";
static const char __pyx_k_BinnedHisto3D_yMin[] = "BinnedHisto3D.yMin";
static const char __pyx_k_BinnedHisto3D_yRMS[] = "BinnedHisto3D.yRMS";
static const char __pyx_k_BinnedHisto3D_zMax[] = "BinnedHisto3D.zMax";
static const char __pyx_k_BinnedHisto3D_zMin[] = "BinnedHisto3D.zMin";
static const char __pyx_k_BinnedHisto3D_zRMS[] = "BinnedHisto3D.zRMS";
static const char __pyx_k_Counter_lengthMeta[] = "Counter.lengthMeta";
static const char __pyx_k_Counter_mkEstimate[] = "Counter.mkEstimate";
static const char __pyx_k_Counter_numEntries[] = "Counter.numEntries";
static const char __pyx_k_Estimate0D_errDown[] = "Estimate0D.errDown";
static const char __pyx_k_Estimate0D_numErrs[] = "Estimate0D.numErrs";
static const char __pyx_k_Estimate0D_quadSum[] = "Estimate0D.quadSum";
static const char __pyx_k_Estimate0D_sources[] = "Estimate0D.sources";
static const char __pyx_k_Estimate_errDownUp[] = "Estimate.errDownUp";
static const char __pyx_k_Estimate_errNegPos[] = "Estimate.errNegPos";
static const char __pyx_k_Estimate_hasSource[] = "Estimate.hasSource";
static const char __pyx_k_Estimate_relErrAvg[] = "Estimate.relErrAvg";
static const char __pyx_k_Estimate_relErrEnv[] = "Estimate.relErrEnv";
static const char __pyx_k_Scatter1D___init_1[] = "Scatter1D.__init_1";
static const char __pyx_k_Scatter1D___init_2[] = "Scatter1D.__init_2";
static const char __pyx_k_Scatter1D_addPoint[] = "Scatter1D.addPoint";
static const char __pyx_k_Scatter1D_rmPoints[] = "Scatter1D.rmPoints";
static const char __pyx_k_Scatter1D_scaleErr[] = "Scatter1D.scaleErr";
static const char __pyx_k_Scatter1D_scaleVal[] = "Scatter1D.scaleVal";
static const char __pyx_k_Scatter1D_xErrAvgs[] = "Scatter1D.xErrAvgs";
static const char __pyx_k_Scatter2D___init_1[] = "Scatter2D.__init_1";
static const char __pyx_k_Scatter2D___init_2[] = "Scatter2D.__init_2";
static const char __pyx_k_Scatter2D_addPoint[] = "Scatter2D.addPoint";
static const char __pyx_k_Scatter2D_rmPoints[] = "Scatter2D.rmPoints";
static const char __pyx_k_Scatter2D_scaleErr[] = "Scatter2D.scaleErr";
static const char __pyx_k_Scatter2D_scaleVal[] = "Scatter2D.scaleVal";
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_1[] = "Scatter3D.__init_1";
static const char __pyx_k_Scatter3D___init_2[] = "Scatter3D.__init_2";
static const char __pyx_k_Scatter3D_addPoint[] = "Scatter3D.addPoint";
static const char __pyx_k_Scatter3D_rmPoints[] = "Scatter3D.rmPoints";
static const char __pyx_k_Scatter3D_scaleErr[] = "Scatter3D.scaleErr";
static const char __pyx_k_Scatter3D_scaleVal[] = "Scatter3D.scaleVal";
static const char __pyx_k_Scatter3D_xErrAvgs[] = "Scatter3D.xErrAvgs";
static const char __pyx_k_Scatter3D_yErrAvgs[] = "Scatter3D.yErrAvgs";
static const char __pyx_k_Scatter3D_zErrAvgs[] = "Scatter3D.zErrAvgs";
static const char __pyx_k_Scatter4D___init_1[] = "Scatter4D.__init_1";
static const char __pyx_k_Scatter4D___init_2[] = "Scatter4D.__init_2";
static const char __pyx_k_Scatter4D_addPoint[] = "Scatter4D.addPoint";
static const char __pyx_k_Scatter4D_rmPoints[] = "Scatter4D.rmPoints";
static const char __pyx_k_Scatter4D_scaleErr[] = "Scatter4D.scaleErr";
static const char __pyx_k_Scatter4D_scaleVal[] = "Scatter4D.scaleVal";
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_deserializeContent[] = "deserializeContent";
static const char __pyx_k_deserializeSources[] = "deserializeSources";
static const char __pyx_k_localToGlobalIndex[] = "localToGlobalIndex";
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_BinnedHisto1D__mknp[] = "BinnedHisto1D._mknp";
static const char __pyx_k_BinnedHisto1D_binAt[] = "BinnedHisto1D.binAt";
static const char __pyx_k_BinnedHisto1D_clone[] = "BinnedHisto1D.clone";
static const char __pyx_k_BinnedHisto1D_reset[] = "BinnedHisto1D.reset";
static const char __pyx_k_BinnedHisto1D_sumW2[] = "BinnedHisto1D.sumW2";
static const char __pyx_k_BinnedHisto1D_sumWA[] = "BinnedHisto1D.sumWA";
static const char __pyx_k_BinnedHisto1D_xMean[] = "BinnedHisto1D.xMean";
static const char __pyx_k_BinnedHisto2D__mknp[] = "BinnedHisto2D._mknp";
static const char __pyx_k_BinnedHisto2D_binAt[] = "BinnedHisto2D.binAt";
static const char __pyx_k_BinnedHisto2D_clone[] = "BinnedHisto2D.clone";
static const char __pyx_k_BinnedHisto2D_reset[] = "BinnedHisto2D.reset";
static const char __pyx_k_BinnedHisto2D_sumW2[] = "BinnedHisto2D.sumW2";
static const char __pyx_k_BinnedHisto2D_sumWA[] = "BinnedHisto2D.sumWA";
static const char __pyx_k_BinnedHisto2D_xMean[] = "BinnedHisto2D.xMean";
static const char __pyx_k_BinnedHisto2D_yMean[] = "BinnedHisto2D.yMean";
static const char __pyx_k_BinnedHisto3D__mknp[] = "BinnedHisto3D._mknp";
static const char __pyx_k_BinnedHisto3D_binAt[] = "BinnedHisto3D.binAt";
static const char __pyx_k_BinnedHisto3D_clone[] = "BinnedHisto3D.clone";
static const char __pyx_k_BinnedHisto3D_reset[] = "BinnedHisto3D.reset";
static const char __pyx_k_BinnedHisto3D_sumW2[] = "BinnedHisto3D.sumW2";
static const char __pyx_k_BinnedHisto3D_sumWA[] = "BinnedHisto3D.sumWA";
static const char __pyx_k_BinnedHisto3D_xMean[] = "BinnedHisto3D.xMean";
static const char __pyx_k_BinnedHisto3D_yMean[] = "BinnedHisto3D.yMean";
static const char __pyx_k_BinnedHisto3D_zMean[] = "BinnedHisto3D.zMean";
static const char __pyx_k_BinnedProfile1D_bin[] = "BinnedProfile1D.bin";
static const char __pyx_k_BinnedProfile1D_set[] = "BinnedProfile1D.set";
static const char __pyx_k_BinnedProfile2D_bin[] = "BinnedProfile2D.bin";
static const char __pyx_k_BinnedProfile2D_set[] = "BinnedProfile2D.set";
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_Estimate0D_relErrUp[] = "Estimate0D.relErrUp";
static const char __pyx_k_Estimate0D_rmSource[] = "Estimate0D.rmSource";
static const char __pyx_k_Estimate0D_totalErr[] = "Estimate0D.totalErr";
static const char __pyx_k_Estimate_quadSumAvg[] = "Estimate.quadSumAvg";
static const char __pyx_k_Estimate_quadSumEnv[] = "Estimate.quadSumEnv";
static const char __pyx_k_Estimate_quadSumNeg[] = "Estimate.quadSumNeg";
static const char __pyx_k_Estimate_quadSumPos[] = "Estimate.quadSumPos";
static const char __pyx_k_Estimate_relErrDown[] = "Estimate.relErrDown";
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_Scatter4D_addPoints[] = "Scatter4D.addPoints";
static const char __pyx_k_Scatter4D_mkScatter[] = "Scatter4D.mkScatter";
static const char __pyx_k_Scatter4D_numPoints[] = "Scatter4D.numPoints";
static const char __pyx_k_include_Binning_pyx[] = "include/Binning.pyx";
static const char __pyx_k_include_Counter_pyx[] = "include/Counter.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_Axis___reduce_cython[] = "Axis.__reduce_cython__";
static const char __pyx_k_BinnedEstimate1D_auc[] = "BinnedEstimate1D.auc";
static const char __pyx_k_BinnedEstimate1D_bin[] = "BinnedEstimate1D.bin";
static const char __pyx_k_BinnedEstimate1D_set[] = "BinnedEstimate1D.set";
static const char __pyx_k_BinnedEstimate2D_auc[] = "BinnedEstimate2D.auc";
static const char __pyx_k_BinnedEstimate2D_bin[] = "BinnedEstimate2D.bin";
static const char __pyx_k_BinnedEstimate2D_set[] = "BinnedEstimate2D.set";
static const char __pyx_k_BinnedEstimate3D_auc[] = "BinnedEstimate3D.auc";
static const char __pyx_k_BinnedEstimate3D_bin[] = "BinnedEstimate3D.bin";
static const char __pyx_k_BinnedEstimate3D_set[] = "BinnedEstimate3D.set";
static const char __pyx_k_BinnedHisto1D__init1[] = "_BinnedHisto1D__init1";
static const char __pyx_k_BinnedHisto1D__init2[] = "_BinnedHisto1D__init2";
static const char __pyx_k_BinnedHisto1D__init3[] = "_BinnedHisto1D__init3";
static const char __pyx_k_BinnedHisto1D__init4[] = "_BinnedHisto1D__init4";
static const char __pyx_k_BinnedHisto1D_binDim[] = "BinnedHisto1D.binDim";
static const char __pyx_k_BinnedHisto1D_rebinX[] = "BinnedHisto1D.rebinX";
static const char __pyx_k_BinnedHisto1D_scaleW[] = "BinnedHisto1D.scaleW";
static const char __pyx_k_BinnedHisto1D_sumWA2[] = "BinnedHisto1D.sumWA2";
static const char __pyx_k_BinnedHisto1D_xEdges[] = "BinnedHisto1D.xEdges";
static const char __pyx_k_BinnedHisto2D__init1[] = "_BinnedHisto2D__init1";
static const char __pyx_k_BinnedHisto2D__init2[] = "_BinnedHisto2D__init2";
static const char __pyx_k_BinnedHisto2D__init3[] = "_BinnedHisto2D__init3";
static const char __pyx_k_BinnedHisto2D__init4[] = "_BinnedHisto2D__init4";
static const char __pyx_k_BinnedHisto2D_binDim[] = "BinnedHisto2D.binDim";
static const char __pyx_k_BinnedHisto2D_rebinX[] = "BinnedHisto2D.rebinX";
static const char __pyx_k_BinnedHisto2D_rebinY[] = "BinnedHisto2D.rebinY";
static const char __pyx_k_BinnedHisto2D_scaleW[] = "BinnedHisto2D.scaleW";
static const char __pyx_k_BinnedHisto2D_sumWA2[] = "BinnedHisto2D.sumWA2";
static const char __pyx_k_BinnedHisto2D_xEdges[] = "BinnedHisto2D.xEdges";
static const char __pyx_k_BinnedHisto2D_yEdges[] = "BinnedHisto2D.yEdges";
static const char __pyx_k_BinnedHisto3D__init1[] = "_BinnedHisto3D__init1";
static const char __pyx_k_BinnedHisto3D__init2[] = "_BinnedHisto3D__init2";
static const char __pyx_k_BinnedHisto3D__init3[] = "_BinnedHisto3D__init3";
static const char __pyx_k_BinnedHisto3D__init4[] = "_BinnedHisto3D__init4";
static const char __pyx_k_BinnedHisto3D_binDim[] = "BinnedHisto3D.binDim";
static const char __pyx_k_BinnedHisto3D_rebinX[] = "BinnedHisto3D.rebinX";
static const char __pyx_k_BinnedHisto3D_rebinY[] = "BinnedHisto3D.rebinY";
static const char __pyx_k_BinnedHisto3D_rebinZ[] = "BinnedHisto3D.rebinZ";
static const char __pyx_k_BinnedHisto3D_scaleW[] = "BinnedHisto3D.scaleW";
static const char __pyx_k_BinnedHisto3D_sumWA2[] = "BinnedHisto3D.sumWA2";
static const char __pyx_k_BinnedHisto3D_xEdges[] = "BinnedHisto3D.xEdges";
static const char __pyx_k_BinnedHisto3D_yEdges[] = "BinnedHisto3D.yEdges";
static const char __pyx_k_BinnedHisto3D_zEdges[] = "BinnedHisto3D.zEdges";
static const char __pyx_k_BinnedProfile1D__bin[] = "BinnedProfile1D._bin";
static const char __pyx_k_BinnedProfile1D_bins[] = "BinnedProfile1D.bins";
static const char __pyx_k_BinnedProfile1D_dVol[] = "BinnedProfile1D.dVol";
static const char __pyx_k_BinnedProfile1D_fill[] = "BinnedProfile1D.fill";
static const char __pyx_k_BinnedProfile1D_sumW[] = "BinnedProfile1D.sumW";
static const char __pyx_k_BinnedProfile1D_xMax[] = "BinnedProfile1D.xMax";
static const char __pyx_k_BinnedProfile1D_xMin[] = "BinnedProfile1D.xMin";
static const char __pyx_k_BinnedProfile1D_xRMS[] = "BinnedProfile1D.xRMS";
static const char __pyx_k_BinnedProfile2D__bin[] = "BinnedProfile2D._bin";
static const char __pyx_k_BinnedProfile2D_bins[] = "BinnedProfile2D.bins";
static const char __pyx_k_BinnedProfile2D_dVol[] = "BinnedProfile2D.dVol";
static const char __pyx_k_BinnedProfile2D_fill[] = "BinnedProfile2D.fill";
static const char __pyx_k_BinnedProfile2D_sumW[] = "BinnedProfile2D.sumW";
static const char __pyx_k_BinnedProfile2D_xMax[] = "BinnedProfile2D.xMax";
static const char __pyx_k_BinnedProfile2D_xMin[] = "BinnedProfile2D.xMin";
static const char __pyx_k_BinnedProfile2D_xRMS[] = "BinnedProfile2D.xRMS";
static const char __pyx_k_BinnedProfile2D_yMax[] = "BinnedProfile2D.yMax";
static const char __pyx_k_BinnedProfile2D_yMin[] = "BinnedProfile2D.yMin";
static const char __pyx_k_BinnedProfile2D_yRMS[] = "BinnedProfile2D.yRMS";
static const char __pyx_k_Estimate0D_errDownUp[] = "Estimate0D.errDownUp";
static const char __pyx_k_Estimate0D_errNegPos[] = "Estimate0D.errNegPos";
static const char __pyx_k_Estimate0D_hasSource[] = "Estimate0D.hasSource";
static const char __pyx_k_Estimate0D_mkScatter[] = "Estimate0D.mkScatter";
static const char __pyx_k_Estimate_relTotalErr[] = "Estimate.relTotalErr";
static const char __pyx_k_Estimate_totalErrAvg[] = "Estimate.totalErrAvg";
static const char __pyx_k_Estimate_totalErrEnv[] = "Estimate.totalErrEnv";
static const char __pyx_k_Estimate_totalErrNeg[] = "Estimate.totalErrNeg";
static const char __pyx_k_Estimate_totalErrPos[] = "Estimate.totalErrPos";
static const char __pyx_k_Scatter1D_lengthMeta[] = "Scatter1D.lengthMeta";
static const char __pyx_k_Scatter2D_lengthMeta[] = "Scatter2D.lengthMeta";
static const char __pyx_k_Scatter3D_lengthMeta[] = "Scatter3D.lengthMeta";
static const char __pyx_k_Scatter4D_lengthMeta[] = "Scatter4D.lengthMeta";
static const char __pyx_k_include_Estimate_pyx[] = "include/Estimate.pyx";
static const char __pyx_k_BinnedEstimate1D__bin[] = "BinnedEstimate1D._bin";
static const char __pyx_k_BinnedEstimate1D_bins[] = "BinnedEstimate1D.bins";
static const char __pyx_k_BinnedEstimate1D_vals[] = "BinnedEstimate1D.vals";
static const char __pyx_k_BinnedEstimate1D_xMax[] = "BinnedEstimate1D.xMax";
static const char __pyx_k_BinnedEstimate1D_xMin[] = "BinnedEstimate1D.xMin";
static const char __pyx_k_BinnedEstimate2D__bin[] = "BinnedEstimate2D._bin";
static const char __pyx_k_BinnedEstimate2D_bins[] = "BinnedEstimate2D.bins";
static const char __pyx_k_BinnedEstimate2D_vals[] = "BinnedEstimate2D.vals";
static const char __pyx_k_BinnedEstimate2D_xMax[] = "BinnedEstimate2D.xMax";
static const char __pyx_k_BinnedEstimate2D_xMin[] = "BinnedEstimate2D.xMin";
static const char __pyx_k_BinnedEstimate2D_yMax[] = "BinnedEstimate2D.yMax";
static const char __pyx_k_BinnedEstimate2D_yMin[] = "BinnedEstimate2D.yMin";
static const char __pyx_k_BinnedEstimate3D__bin[] = "BinnedEstimate3D._bin";
static const char __pyx_k_BinnedEstimate3D_bins[] = "BinnedEstimate3D.bins";
static const char __pyx_k_BinnedEstimate3D_vals[] = "BinnedEstimate3D.vals";
static const char __pyx_k_BinnedEstimate3D_xMax[] = "BinnedEstimate3D.xMax";
static const char __pyx_k_BinnedEstimate3D_xMin[] = "BinnedEstimate3D.xMin";
static const char __pyx_k_BinnedEstimate3D_yMax[] = "BinnedEstimate3D.yMax";
static const char __pyx_k_BinnedEstimate3D_yMin[] = "BinnedEstimate3D.yMin";
static const char __pyx_k_BinnedEstimate3D_zMax[] = "BinnedEstimate3D.zMax";
static const char __pyx_k_BinnedEstimate3D_zMin[] = "BinnedEstimate3D.zMin";
static const char __pyx_k_BinnedHisto1D___init1[] = "BinnedHisto1D.__init1";
static const char __pyx_k_BinnedHisto1D___init2[] = "BinnedHisto1D.__init2";
static const char __pyx_k_BinnedHisto1D___init3[] = "BinnedHisto1D.__init3";
static const char __pyx_k_BinnedHisto1D___init4[] = "BinnedHisto1D.__init4";
static const char __pyx_k_BinnedHisto1D_density[] = "BinnedHisto1D.density";
static const char __pyx_k_BinnedHisto1D_fillDim[] = "BinnedHisto1D.fillDim";
static const char __pyx_k_BinnedHisto1D_indexAt[] = "BinnedHisto1D.indexAt";
static const char __pyx_k_BinnedHisto1D_maskBin[] = "BinnedHisto1D.maskBin";
static const char __pyx_k_BinnedHisto1D_numBins[] = "BinnedHisto1D.numBins";
static const char __pyx_k_BinnedHisto1D_xStdDev[] = "BinnedHisto1D.xStdDev";
static const char __pyx_k_BinnedHisto1D_xStdErr[] = "BinnedHisto1D.xStdErr";
static const char __pyx_k_BinnedHisto1D_xWidths[] = "BinnedHisto1D.xWidths";
static const char __pyx_k_BinnedHisto2D___init1[] = "BinnedHisto2D.__init1";
static const char __pyx_k_BinnedHisto2D___init2[] = "BinnedHisto2D.__init2";
static const char __pyx_k_BinnedHisto2D___init3[] = "BinnedHisto2D.__init3";
static const char __pyx_k_BinnedHisto2D___init4[] = "BinnedHisto2D.__init4";
static const char __pyx_k_BinnedHisto2D_density[] = "BinnedHisto2D.density";
static const char __pyx_k_BinnedHisto2D_fillDim[] = "BinnedHisto2D.fillDim";
static const char __pyx_k_BinnedHisto2D_indexAt[] = "BinnedHisto2D.indexAt";
static const char __pyx_k_BinnedHisto2D_maskBin[] = "BinnedHisto2D.maskBin";
static const char __pyx_k_BinnedHisto2D_numBins[] = "BinnedHisto2D.numBins";
static const char __pyx_k_BinnedHisto2D_xStdDev[] = "BinnedHisto2D.xStdDev";
static const char __pyx_k_BinnedHisto2D_xStdErr[] = "BinnedHisto2D.xStdErr";
static const char __pyx_k_BinnedHisto2D_xWidths[] = "BinnedHisto2D.xWidths";
static const char __pyx_k_BinnedHisto2D_yStdDev[] = "BinnedHisto2D.yStdDev";
static const char __pyx_k_BinnedHisto2D_yStdErr[] = "BinnedHisto2D.yStdErr";
static const char __pyx_k_BinnedHisto2D_yWidths[] = "BinnedHisto2D.yWidths";
static const char __pyx_k_BinnedHisto3D___init1[] = "BinnedHisto3D.__init1";
static const char __pyx_k_BinnedHisto3D___init2[] = "BinnedHisto3D.__init2";
static const char __pyx_k_BinnedHisto3D___init3[] = "BinnedHisto3D.__init3";
static const char __pyx_k_BinnedHisto3D___init4[] = "BinnedHisto3D.__init4";
static const char __pyx_k_BinnedHisto3D_density[] = "BinnedHisto3D.density";
static const char __pyx_k_BinnedHisto3D_fillDim[] = "BinnedHisto3D.fillDim";
static const char __pyx_k_BinnedHisto3D_indexAt[] = "BinnedHisto3D.indexAt";
static const char __pyx_k_BinnedHisto3D_maskBin[] = "BinnedHisto3D.maskBin";
static const char __pyx_k_BinnedHisto3D_numBins[] = "BinnedHisto3D.numBins";
static const char __pyx_k_BinnedHisto3D_xStdDev[] = "BinnedHisto3D.xStdDev";
static const char __pyx_k_BinnedHisto3D_xStdErr[] = "BinnedHisto3D.xStdErr";
static const char __pyx_k_BinnedHisto3D_xWidths[] = "BinnedHisto3D.xWidths";
static const char __pyx_k_BinnedHisto3D_yStdDev[] = "BinnedHisto3D.yStdDev";
static const char __pyx_k_BinnedHisto3D_yStdErr[] = "BinnedHisto3D.yStdErr";
static const char __pyx_k_BinnedHisto3D_yWidths[] = "BinnedHisto3D.yWidths";
static const char __pyx_k_BinnedHisto3D_zStdDev[] = "BinnedHisto3D.zStdDev";
static const char __pyx_k_BinnedHisto3D_zStdErr[] = "BinnedHisto3D.zStdErr";
static const char __pyx_k_BinnedHisto3D_zWidths[] = "BinnedHisto3D.zWidths";
static const char __pyx_k_BinnedProfile1D__mknp[] = "BinnedProfile1D._mknp";
static const char __pyx_k_BinnedProfile1D_binAt[] = "BinnedProfile1D.binAt";
static const char __pyx_k_BinnedProfile1D_clone[] = "BinnedProfile1D.clone";
static const char __pyx_k_BinnedProfile1D_reset[] = "BinnedProfile1D.reset";
static const char __pyx_k_BinnedProfile1D_sumW2[] = "BinnedProfile1D.sumW2";
static const char __pyx_k_BinnedProfile1D_sumWA[] = "BinnedProfile1D.sumWA";
static const char __pyx_k_BinnedProfile1D_xMean[] = "BinnedProfile1D.xMean";
static const char __pyx_k_BinnedProfile2D__mknp[] = "BinnedProfile2D._mknp";
static const char __pyx_k_BinnedProfile2D_binAt[] = "BinnedProfile2D.binAt";
static const char __pyx_k_BinnedProfile2D_clone[] = "BinnedProfile2D.clone";
static const char __pyx_k_BinnedProfile2D_reset[] = "BinnedProfile2D.reset";
static const char __pyx_k_BinnedProfile2D_sumW2[] = "BinnedProfile2D.sumW2";
static const char __pyx_k_BinnedProfile2D_sumWA[] = "BinnedProfile2D.sumWA";
static const char __pyx_k_BinnedProfile2D_xMean[] = "BinnedProfile2D.xMean";
static const char __pyx_k_BinnedProfile2D_yMean[] = "BinnedProfile2D.yMean";
static const char __pyx_k_Counter_effNumEntries[] = "Counter.effNumEntries";
static const char __pyx_k_Counter_lengthContent[] = "Counter.lengthContent";
static const char __pyx_k_Counter_serializeMeta[] = "Counter.serializeMeta";
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_Estimate0D_lengthMeta[] = "Estimate0D.lengthMeta";
static const char __pyx_k_Estimate0D_quadSumNeg[] = "Estimate0D.quadSumNeg";
static const char __pyx_k_Estimate0D_quadSumPos[] = "Estimate0D.quadSumPos";
static const char __pyx_k_Estimate0D_relErrDown[] = "Estimate0D.relErrDown";
static const char __pyx_k_Estimate0D_value_2e_s[] = "<Estimate0D(value=%.2e) '%s'>";
static const char __pyx_k_Estimate_relErrDownUp[] = "Estimate.relErrDownUp";
static const char __pyx_k_Point___reduce_cython[] = "Point.__reduce_cython__";
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_Scatter4D_combineWith[] = "Scatter4D.combineWith";
static const char __pyx_k_include_Functions_pyx[] = "include/Functions.pyx";
static const char __pyx_k_AnalysisObject_setPath[] = "AnalysisObject.setPath";
static const char __pyx_k_Axis___setstate_cython[] = "Axis.__setstate_cython__";
static const char __pyx_k_BinnedEstimate1D__mknp[] = "BinnedEstimate1D._mknp";
static const char __pyx_k_BinnedEstimate1D_binAt[] = "BinnedEstimate1D.binAt";
static const char __pyx_k_BinnedEstimate1D_clone[] = "BinnedEstimate1D.clone";
static const char __pyx_k_BinnedEstimate1D_reset[] = "BinnedEstimate1D.reset";
static const char __pyx_k_BinnedEstimate1D_scale[] = "BinnedEstimate1D.scale";
static const char __pyx_k_BinnedEstimate2D__mknp[] = "BinnedEstimate2D._mknp";
static const char __pyx_k_BinnedEstimate2D_binAt[] = "BinnedEstimate2D.binAt";
static const char __pyx_k_BinnedEstimate2D_clone[] = "BinnedEstimate2D.clone";
static const char __pyx_k_BinnedEstimate2D_reset[] = "BinnedEstimate2D.reset";
static const char __pyx_k_BinnedEstimate2D_scale[] = "BinnedEstimate2D.scale";
static const char __pyx_k_BinnedEstimate3D__mknp[] = "BinnedEstimate3D._mknp";
static const char __pyx_k_BinnedEstimate3D_binAt[] = "BinnedEstimate3D.binAt";
static const char __pyx_k_BinnedEstimate3D_clone[] = "BinnedEstimate3D.clone";
static const char __pyx_k_BinnedEstimate3D_reset[] = "BinnedEstimate3D.reset";
static const char __pyx_k_BinnedEstimate3D_scale[] = "BinnedEstimate3D.scale";
static const char __pyx_k_BinnedHisto1D_divideBy[] = "BinnedHisto1D.divideBy";
static const char __pyx_k_BinnedHisto1D_integral[] = "BinnedHisto1D.integral";
static const char __pyx_k_BinnedHisto1D_isMasked[] = "BinnedHisto1D.isMasked";
static const char __pyx_k_BinnedHisto1D_maskBins[] = "BinnedHisto1D.maskBins";
static const char __pyx_k_BinnedHisto1D_numBinsX[] = "BinnedHisto1D.numBinsX";
static const char __pyx_k_BinnedHisto1D_rebinXBy[] = "BinnedHisto1D.rebinXBy";
static const char __pyx_k_BinnedHisto1D_rebinXTo[] = "BinnedHisto1D.rebinXTo";
static const char __pyx_k_BinnedHisto2D_divideBy[] = "BinnedHisto2D.divideBy";
static const char __pyx_k_BinnedHisto2D_integral[] = "BinnedHisto2D.integral";
static const char __pyx_k_BinnedHisto2D_isMasked[] = "BinnedHisto2D.isMasked";
static const char __pyx_k_BinnedHisto2D_maskBins[] = "BinnedHisto2D.maskBins";
static const char __pyx_k_BinnedHisto2D_numBinsX[] = "BinnedHisto2D.numBinsX";
static const char __pyx_k_BinnedHisto2D_numBinsY[] = "BinnedHisto2D.numBinsY";
static const char __pyx_k_BinnedHisto2D_rebinXBy[] = "BinnedHisto2D.rebinXBy";
static const char __pyx_k_BinnedHisto2D_rebinXTo[] = "BinnedHisto2D.rebinXTo";
static const char __pyx_k_BinnedHisto2D_rebinYBy[] = "BinnedHisto2D.rebinYBy";
static const char __pyx_k_BinnedHisto2D_rebinYTo[] = "BinnedHisto2D.rebinYTo";
static const char __pyx_k_BinnedHisto3D_divideBy[] = "BinnedHisto3D.divideBy";
static const char __pyx_k_BinnedHisto3D_integral[] = "BinnedHisto3D.integral";
static const char __pyx_k_BinnedHisto3D_isMasked[] = "BinnedHisto3D.isMasked";
static const char __pyx_k_BinnedHisto3D_maskBins[] = "BinnedHisto3D.maskBins";
static const char __pyx_k_BinnedHisto3D_numBinsX[] = "BinnedHisto3D.numBinsX";
static const char __pyx_k_BinnedHisto3D_numBinsY[] = "BinnedHisto3D.numBinsY";
static const char __pyx_k_BinnedHisto3D_numBinsZ[] = "BinnedHisto3D.numBinsZ";
static const char __pyx_k_BinnedHisto3D_rebinXBy[] = "BinnedHisto3D.rebinXBy";
static const char __pyx_k_BinnedHisto3D_rebinXTo[] = "BinnedHisto3D.rebinXTo";
static const char __pyx_k_BinnedHisto3D_rebinYBy[] = "BinnedHisto3D.rebinYBy";
static const char __pyx_k_BinnedHisto3D_rebinYTo[] = "BinnedHisto3D.rebinYTo";
static const char __pyx_k_BinnedHisto3D_rebinZBy[] = "BinnedHisto3D.rebinZBy";
static const char __pyx_k_BinnedHisto3D_rebinZTo[] = "BinnedHisto3D.rebinZTo";
static const char __pyx_k_BinnedProfile1D__init1[] = "_BinnedProfile1D__init1";
static const char __pyx_k_BinnedProfile1D__init2[] = "_BinnedProfile1D__init2";
static const char __pyx_k_BinnedProfile1D__init3[] = "_BinnedProfile1D__init3";
static const char __pyx_k_BinnedProfile1D__init4[] = "_BinnedProfile1D__init4";
static const char __pyx_k_BinnedProfile1D_binDim[] = "BinnedProfile1D.binDim";
static const char __pyx_k_BinnedProfile1D_rebinX[] = "BinnedProfile1D.rebinX";
static const char __pyx_k_BinnedProfile1D_scaleW[] = "BinnedProfile1D.scaleW";
static const char __pyx_k_BinnedProfile1D_sumWA2[] = "BinnedProfile1D.sumWA2";
static const char __pyx_k_BinnedProfile1D_xEdges[] = "BinnedProfile1D.xEdges";
static const char __pyx_k_BinnedProfile2D__init1[] = "_BinnedProfile2D__init1";
static const char __pyx_k_BinnedProfile2D__init2[] = "_BinnedProfile2D__init2";
static const char __pyx_k_BinnedProfile2D__init3[] = "_BinnedProfile2D__init3";
static const char __pyx_k_BinnedProfile2D__init4[] = "_BinnedProfile2D__init4";
static const char __pyx_k_BinnedProfile2D_binDim[] = "BinnedProfile2D.binDim";
static const char __pyx_k_BinnedProfile2D_rebinX[] = "BinnedProfile2D.rebinX";
static const char __pyx_k_BinnedProfile2D_rebinY[] = "BinnedProfile2D.rebinY";
static const char __pyx_k_BinnedProfile2D_scaleW[] = "BinnedProfile2D.scaleW";
static const char __pyx_k_BinnedProfile2D_sumWA2[] = "BinnedProfile2D.sumWA2";
static const char __pyx_k_BinnedProfile2D_xEdges[] = "BinnedProfile2D.xEdges";
static const char __pyx_k_BinnedProfile2D_yEdges[] = "BinnedProfile2D.yEdges";
static const char __pyx_k_Estimate0D_relTotalErr[] = "Estimate0D.relTotalErr";
static const char __pyx_k_Point3D_v1_g_v2_g_v3_g[] = "<Point3D(v1=%g, v2=%g, v3=%g)>";
static const char __pyx_k_ignoreOffDiagonalTerms[] = "ignoreOffDiagonalTerms";
static const char __pyx_k_include_Estimate0D_pyx[] = "include/Estimate0D.pyx";
static const char __pyx_k_AnalysisObject_setTitle[] = "AnalysisObject.setTitle";
static const char __pyx_k_Bin1D_locals_BinWrapper[] = "Bin1D.<locals>.BinWrapper";
static const char __pyx_k_Bin2D_locals_BinWrapper[] = "Bin2D.<locals>.BinWrapper";
static const char __pyx_k_Bin3D_locals_BinWrapper[] = "Bin3D.<locals>.BinWrapper";
static const char __pyx_k_BinnedEstimate1D__init1[] = "_BinnedEstimate1D__init1";
static const char __pyx_k_BinnedEstimate1D__init2[] = "_BinnedEstimate1D__init2";
static const char __pyx_k_BinnedEstimate1D__init3[] = "_BinnedEstimate1D__init3";
static const char __pyx_k_BinnedEstimate1D__init4[] = "_BinnedEstimate1D__init4";
static const char __pyx_k_BinnedEstimate1D_binDim[] = "BinnedEstimate1D.binDim";
static const char __pyx_k_BinnedEstimate1D_rebinX[] = "BinnedEstimate1D.rebinX";
static const char __pyx_k_BinnedEstimate1D_xEdges[] = "BinnedEstimate1D.xEdges";
static const char __pyx_k_BinnedEstimate2D__init1[] = "_BinnedEstimate2D__init1";
static const char __pyx_k_BinnedEstimate2D__init2[] = "_BinnedEstimate2D__init2";
static const char __pyx_k_BinnedEstimate2D__init3[] = "_BinnedEstimate2D__init3";
static const char __pyx_k_BinnedEstimate2D__init4[] = "_BinnedEstimate2D__init4";
static const char __pyx_k_BinnedEstimate2D_binDim[] = "BinnedEstimate2D.binDim";
static const char __pyx_k_BinnedEstimate2D_rebinX[] = "BinnedEstimate2D.rebinX";
static const char __pyx_k_BinnedEstimate2D_rebinY[] = "BinnedEstimate2D.rebinY";
static const char __pyx_k_BinnedEstimate2D_xEdges[] = "BinnedEstimate2D.xEdges";
static const char __pyx_k_BinnedEstimate2D_yEdges[] = "BinnedEstimate2D.yEdges";
static const char __pyx_k_BinnedEstimate3D__init1[] = "_BinnedEstimate3D__init1";
static const char __pyx_k_BinnedEstimate3D__init2[] = "_BinnedEstimate3D__init2";
static const char __pyx_k_BinnedEstimate3D__init3[] = "_BinnedEstimate3D__init3";
static const char __pyx_k_BinnedEstimate3D__init4[] = "_BinnedEstimate3D__init4";
static const char __pyx_k_BinnedEstimate3D_binDim[] = "BinnedEstimate3D.binDim";
static const char __pyx_k_BinnedEstimate3D_rebinX[] = "BinnedEstimate3D.rebinX";
static const char __pyx_k_BinnedEstimate3D_rebinY[] = "BinnedEstimate3D.rebinY";
static const char __pyx_k_BinnedEstimate3D_rebinZ[] = "BinnedEstimate3D.rebinZ";
static const char __pyx_k_BinnedEstimate3D_xEdges[] = "BinnedEstimate3D.xEdges";
static const char __pyx_k_BinnedEstimate3D_yEdges[] = "BinnedEstimate3D.yEdges";
static const char __pyx_k_BinnedEstimate3D_zEdges[] = "BinnedEstimate3D.zEdges";
static const char __pyx_k_BinnedHisto1D_isVisible[] = "BinnedHisto1D.isVisible";
static const char __pyx_k_BinnedHisto1D_maskBinAt[] = "BinnedHisto1D.maskBinAt";
static const char __pyx_k_BinnedHisto1D_maskSlice[] = "BinnedHisto1D.maskSlice";
static const char __pyx_k_BinnedHisto1D_mkScatter[] = "BinnedHisto1D.mkScatter";
static const char __pyx_k_BinnedHisto1D_normalize[] = "BinnedHisto1D.normalize";
static const char __pyx_k_BinnedHisto1D_xVariance[] = "BinnedHisto1D.xVariance";
static const char __pyx_k_BinnedHisto2D_isVisible[] = "BinnedHisto2D.isVisible";
static const char __pyx_k_BinnedHisto2D_maskBinAt[] = "BinnedHisto2D.maskBinAt";
static const char __pyx_k_BinnedHisto2D_maskSlice[] = "BinnedHisto2D.maskSlice";
static const char __pyx_k_BinnedHisto2D_mkScatter[] = "BinnedHisto2D.mkScatter";
static const char __pyx_k_BinnedHisto2D_normalize[] = "BinnedHisto2D.normalize";
static const char __pyx_k_BinnedHisto2D_xVariance[] = "BinnedHisto2D.xVariance";
static const char __pyx_k_BinnedHisto2D_yVariance[] = "BinnedHisto2D.yVariance";
static const char __pyx_k_BinnedHisto3D_isVisible[] = "BinnedHisto3D.isVisible";
static const char __pyx_k_BinnedHisto3D_maskBinAt[] = "BinnedHisto3D.maskBinAt";
static const char __pyx_k_BinnedHisto3D_maskSlice[] = "BinnedHisto3D.maskSlice";
static const char __pyx_k_BinnedHisto3D_mkScatter[] = "BinnedHisto3D.mkScatter";
static const char __pyx_k_BinnedHisto3D_normalize[] = "BinnedHisto3D.normalize";
static const char __pyx_k_BinnedHisto3D_xVariance[] = "BinnedHisto3D.xVariance";
static const char __pyx_k_BinnedHisto3D_yVariance[] = "BinnedHisto3D.yVariance";
static const char __pyx_k_BinnedHisto3D_zVariance[] = "BinnedHisto3D.zVariance";
static const char __pyx_k_BinnedProfile1D___init1[] = "BinnedProfile1D.__init1";
static const char __pyx_k_BinnedProfile1D___init2[] = "BinnedProfile1D.__init2";
static const char __pyx_k_BinnedProfile1D___init3[] = "BinnedProfile1D.__init3";
static const char __pyx_k_BinnedProfile1D___init4[] = "BinnedProfile1D.__init4";
static const char __pyx_k_BinnedProfile1D_density[] = "BinnedProfile1D.density";
static const char __pyx_k_BinnedProfile1D_fillDim[] = "BinnedProfile1D.fillDim";
static const char __pyx_k_BinnedProfile1D_indexAt[] = "BinnedProfile1D.indexAt";
static const char __pyx_k_BinnedProfile1D_maskBin[] = "BinnedProfile1D.maskBin";
static const char __pyx_k_BinnedProfile1D_mkHisto[] = "BinnedProfile1D.mkHisto";
static const char __pyx_k_BinnedProfile1D_numBins[] = "BinnedProfile1D.numBins";
static const char __pyx_k_BinnedProfile1D_xStdDev[] = "BinnedProfile1D.xStdDev";
static const char __pyx_k_BinnedProfile1D_xStdErr[] = "BinnedProfile1D.xStdErr";
static const char __pyx_k_BinnedProfile1D_xWidths[] = "BinnedProfile1D.xWidths";
static const char __pyx_k_BinnedProfile2D___init1[] = "BinnedProfile2D.__init1";
static const char __pyx_k_BinnedProfile2D___init2[] = "BinnedProfile2D.__init2";
static const char __pyx_k_BinnedProfile2D___init3[] = "BinnedProfile2D.__init3";
static const char __pyx_k_BinnedProfile2D___init4[] = "BinnedProfile2D.__init4";
static const char __pyx_k_BinnedProfile2D_density[] = "BinnedProfile2D.density";
static const char __pyx_k_BinnedProfile2D_fillDim[] = "BinnedProfile2D.fillDim";
static const char __pyx_k_BinnedProfile2D_indexAt[] = "BinnedProfile2D.indexAt";
static const char __pyx_k_BinnedProfile2D_maskBin[] = "BinnedProfile2D.maskBin";
static const char __pyx_k_BinnedProfile2D_mkHisto[] = "BinnedProfile2D.mkHisto";
static const char __pyx_k_BinnedProfile2D_numBins[] = "BinnedProfile2D.numBins";
static const char __pyx_k_BinnedProfile2D_xStdDev[] = "BinnedProfile2D.xStdDev";
static const char __pyx_k_BinnedProfile2D_xStdErr[] = "BinnedProfile2D.xStdErr";
static const char __pyx_k_BinnedProfile2D_xWidths[] = "BinnedProfile2D.xWidths";
static const char __pyx_k_BinnedProfile2D_yStdDev[] = "BinnedProfile2D.yStdDev";
static const char __pyx_k_BinnedProfile2D_yStdErr[] = "BinnedProfile2D.yStdErr";
static const char __pyx_k_BinnedProfile2D_yWidths[] = "BinnedProfile2D.yWidths";
static const char __pyx_k_Counter___reduce_cython[] = "Counter.__reduce_cython__";
static const char __pyx_k_Counter_deserializeMeta[] = "Counter.deserializeMeta";
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_Estimate0D_relErrDownUp[] = "Estimate0D.relErrDownUp";
static const char __pyx_k_Estimate_relTotalErrAvg[] = "Estimate.relTotalErrAvg";
static const char __pyx_k_Estimate_relTotalErrEnv[] = "Estimate.relTotalErrEnv";
static const char __pyx_k_Estimate_relTotalErrNeg[] = "Estimate.relTotalErrNeg";
static const char __pyx_k_Estimate_relTotalErrPos[] = "Estimate.relTotalErrPos";
static const char __pyx_k_Point1D___reduce_cython[] = "Point1D.__reduce_cython__";
static const char __pyx_k_Point2D___reduce_cython[] = "Point2D.__reduce_cython__";
static const char __pyx_k_Point3D___reduce_cython[] = "Point3D.__reduce_cython__";
static const char __pyx_k_Point4D___reduce_cython[] = "Point4D.__reduce_cython__";
static const char __pyx_k_Point___setstate_cython[] = "Point.__setstate_cython__";
static const char __pyx_k_Scatter1D_lengthContent[] = "Scatter1D.lengthContent";
static const char __pyx_k_Scatter1D_serializeMeta[] = "Scatter1D.serializeMeta";
static const char __pyx_k_Scatter2D_lengthContent[] = "Scatter2D.lengthContent";
static const char __pyx_k_Scatter2D_serializeMeta[] = "Scatter2D.serializeMeta";
static const char __pyx_k_Scatter3D_lengthContent[] = "Scatter3D.lengthContent";
static const char __pyx_k_Scatter3D_serializeMeta[] = "Scatter3D.serializeMeta";
static const char __pyx_k_Scatter4D_lengthContent[] = "Scatter4D.lengthContent";
static const char __pyx_k_Scatter4D_serializeMeta[] = "Scatter4D.serializeMeta";
static const char __pyx_k_BinnedEstimate1D___init1[] = "BinnedEstimate1D.__init1";
static const char __pyx_k_BinnedEstimate1D___init2[] = "BinnedEstimate1D.__init2";
static const char __pyx_k_BinnedEstimate1D___init3[] = "BinnedEstimate1D.__init3";
static const char __pyx_k_BinnedEstimate1D___init4[] = "BinnedEstimate1D.__init4";
static const char __pyx_k_BinnedEstimate1D_indexAt[] = "BinnedEstimate1D.indexAt";
static const char __pyx_k_BinnedEstimate1D_maskBin[] = "BinnedEstimate1D.maskBin";
static const char __pyx_k_BinnedEstimate1D_numBins[] = "BinnedEstimate1D.numBins";
static const char __pyx_k_BinnedEstimate1D_sources[] = "BinnedEstimate1D.sources";
static const char __pyx_k_BinnedEstimate1D_xWidths[] = "BinnedEstimate1D.xWidths";
static const char __pyx_k_BinnedEstimate2D___init1[] = "BinnedEstimate2D.__init1";
static const char __pyx_k_BinnedEstimate2D___init2[] = "BinnedEstimate2D.__init2";
static const char __pyx_k_BinnedEstimate2D___init3[] = "BinnedEstimate2D.__init3";
static const char __pyx_k_BinnedEstimate2D___init4[] = "BinnedEstimate2D.__init4";
static const char __pyx_k_BinnedEstimate2D_indexAt[] = "BinnedEstimate2D.indexAt";
static const char __pyx_k_BinnedEstimate2D_maskBin[] = "BinnedEstimate2D.maskBin";
static const char __pyx_k_BinnedEstimate2D_numBins[] = "BinnedEstimate2D.numBins";
static const char __pyx_k_BinnedEstimate2D_sources[] = "BinnedEstimate2D.sources";
static const char __pyx_k_BinnedEstimate2D_xWidths[] = "BinnedEstimate2D.xWidths";
static const char __pyx_k_BinnedEstimate2D_yWidths[] = "BinnedEstimate2D.yWidths";
static const char __pyx_k_BinnedEstimate3D___init1[] = "BinnedEstimate3D.__init1";
static const char __pyx_k_BinnedEstimate3D___init2[] = "BinnedEstimate3D.__init2";
static const char __pyx_k_BinnedEstimate3D___init3[] = "BinnedEstimate3D.__init3";
static const char __pyx_k_BinnedEstimate3D___init4[] = "BinnedEstimate3D.__init4";
static const char __pyx_k_BinnedEstimate3D_indexAt[] = "BinnedEstimate3D.indexAt";
static const char __pyx_k_BinnedEstimate3D_maskBin[] = "BinnedEstimate3D.maskBin";
static const char __pyx_k_BinnedEstimate3D_numBins[] = "BinnedEstimate3D.numBins";
static const char __pyx_k_BinnedEstimate3D_sources[] = "BinnedEstimate3D.sources";
static const char __pyx_k_BinnedEstimate3D_xWidths[] = "BinnedEstimate3D.xWidths";
static const char __pyx_k_BinnedEstimate3D_yWidths[] = "BinnedEstimate3D.yWidths";
static const char __pyx_k_BinnedEstimate3D_zWidths[] = "BinnedEstimate3D.zWidths";
static const char __pyx_k_BinnedHisto1D__local_set[] = "BinnedHisto1D._local_set";
static const char __pyx_k_BinnedHisto1D_densitySum[] = "BinnedHisto1D.densitySum";
static const char __pyx_k_BinnedHisto1D_lengthMeta[] = "BinnedHisto1D.lengthMeta";
static const char __pyx_k_BinnedHisto1D_maskedBins[] = "BinnedHisto1D.maskedBins";
static const char __pyx_k_BinnedHisto1D_maxDensity[] = "BinnedHisto1D.maxDensity";
static const char __pyx_k_BinnedHisto1D_mkEstimate[] = "BinnedHisto1D.mkEstimate";
static const char __pyx_k_BinnedHisto1D_numEntries[] = "BinnedHisto1D.numEntries";
static const char __pyx_k_BinnedHisto2D__local_set[] = "BinnedHisto2D._local_set";
static const char __pyx_k_BinnedHisto2D_densitySum[] = "BinnedHisto2D.densitySum";
static const char __pyx_k_BinnedHisto2D_lengthMeta[] = "BinnedHisto2D.lengthMeta";
static const char __pyx_k_BinnedHisto2D_maskedBins[] = "BinnedHisto2D.maskedBins";
static const char __pyx_k_BinnedHisto2D_maxDensity[] = "BinnedHisto2D.maxDensity";
static const char __pyx_k_BinnedHisto2D_mkEstimate[] = "BinnedHisto2D.mkEstimate";
static const char __pyx_k_BinnedHisto2D_numEntries[] = "BinnedHisto2D.numEntries";
static const char __pyx_k_BinnedHisto3D__local_set[] = "BinnedHisto3D._local_set";
static const char __pyx_k_BinnedHisto3D_densitySum[] = "BinnedHisto3D.densitySum";
static const char __pyx_k_BinnedHisto3D_lengthMeta[] = "BinnedHisto3D.lengthMeta";
static const char __pyx_k_BinnedHisto3D_maskedBins[] = "BinnedHisto3D.maskedBins";
static const char __pyx_k_BinnedHisto3D_maxDensity[] = "BinnedHisto3D.maxDensity";
static const char __pyx_k_BinnedHisto3D_mkEstimate[] = "BinnedHisto3D.mkEstimate";
static const char __pyx_k_BinnedHisto3D_numEntries[] = "BinnedHisto3D.numEntries";
static const char __pyx_k_BinnedProfile1D_divideBy[] = "BinnedProfile1D.divideBy";
static const char __pyx_k_BinnedProfile1D_integral[] = "BinnedProfile1D.integral";
static const char __pyx_k_BinnedProfile1D_isMasked[] = "BinnedProfile1D.isMasked";
static const char __pyx_k_BinnedProfile1D_maskBins[] = "BinnedProfile1D.maskBins";
static const char __pyx_k_BinnedProfile1D_numBinsX[] = "BinnedProfile1D.numBinsX";
static const char __pyx_k_BinnedProfile1D_rebinXBy[] = "BinnedProfile1D.rebinXBy";
static const char __pyx_k_BinnedProfile1D_rebinXTo[] = "BinnedProfile1D.rebinXTo";
static const char __pyx_k_BinnedProfile2D_divideBy[] = "BinnedProfile2D.divideBy";
static const char __pyx_k_BinnedProfile2D_integral[] = "BinnedProfile2D.integral";
static const char __pyx_k_BinnedProfile2D_isMasked[] = "BinnedProfile2D.isMasked";
static const char __pyx_k_BinnedProfile2D_maskBins[] = "BinnedProfile2D.maskBins";
static const char __pyx_k_BinnedProfile2D_numBinsX[] = "BinnedProfile2D.numBinsX";
static const char __pyx_k_BinnedProfile2D_numBinsY[] = "BinnedProfile2D.numBinsY";
static const char __pyx_k_BinnedProfile2D_rebinXBy[] = "BinnedProfile2D.rebinXBy";
static const char __pyx_k_BinnedProfile2D_rebinXTo[] = "BinnedProfile2D.rebinXTo";
static const char __pyx_k_BinnedProfile2D_rebinYBy[] = "BinnedProfile2D.rebinYBy";
static const char __pyx_k_BinnedProfile2D_rebinYTo[] = "BinnedProfile2D.rebinYTo";
static const char __pyx_k_Counter_serializeContent[] = "Counter.serializeContent";
static const char __pyx_k_Estimate0D_lengthContent[] = "Estimate0D.lengthContent";
static const char __pyx_k_Estimate0D_serializeMeta[] = "Estimate0D.serializeMeta";
static const char __pyx_k_Estimate___reduce_cython[] = "Estimate.__reduce_cython__";
static const char __pyx_k_AnalysisObject_annotation[] = "AnalysisObject.annotation";
static const char __pyx_k_AnalysisObject_axisConfig[] = "AnalysisObject.axisConfig";
static const char __pyx_k_BinnedEstimate1D_divideBy[] = "BinnedEstimate1D.divideBy";
static const char __pyx_k_BinnedEstimate1D_isMasked[] = "BinnedEstimate1D.isMasked";
static const char __pyx_k_BinnedEstimate1D_maskBins[] = "BinnedEstimate1D.maskBins";
static const char __pyx_k_BinnedEstimate1D_numBinsX[] = "BinnedEstimate1D.numBinsX";
static const char __pyx_k_BinnedEstimate1D_rebinXBy[] = "BinnedEstimate1D.rebinXBy";
static const char __pyx_k_BinnedEstimate1D_rebinXTo[] = "BinnedEstimate1D.rebinXTo";
static const char __pyx_k_BinnedEstimate2D_divideBy[] = "BinnedEstimate2D.divideBy";
static const char __pyx_k_BinnedEstimate2D_isMasked[] = "BinnedEstimate2D.isMasked";
static const char __pyx_k_BinnedEstimate2D_maskBins[] = "BinnedEstimate2D.maskBins";
static const char __pyx_k_BinnedEstimate2D_numBinsX[] = "BinnedEstimate2D.numBinsX";
static const char __pyx_k_BinnedEstimate2D_numBinsY[] = "BinnedEstimate2D.numBinsY";
static const char __pyx_k_BinnedEstimate2D_rebinXBy[] = "BinnedEstimate2D.rebinXBy";
static const char __pyx_k_BinnedEstimate2D_rebinXTo[] = "BinnedEstimate2D.rebinXTo";
static const char __pyx_k_BinnedEstimate2D_rebinYBy[] = "BinnedEstimate2D.rebinYBy";
static const char __pyx_k_BinnedEstimate2D_rebinYTo[] = "BinnedEstimate2D.rebinYTo";
static const char __pyx_k_BinnedEstimate3D_divideBy[] = "BinnedEstimate3D.divideBy";
static const char __pyx_k_BinnedEstimate3D_isMasked[] = "BinnedEstimate3D.isMasked";
static const char __pyx_k_BinnedEstimate3D_maskBins[] = "BinnedEstimate3D.maskBins";
static const char __pyx_k_BinnedEstimate3D_numBinsX[] = "BinnedEstimate3D.numBinsX";
static const char __pyx_k_BinnedEstimate3D_numBinsY[] = "BinnedEstimate3D.numBinsY";
static const char __pyx_k_BinnedEstimate3D_numBinsZ[] = "BinnedEstimate3D.numBinsZ";
static const char __pyx_k_BinnedEstimate3D_rebinXBy[] = "BinnedEstimate3D.rebinXBy";
static const char __pyx_k_BinnedEstimate3D_rebinXTo[] = "BinnedEstimate3D.rebinXTo";
static const char __pyx_k_BinnedEstimate3D_rebinYBy[] = "BinnedEstimate3D.rebinYBy";
static const char __pyx_k_BinnedEstimate3D_rebinYTo[] = "BinnedEstimate3D.rebinYTo";
static const char __pyx_k_BinnedEstimate3D_rebinZBy[] = "BinnedEstimate3D.rebinZBy";
static const char __pyx_k_BinnedEstimate3D_rebinZTo[] = "BinnedEstimate3D.rebinZTo";
static const char __pyx_k_BinnedHisto1D__global_set[] = "BinnedHisto1D._global_set";
static const char __pyx_k_BinnedHisto1D__set_config[] = "BinnedHisto1D._set_config";
static const char __pyx_k_BinnedHisto2D__global_set[] = "BinnedHisto2D._global_set";
static const char __pyx_k_BinnedHisto2D__set_config[] = "BinnedHisto2D._set_config";
static const char __pyx_k_BinnedHisto3D__global_set[] = "BinnedHisto3D._global_set";
static const char __pyx_k_BinnedHisto3D__set_config[] = "BinnedHisto3D._set_config";
static const char __pyx_k_BinnedProfile1D_isVisible[] = "BinnedProfile1D.isVisible";
static const char __pyx_k_BinnedProfile1D_maskBinAt[] = "BinnedProfile1D.maskBinAt";
static const char __pyx_k_BinnedProfile1D_maskSlice[] = "BinnedProfile1D.maskSlice";
static const char __pyx_k_BinnedProfile1D_mkScatter[] = "BinnedProfile1D.mkScatter";
static const char __pyx_k_BinnedProfile1D_normalize[] = "BinnedProfile1D.normalize";
static const char __pyx_k_BinnedProfile1D_xVariance[] = "BinnedProfile1D.xVariance";
static const char __pyx_k_BinnedProfile2D_isVisible[] = "BinnedProfile2D.isVisible";
static const char __pyx_k_BinnedProfile2D_maskBinAt[] = "BinnedProfile2D.maskBinAt";
static const char __pyx_k_BinnedProfile2D_maskSlice[] = "BinnedProfile2D.maskSlice";
static const char __pyx_k_BinnedProfile2D_mkScatter[] = "BinnedProfile2D.mkScatter";
static const char __pyx_k_BinnedProfile2D_normalize[] = "BinnedProfile2D.normalize";
static const char __pyx_k_BinnedProfile2D_xVariance[] = "BinnedProfile2D.xVariance";
static const char __pyx_k_BinnedProfile2D_yVariance[] = "BinnedProfile2D.yVariance";
static const char __pyx_k_Counter___setstate_cython[] = "Counter.__setstate_cython__";
static const char __pyx_k_Estimate0D_relTotalErrNeg[] = "Estimate0D.relTotalErrNeg";
static const char __pyx_k_Estimate0D_relTotalErrPos[] = "Estimate0D.relTotalErrPos";
static const char __pyx_k_Estimate_serializeSources[] = "Estimate.serializeSources";
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_Point4D___setstate_cython[] = "Point4D.__setstate_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_deserializeMeta[] = "Scatter1D.deserializeMeta";
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_deserializeMeta[] = "Scatter2D.deserializeMeta";
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_Scatter3D_deserializeMeta[] = "Scatter3D.deserializeMeta";
static const char __pyx_k_Scatter4D___reduce_cython[] = "Scatter4D.__reduce_cython__";
static const char __pyx_k_Scatter4D__addPoint_point[] = "_Scatter4D__addPoint_point";
static const char __pyx_k_Scatter4D_deserializeMeta[] = "Scatter4D.deserializeMeta";
static const char __pyx_k_AnalysisObject_annotations[] = "AnalysisObject.annotations";
static const char __pyx_k_Axis__init2_locals_genexpr[] = "_Axis__init2.<locals>.genexpr";
static const char __pyx_k_BinnedEstimate1D_isVisible[] = "BinnedEstimate1D.isVisible";
static const char __pyx_k_BinnedEstimate1D_maskBinAt[] = "BinnedEstimate1D.maskBinAt";
static const char __pyx_k_BinnedEstimate1D_maskSlice[] = "BinnedEstimate1D.maskSlice";
static const char __pyx_k_BinnedEstimate1D_mkScatter[] = "BinnedEstimate1D.mkScatter";
static const char __pyx_k_BinnedEstimate2D_isVisible[] = "BinnedEstimate2D.isVisible";
static const char __pyx_k_BinnedEstimate2D_maskBinAt[] = "BinnedEstimate2D.maskBinAt";
static const char __pyx_k_BinnedEstimate2D_maskSlice[] = "BinnedEstimate2D.maskSlice";
static const char __pyx_k_BinnedEstimate2D_mkScatter[] = "BinnedEstimate2D.mkScatter";
static const char __pyx_k_BinnedEstimate3D_isVisible[] = "BinnedEstimate3D.isVisible";
static const char __pyx_k_BinnedEstimate3D_maskBinAt[] = "BinnedEstimate3D.maskBinAt";
static const char __pyx_k_BinnedEstimate3D_maskSlice[] = "BinnedEstimate3D.maskSlice";
static const char __pyx_k_BinnedEstimate3D_mkScatter[] = "BinnedEstimate3D.mkScatter";
static const char __pyx_k_BinnedHisto1D_densityError[] = "BinnedHisto1D.densityError";
static const char __pyx_k_BinnedHisto2D_densityError[] = "BinnedHisto2D.densityError";
static const char __pyx_k_BinnedHisto3D_densityError[] = "BinnedHisto3D.densityError";
static const char __pyx_k_BinnedProfile1D__local_set[] = "BinnedProfile1D._local_set";
static const char __pyx_k_BinnedProfile1D_densitySum[] = "BinnedProfile1D.densitySum";
static const char __pyx_k_BinnedProfile1D_lengthMeta[] = "BinnedProfile1D.lengthMeta";
static const char __pyx_k_BinnedProfile1D_maskedBins[] = "BinnedProfile1D.maskedBins";
static const char __pyx_k_BinnedProfile1D_maxDensity[] = "BinnedProfile1D.maxDensity";
static const char __pyx_k_BinnedProfile1D_mkEstimate[] = "BinnedProfile1D.mkEstimate";
static const char __pyx_k_BinnedProfile1D_numEntries[] = "BinnedProfile1D.numEntries";
static const char __pyx_k_BinnedProfile2D__local_set[] = "BinnedProfile2D._local_set";
static const char __pyx_k_BinnedProfile2D_densitySum[] = "BinnedProfile2D.densitySum";
static const char __pyx_k_BinnedProfile2D_lengthMeta[] = "BinnedProfile2D.lengthMeta";
static const char __pyx_k_BinnedProfile2D_maskedBins[] = "BinnedProfile2D.maskedBins";
static const char __pyx_k_BinnedProfile2D_maxDensity[] = "BinnedProfile2D.maxDensity";
static const char __pyx_k_BinnedProfile2D_mkEstimate[] = "BinnedProfile2D.mkEstimate";
static const char __pyx_k_BinnedProfile2D_numEntries[] = "BinnedProfile2D.numEntries";
static const char __pyx_k_Counter_deserializeContent[] = "Counter.deserializeContent";
static const char __pyx_k_Estimate0D___reduce_cython[] = "Estimate0D.__reduce_cython__";
static const char __pyx_k_Estimate0D_deserializeMeta[] = "Estimate0D.deserializeMeta";
static const char __pyx_k_Estimate___setstate_cython[] = "Estimate.__setstate_cython__";
static const char __pyx_k_Scatter1D___addPoint_point[] = "Scatter1D.__addPoint_point";
static const char __pyx_k_Scatter1D_serializeContent[] = "Scatter1D.serializeContent";
static const char __pyx_k_Scatter2D___addPoint_point[] = "Scatter2D.__addPoint_point";
static const char __pyx_k_Scatter2D_serializeContent[] = "Scatter2D.serializeContent";
static const char __pyx_k_Scatter3D___addPoint_point[] = "Scatter3D.__addPoint_point";
static const char __pyx_k_Scatter3D_serializeContent[] = "Scatter3D.serializeContent";
static const char __pyx_k_Scatter4D___addPoint_point[] = "Scatter4D.__addPoint_point";
static const char __pyx_k_Scatter4D_serializeContent[] = "Scatter4D.serializeContent";
static const char __pyx_k_include_AnalysisObject_pyx[] = "include/AnalysisObject.pyx";
static const char __pyx_k_include_generated_Axis_pyx[] = "include/generated/Axis.pyx";
static const char __pyx_k_A_bin_content_wrapper_in_1D[] = "A bin-content wrapper in 1D.";
static const char __pyx_k_A_bin_content_wrapper_in_2D[] = "A bin-content wrapper in 2D.";
static const char __pyx_k_A_bin_content_wrapper_in_3D[] = "A bin-content wrapper in 3D.";
static const char __pyx_k_AnalysisObject_rmAnnotation[] = "AnalysisObject.rmAnnotation";
static const char __pyx_k_Bin1D_locals_BinWrapper_max[] = "Bin1D.<locals>.BinWrapper.max";
static const char __pyx_k_Bin1D_locals_BinWrapper_mid[] = "Bin1D.<locals>.BinWrapper.mid";
static const char __pyx_k_Bin1D_locals_BinWrapper_min[] = "Bin1D.<locals>.BinWrapper.min";
static const char __pyx_k_Bin2D_locals_BinWrapper_max[] = "Bin2D.<locals>.BinWrapper.max";
static const char __pyx_k_Bin2D_locals_BinWrapper_mid[] = "Bin2D.<locals>.BinWrapper.mid";
static const char __pyx_k_Bin2D_locals_BinWrapper_min[] = "Bin2D.<locals>.BinWrapper.min";
static const char __pyx_k_Bin3D_locals_BinWrapper_max[] = "Bin3D.<locals>.BinWrapper.max";
static const char __pyx_k_Bin3D_locals_BinWrapper_mid[] = "Bin3D.<locals>.BinWrapper.mid";
static const char __pyx_k_Bin3D_locals_BinWrapper_min[] = "Bin3D.<locals>.BinWrapper.min";
static const char __pyx_k_BinnedEstimate1D__local_set[] = "BinnedEstimate1D._local_set";
static const char __pyx_k_BinnedEstimate1D_lengthMeta[] = "BinnedEstimate1D.lengthMeta";
static const char __pyx_k_BinnedEstimate1D_maskedBins[] = "BinnedEstimate1D.maskedBins";
static const char __pyx_k_BinnedEstimate2D__local_set[] = "BinnedEstimate2D._local_set";
static const char __pyx_k_BinnedEstimate2D_lengthMeta[] = "BinnedEstimate2D.lengthMeta";
static const char __pyx_k_BinnedEstimate2D_maskedBins[] = "BinnedEstimate2D.maskedBins";
static const char __pyx_k_BinnedEstimate3D__local_set[] = "BinnedEstimate3D._local_set";
static const char __pyx_k_BinnedEstimate3D_lengthMeta[] = "BinnedEstimate3D.lengthMeta";
static const char __pyx_k_BinnedEstimate3D_maskedBins[] = "BinnedEstimate3D.maskedBins";
static const char __pyx_k_BinnedHisto1D_effNumEntries[] = "BinnedHisto1D.effNumEntries";
static const char __pyx_k_BinnedHisto1D_integralError[] = "BinnedHisto1D.integralError";
static const char __pyx_k_BinnedHisto1D_lengthContent[] = "BinnedHisto1D.lengthContent";
static const char __pyx_k_BinnedHisto1D_serializeMeta[] = "BinnedHisto1D.serializeMeta";
static const char __pyx_k_BinnedHisto2D_effNumEntries[] = "BinnedHisto2D.effNumEntries";
static const char __pyx_k_BinnedHisto2D_integralError[] = "BinnedHisto2D.integralError";
static const char __pyx_k_BinnedHisto2D_lengthContent[] = "BinnedHisto2D.lengthContent";
static const char __pyx_k_BinnedHisto2D_serializeMeta[] = "BinnedHisto2D.serializeMeta";
static const char __pyx_k_BinnedHisto3D_effNumEntries[] = "BinnedHisto3D.effNumEntries";
static const char __pyx_k_BinnedHisto3D_integralError[] = "BinnedHisto3D.integralError";
static const char __pyx_k_BinnedHisto3D_lengthContent[] = "BinnedHisto3D.lengthContent";
static const char __pyx_k_BinnedHisto3D_serializeMeta[] = "BinnedHisto3D.serializeMeta";
static const char __pyx_k_BinnedProfile1D__global_set[] = "BinnedProfile1D._global_set";
static const char __pyx_k_BinnedProfile1D__set_config[] = "BinnedProfile1D._set_config";
static const char __pyx_k_BinnedProfile2D__global_set[] = "BinnedProfile2D._global_set";
static const char __pyx_k_BinnedProfile2D__set_config[] = "BinnedProfile2D._set_config";
static const char __pyx_k_Estimate0D_serializeContent[] = "Estimate0D.serializeContent";
static const char __pyx_k_Estimate_deserializeSources[] = "Estimate.deserializeSources";
static const char __pyx_k_Point4D_v1_g_v2_g_v3_g_v4_g[] = "<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>";
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_Scatter3D___setstate_cython[] = "Scatter3D.__setstate_cython__";
static const char __pyx_k_Scatter4D___setstate_cython[] = "Scatter4D.__setstate_cython__";
static const char __pyx_k_include_generated_Bin1D_pyx[] = "include/generated/Bin1D.pyx";
static const char __pyx_k_include_generated_Bin2D_pyx[] = "include/generated/Bin2D.pyx";
static const char __pyx_k_include_generated_Bin3D_pyx[] = "include/generated/Bin3D.pyx";
static const char __pyx_k_include_generated_Dbn1D_pyx[] = "include/generated/Dbn1D.pyx";
static const char __pyx_k_include_generated_Dbn2D_pyx[] = "include/generated/Dbn2D.pyx";
static const char __pyx_k_include_generated_Dbn3D_pyx[] = "include/generated/Dbn3D.pyx";
static const char __pyx_k_AnalysisObject_hasAnnotation[] = "AnalysisObject.hasAnnotation";
static const char __pyx_k_AnalysisObject_setAnnotation[] = "AnalysisObject.setAnnotation";
static const char __pyx_k_Bin1D_locals_BinWrapper_dLen[] = "Bin1D.<locals>.BinWrapper.dLen";
static const char __pyx_k_Bin1D_locals_BinWrapper_dVol[] = "Bin1D.<locals>.BinWrapper.dVol";
static const char __pyx_k_Bin1D_locals_BinWrapper_edge[] = "Bin1D.<locals>.BinWrapper.edge";
static const char __pyx_k_Bin1D_locals_BinWrapper_xMax[] = "Bin1D.<locals>.BinWrapper.xMax";
static const char __pyx_k_Bin1D_locals_BinWrapper_xMid[] = "Bin1D.<locals>.BinWrapper.xMid";
static const char __pyx_k_Bin1D_locals_BinWrapper_xMin[] = "Bin1D.<locals>.BinWrapper.xMin";
static const char __pyx_k_Bin2D_locals_BinWrapper_dVol[] = "Bin2D.<locals>.BinWrapper.dVol";
static const char __pyx_k_Bin2D_locals_BinWrapper_edge[] = "Bin2D.<locals>.BinWrapper.edge";
static const char __pyx_k_Bin2D_locals_BinWrapper_xMax[] = "Bin2D.<locals>.BinWrapper.xMax";
static const char __pyx_k_Bin2D_locals_BinWrapper_xMid[] = "Bin2D.<locals>.BinWrapper.xMid";
static const char __pyx_k_Bin2D_locals_BinWrapper_xMin[] = "Bin2D.<locals>.BinWrapper.xMin";
static const char __pyx_k_Bin2D_locals_BinWrapper_yMax[] = "Bin2D.<locals>.BinWrapper.yMax";
static const char __pyx_k_Bin2D_locals_BinWrapper_yMid[] = "Bin2D.<locals>.BinWrapper.yMid";
static const char __pyx_k_Bin2D_locals_BinWrapper_yMin[] = "Bin2D.<locals>.BinWrapper.yMin";
static const char __pyx_k_Bin3D_locals_BinWrapper_dVol[] = "Bin3D.<locals>.BinWrapper.dVol";
static const char __pyx_k_Bin3D_locals_BinWrapper_edge[] = "Bin3D.<locals>.BinWrapper.edge";
static const char __pyx_k_Bin3D_locals_BinWrapper_xMax[] = "Bin3D.<locals>.BinWrapper.xMax";
static const char __pyx_k_Bin3D_locals_BinWrapper_xMid[] = "Bin3D.<locals>.BinWrapper.xMid";
static const char __pyx_k_Bin3D_locals_BinWrapper_xMin[] = "Bin3D.<locals>.BinWrapper.xMin";
static const char __pyx_k_Bin3D_locals_BinWrapper_yMax[] = "Bin3D.<locals>.BinWrapper.yMax";
static const char __pyx_k_Bin3D_locals_BinWrapper_yMid[] = "Bin3D.<locals>.BinWrapper.yMid";
static const char __pyx_k_Bin3D_locals_BinWrapper_yMin[] = "Bin3D.<locals>.BinWrapper.yMin";
static const char __pyx_k_Bin3D_locals_BinWrapper_zMax[] = "Bin3D.<locals>.BinWrapper.zMax";
static const char __pyx_k_Bin3D_locals_BinWrapper_zMid[] = "Bin3D.<locals>.BinWrapper.zMid";
static const char __pyx_k_Bin3D_locals_BinWrapper_zMin[] = "Bin3D.<locals>.BinWrapper.zMin";
static const char __pyx_k_BinnedEstimate1D__global_set[] = "BinnedEstimate1D._global_set";
static const char __pyx_k_BinnedEstimate1D__set_config[] = "BinnedEstimate1D._set_config";
static const char __pyx_k_BinnedEstimate2D__global_set[] = "BinnedEstimate2D._global_set";
static const char __pyx_k_BinnedEstimate2D__set_config[] = "BinnedEstimate2D._set_config";
static const char __pyx_k_BinnedEstimate3D__global_set[] = "BinnedEstimate3D._global_set";
static const char __pyx_k_BinnedEstimate3D__set_config[] = "BinnedEstimate3D._set_config";
static const char __pyx_k_BinnedProfile1D_densityError[] = "BinnedProfile1D.densityError";
static const char __pyx_k_BinnedProfile2D_densityError[] = "BinnedProfile2D.densityError";
static const char __pyx_k_Dynamic_ptr_cast_failed_Next[] = "Dynamic ptr cast failed. Next...";
static const char __pyx_k_Estimate0D___setstate_cython[] = "Estimate0D.__setstate_cython__";
static const char __pyx_k_Scatter1D__addPoint_explicit[] = "_Scatter1D__addPoint_explicit";
static const char __pyx_k_Scatter1D_deserializeContent[] = "Scatter1D.deserializeContent";
static const char __pyx_k_Scatter2D__addPoint_explicit[] = "_Scatter2D__addPoint_explicit";
static const char __pyx_k_Scatter2D_deserializeContent[] = "Scatter2D.deserializeContent";
static const char __pyx_k_Scatter3D__addPoint_explicit[] = "_Scatter3D__addPoint_explicit";
static const char __pyx_k_Scatter3D_deserializeContent[] = "Scatter3D.deserializeContent";
static const char __pyx_k_Scatter4D__addPoint_explicit[] = "_Scatter4D__addPoint_explicit";
static const char __pyx_k_Scatter4D_deserializeContent[] = "Scatter4D.deserializeContent";
static const char __pyx_k_Bin1D_locals_BinWrapper_index[] = "Bin1D.<locals>.BinWrapper.index";
static const char __pyx_k_Bin1D_locals_BinWrapper_width[] = "Bin1D.<locals>.BinWrapper.width";
static const char __pyx_k_Bin1D_locals_BinWrapper_xEdge[] = "Bin1D.<locals>.BinWrapper.xEdge";
static const char __pyx_k_Bin2D_locals_BinWrapper_dArea[] = "Bin2D.<locals>.BinWrapper.dArea";
static const char __pyx_k_Bin2D_locals_BinWrapper_index[] = "Bin2D.<locals>.BinWrapper.index";
static const char __pyx_k_Bin2D_locals_BinWrapper_width[] = "Bin2D.<locals>.BinWrapper.width";
static const char __pyx_k_Bin2D_locals_BinWrapper_xEdge[] = "Bin2D.<locals>.BinWrapper.xEdge";
static const char __pyx_k_Bin2D_locals_BinWrapper_yEdge[] = "Bin2D.<locals>.BinWrapper.yEdge";
static const char __pyx_k_Bin3D_locals_BinWrapper_index[] = "Bin3D.<locals>.BinWrapper.index";
static const char __pyx_k_Bin3D_locals_BinWrapper_width[] = "Bin3D.<locals>.BinWrapper.width";
static const char __pyx_k_Bin3D_locals_BinWrapper_xEdge[] = "Bin3D.<locals>.BinWrapper.xEdge";
static const char __pyx_k_Bin3D_locals_BinWrapper_yEdge[] = "Bin3D.<locals>.BinWrapper.yEdge";
static const char __pyx_k_Bin3D_locals_BinWrapper_zEdge[] = "Bin3D.<locals>.BinWrapper.zEdge";
static const char __pyx_k_BinnedHisto1D___reduce_cython[] = "BinnedHisto1D.__reduce_cython__";
static const char __pyx_k_BinnedHisto1D_deserializeMeta[] = "BinnedHisto1D.deserializeMeta";
static const char __pyx_k_BinnedHisto2D___reduce_cython[] = "BinnedHisto2D.__reduce_cython__";
static const char __pyx_k_BinnedHisto2D_deserializeMeta[] = "BinnedHisto2D.deserializeMeta";
static const char __pyx_k_BinnedHisto3D___reduce_cython[] = "BinnedHisto3D.__reduce_cython__";
static const char __pyx_k_BinnedHisto3D_deserializeMeta[] = "BinnedHisto3D.deserializeMeta";
static const char __pyx_k_BinnedProfile1D_effNumEntries[] = "BinnedProfile1D.effNumEntries";
static const char __pyx_k_BinnedProfile1D_integralError[] = "BinnedProfile1D.integralError";
static const char __pyx_k_BinnedProfile1D_lengthContent[] = "BinnedProfile1D.lengthContent";
static const char __pyx_k_BinnedProfile1D_serializeMeta[] = "BinnedProfile1D.serializeMeta";
static const char __pyx_k_BinnedProfile2D_effNumEntries[] = "BinnedProfile2D.effNumEntries";
static const char __pyx_k_BinnedProfile2D_integralError[] = "BinnedProfile2D.integralError";
static const char __pyx_k_BinnedProfile2D_lengthContent[] = "BinnedProfile2D.lengthContent";
static const char __pyx_k_BinnedProfile2D_serializeMeta[] = "BinnedProfile2D.serializeMeta";
static const char __pyx_k_Binning_config_locals_genexpr[] = "Binning.config.<locals>.genexpr";
static const char __pyx_k_Estimate0D_deserializeContent[] = "Estimate0D.deserializeContent";
static const char __pyx_k_Point1D__init2_locals_genexpr[] = "_Point1D__init2.<locals>.genexpr";
static const char __pyx_k_Point2D__init2_locals_genexpr[] = "_Point2D__init2.<locals>.genexpr";
static const char __pyx_k_Point3D__init2_locals_genexpr[] = "_Point3D__init2.<locals>.genexpr";
static const char __pyx_k_Point4D__init2_locals_genexpr[] = "_Point4D__init2.<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_Scatter4D___addPoint_explicit[] = "Scatter4D.__addPoint_explicit";
static const char __pyx_k_Unknown_edge_type_encountered[] = "Unknown edge type encountered!";
static const char __pyx_k_include_generated_Point1D_pyx[] = "include/generated/Point1D.pyx";
static const char __pyx_k_include_generated_Point2D_pyx[] = "include/generated/Point2D.pyx";
static const char __pyx_k_include_generated_Point3D_pyx[] = "include/generated/Point3D.pyx";
static const char __pyx_k_include_generated_Point4D_pyx[] = "include/generated/Point4D.pyx";
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_Bin1D_locals_BinWrapper___init[] = "Bin1D.<locals>.BinWrapper.__init__";
static const char __pyx_k_Bin1D_locals_BinWrapper_attach[] = "Bin1D.<locals>.BinWrapper.attach";
static const char __pyx_k_Bin1D_locals_BinWrapper_xWidth[] = "Bin1D.<locals>.BinWrapper.xWidth";
static const char __pyx_k_Bin2D_locals_BinWrapper___init[] = "Bin2D.<locals>.BinWrapper.__init__";
static const char __pyx_k_Bin2D_locals_BinWrapper_attach[] = "Bin2D.<locals>.BinWrapper.attach";
static const char __pyx_k_Bin2D_locals_BinWrapper_xWidth[] = "Bin2D.<locals>.BinWrapper.xWidth";
static const char __pyx_k_Bin2D_locals_BinWrapper_yWidth[] = "Bin2D.<locals>.BinWrapper.yWidth";
static const char __pyx_k_Bin3D_locals_BinWrapper___init[] = "Bin3D.<locals>.BinWrapper.__init__";
static const char __pyx_k_Bin3D_locals_BinWrapper_attach[] = "Bin3D.<locals>.BinWrapper.attach";
static const char __pyx_k_Bin3D_locals_BinWrapper_xWidth[] = "Bin3D.<locals>.BinWrapper.xWidth";
static const char __pyx_k_Bin3D_locals_BinWrapper_yWidth[] = "Bin3D.<locals>.BinWrapper.yWidth";
static const char __pyx_k_Bin3D_locals_BinWrapper_zWidth[] = "Bin3D.<locals>.BinWrapper.zWidth";
static const char __pyx_k_BinnedEstimate1D__init2_locals[] = "_BinnedEstimate1D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedEstimate1D_lengthContent[] = "BinnedEstimate1D.lengthContent";
static const char __pyx_k_BinnedEstimate1D_serializeMeta[] = "BinnedEstimate1D.serializeMeta";
static const char __pyx_k_BinnedEstimate2D__init2_locals[] = "_BinnedEstimate2D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedEstimate2D_lengthContent[] = "BinnedEstimate2D.lengthContent";
static const char __pyx_k_BinnedEstimate2D_serializeMeta[] = "BinnedEstimate2D.serializeMeta";
static const char __pyx_k_BinnedEstimate3D__init2_locals[] = "_BinnedEstimate3D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedEstimate3D_lengthContent[] = "BinnedEstimate3D.lengthContent";
static const char __pyx_k_BinnedEstimate3D_serializeMeta[] = "BinnedEstimate3D.serializeMeta";
static const char __pyx_k_BinnedHisto1D_serializeContent[] = "BinnedHisto1D.serializeContent";
static const char __pyx_k_BinnedHisto2D_serializeContent[] = "BinnedHisto2D.serializeContent";
static const char __pyx_k_BinnedHisto3D_serializeContent[] = "BinnedHisto3D.serializeContent";
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_BinnedEstimate1D_areaUnderCurve[] = "BinnedEstimate1D.areaUnderCurve";
static const char __pyx_k_BinnedEstimate2D_areaUnderCurve[] = "BinnedEstimate2D.areaUnderCurve";
static const char __pyx_k_BinnedEstimate3D_areaUnderCurve[] = "BinnedEstimate3D.areaUnderCurve";
static const char __pyx_k_BinnedHisto1D___setstate_cython[] = "BinnedHisto1D.__setstate_cython__";
static const char __pyx_k_BinnedHisto1D__init2_locals_gen[] = "_BinnedHisto1D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedHisto2D___setstate_cython[] = "BinnedHisto2D.__setstate_cython__";
static const char __pyx_k_BinnedHisto2D__init2_locals_gen[] = "_BinnedHisto2D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedHisto3D___setstate_cython[] = "BinnedHisto3D.__setstate_cython__";
static const char __pyx_k_BinnedHisto3D__init2_locals_gen[] = "_BinnedHisto3D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedProfile1D___reduce_cython[] = "BinnedProfile1D.__reduce_cython__";
static const char __pyx_k_BinnedProfile1D__init2_locals_g[] = "_BinnedProfile1D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedProfile1D_deserializeMeta[] = "BinnedProfile1D.deserializeMeta";
static const char __pyx_k_BinnedProfile2D___reduce_cython[] = "BinnedProfile2D.__reduce_cython__";
static const char __pyx_k_BinnedProfile2D__init2_locals_g[] = "_BinnedProfile2D__init2.<locals>.genexpr";
static const char __pyx_k_BinnedProfile2D_deserializeMeta[] = "BinnedProfile2D.deserializeMeta";
static const char __pyx_k_Null_pointer_referenced_perhaps[] = "Null pointer referenced: perhaps the class is uninitialised.";
static const char __pyx_k_include_generated_BinnedHisto1D[] = "include/generated/BinnedHisto1D.pyx";
static const char __pyx_k_include_generated_BinnedHisto2D[] = "include/generated/BinnedHisto2D.pyx";
static const char __pyx_k_include_generated_BinnedHisto3D[] = "include/generated/BinnedHisto3D.pyx";
static const char __pyx_k_include_generated_Scatter1D_pyx[] = "include/generated/Scatter1D.pyx";
static const char __pyx_k_include_generated_Scatter2D_pyx[] = "include/generated/Scatter2D.pyx";
static const char __pyx_k_include_generated_Scatter3D_pyx[] = "include/generated/Scatter3D.pyx";
static const char __pyx_k_include_generated_Scatter4D_pyx[] = "include/generated/Scatter4D.pyx";
static const char __pyx_k_AnalysisObject___setstate_cython[] = "AnalysisObject.__setstate_cython__";
static const char __pyx_k_Bin1D_locals_BinWrapper_isMasked[] = "Bin1D.<locals>.BinWrapper.isMasked";
static const char __pyx_k_Bin1D_locals_BinWrapper_setBinni[] = "Bin1D.<locals>.BinWrapper.setBinning";
static const char __pyx_k_Bin1D_locals_BinWrapper_setIndic[] = "Bin1D.<locals>.BinWrapper.setIndices";
static const char __pyx_k_Bin2D_locals_BinWrapper_isMasked[] = "Bin2D.<locals>.BinWrapper.isMasked";
static const char __pyx_k_Bin2D_locals_BinWrapper_setBinni[] = "Bin2D.<locals>.BinWrapper.setBinning";
static const char __pyx_k_Bin2D_locals_BinWrapper_setIndic[] = "Bin2D.<locals>.BinWrapper.setIndices";
static const char __pyx_k_Bin3D_locals_BinWrapper_isMasked[] = "Bin3D.<locals>.BinWrapper.isMasked";
static const char __pyx_k_Bin3D_locals_BinWrapper_setBinni[] = "Bin3D.<locals>.BinWrapper.setBinning";
static const char __pyx_k_Bin3D_locals_BinWrapper_setIndic[] = "Bin3D.<locals>.BinWrapper.setIndices";
static const char __pyx_k_BinnedEstimate1D___reduce_cython[] = "BinnedEstimate1D.__reduce_cython__";
static const char __pyx_k_BinnedEstimate1D___setstate_cyth[] = "BinnedEstimate1D.__setstate_cython__";
static const char __pyx_k_BinnedEstimate1D_covarianceMatri[] = "BinnedEstimate1D.covarianceMatrix";
static const char __pyx_k_BinnedEstimate1D_deserializeCont[] = "BinnedEstimate1D.deserializeContent";
static const char __pyx_k_BinnedEstimate1D_deserializeMeta[] = "BinnedEstimate1D.deserializeMeta";
static const char __pyx_k_BinnedEstimate1D_localToGlobalIn[] = "BinnedEstimate1D.localToGlobalIndex";
static const char __pyx_k_BinnedEstimate1D_serializeConten[] = "BinnedEstimate1D.serializeContent";
static const char __pyx_k_BinnedEstimate2D___reduce_cython[] = "BinnedEstimate2D.__reduce_cython__";
static const char __pyx_k_BinnedEstimate2D___setstate_cyth[] = "BinnedEstimate2D.__setstate_cython__";
static const char __pyx_k_BinnedEstimate2D_covarianceMatri[] = "BinnedEstimate2D.covarianceMatrix";
static const char __pyx_k_BinnedEstimate2D_deserializeCont[] = "BinnedEstimate2D.deserializeContent";
static const char __pyx_k_BinnedEstimate2D_deserializeMeta[] = "BinnedEstimate2D.deserializeMeta";
static const char __pyx_k_BinnedEstimate2D_localToGlobalIn[] = "BinnedEstimate2D.localToGlobalIndex";
static const char __pyx_k_BinnedEstimate2D_serializeConten[] = "BinnedEstimate2D.serializeContent";
static const char __pyx_k_BinnedEstimate3D___reduce_cython[] = "BinnedEstimate3D.__reduce_cython__";
static const char __pyx_k_BinnedEstimate3D___setstate_cyth[] = "BinnedEstimate3D.__setstate_cython__";
static const char __pyx_k_BinnedEstimate3D_covarianceMatri[] = "BinnedEstimate3D.covarianceMatrix";
static const char __pyx_k_BinnedEstimate3D_deserializeCont[] = "BinnedEstimate3D.deserializeContent";
static const char __pyx_k_BinnedEstimate3D_deserializeMeta[] = "BinnedEstimate3D.deserializeMeta";
static const char __pyx_k_BinnedEstimate3D_localToGlobalIn[] = "BinnedEstimate3D.localToGlobalIndex";
static const char __pyx_k_BinnedEstimate3D_serializeConten[] = "BinnedEstimate3D.serializeContent";
static const char __pyx_k_BinnedHisto1D_deserializeContent[] = "BinnedHisto1D.deserializeContent";
static const char __pyx_k_BinnedHisto1D_localToGlobalIndex[] = "BinnedHisto1D.localToGlobalIndex";
static const char __pyx_k_BinnedHisto2D_deserializeContent[] = "BinnedHisto2D.deserializeContent";
static const char __pyx_k_BinnedHisto2D_localToGlobalIndex[] = "BinnedHisto2D.localToGlobalIndex";
static const char __pyx_k_BinnedHisto3D_deserializeContent[] = "BinnedHisto3D.deserializeContent";
static const char __pyx_k_BinnedHisto3D_localToGlobalIndex[] = "BinnedHisto3D.localToGlobalIndex";
static const char __pyx_k_BinnedProfile1D___setstate_cytho[] = "BinnedProfile1D.__setstate_cython__";
static const char __pyx_k_BinnedProfile1D_deserializeConte[] = "BinnedProfile1D.deserializeContent";
static const char __pyx_k_BinnedProfile1D_localToGlobalInd[] = "BinnedProfile1D.localToGlobalIndex";
static const char __pyx_k_BinnedProfile1D_serializeContent[] = "BinnedProfile1D.serializeContent";
static const char __pyx_k_BinnedProfile2D___setstate_cytho[] = "BinnedProfile2D.__setstate_cython__";
static const char __pyx_k_BinnedProfile2D_deserializeConte[] = "BinnedProfile2D.deserializeContent";
static const char __pyx_k_BinnedProfile2D_localToGlobalInd[] = "BinnedProfile2D.localToGlobalIndex";
static const char __pyx_k_BinnedProfile2D_serializeContent[] = "BinnedProfile2D.serializeContent";
static const char __pyx_k_Histograms_must_be_of_the_same_t[] = "Histograms must be of the same type to be divided";
static const char __pyx_k_Only_division_of_BinnedHisto_Bin[] = "Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!";
static const char __pyx_k_Unknown_axis_combination_encount[] = "Unknown axis combination encountered!";
static const char __pyx_k_WARNING_method_not_supported_for[] = "WARNING: method not supported for this axis type!";
static const char __pyx_k_include_generated_BinnedEstimate[] = "include/generated/BinnedEstimate1D.pyx";
static const char __pyx_k_include_generated_BinnedProfile1[] = "include/generated/BinnedProfile1D.pyx";
static const char __pyx_k_include_generated_BinnedProfile2[] = "include/generated/BinnedProfile2D.pyx";
static const char __pyx_k_self__ptr_cannot_be_converted_to[] = "self._ptr cannot be converted to a Python object for pickling";
static const char __pyx_k_include_generated_BinnedEstimate_2[] = "include/generated/BinnedEstimate2D.pyx";
static const char __pyx_k_include_generated_BinnedEstimate_3[] = "include/generated/BinnedEstimate3D.pyx";
/* #### 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_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_20name(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_22path(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_24setPath(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_26title(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_28setTitle(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_30axisConfig(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* 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 PyObject *__pyx_pf_4yoda_4core_7Binning___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_6config_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_2config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_4width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_6max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_8min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_10mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Binning_12edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index); /* 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_10set(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_12numEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_14effNumEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_16sumW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_18sumW2(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_20val(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_22err(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_24relErr(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_26scaleW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_28mkEstimate(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_30mkScatter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_32divideBy(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_34lengthContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_36serializeContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_38deserializeContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_40lengthMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_42serializeMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_44deserializeMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_46__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_48__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_50__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_52__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_54__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_56__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_58__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_60__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn0D___init__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_2__repr__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_4copy(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_6reset(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_8set(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2); /* 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 int __pyx_pf_4yoda_4core_8Estimate___init__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_2copy(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_4setVal(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_6setErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_8set(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_errs, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_10reset(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_12val(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_14valMax(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_16valMin(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_18errDownUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_20err(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_22errNegPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_24errDown(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_26errUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_28errNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_30errPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_32errAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_34errEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_36relErrDownUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_38relErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_40relErrDown(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_42relErrUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_44relErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_46relErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_48quadSum(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_50quadSumNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_52quadSumPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_54quadSumAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_56quadSumEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_58totalErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_60totalErrNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_62totalErrPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_64totalErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_66totalErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_68relTotalErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_70relTotalErrNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_72relTotalErrPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_74relTotalErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_76relTotalErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_78hasSource(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_80sources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_82numErrs(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_84rmSource(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_86rmErrs(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_88serializeSources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_90deserializeSources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_92scale(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_94__repr__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_96__add__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_98__sub__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_100__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8Estimate_102__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_10Estimate0D___init__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_2__repr__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_4clone(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_6setVal(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_8setErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_10set(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_errs, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_12reset(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_14val(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_16errDownUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_18err(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_20errNegPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_22errDown(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_24errUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_26errNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_28errPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_30relErrDownUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_32relErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_34relErrDown(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_36relErrUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_38quadSum(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_40quadSumNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_42quadSumPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_44totalErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_46relTotalErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_48relTotalErrNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_50relTotalErrPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_52hasSource(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_54__iadd__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_56__isub__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_58sources(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_60numErrs(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_62rmSource(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_64rmErrs(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_66lengthContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_68serializeContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_70deserializeContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_72lengthMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_74serializeMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_76deserializeMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_78scale(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_80mkScatter(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_82__add__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_84__sub__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_86__div__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_88__truediv__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_90__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_92__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8divide(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao1, PyObject *__pyx_v_ao2, PyObject *__pyx_v_efficiency); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10efficiency(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_20effNumEntries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_22mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample); /* proto */
static PyObject *__pyx_pf_4yoda_4core_24mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_26variance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_28stdDev(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_30stdErr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_32RMS(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights); /* proto */
static PyObject *__pyx_pf_4yoda_4core_34covariance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_36correlation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_68__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_38naiveChi2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2, PyObject *__pyx_v_errors1, PyObject *__pyx_v_errors2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_70__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_40naiveChi2reduced(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2, PyObject *__pyx_v_errors1, PyObject *__pyx_v_errors2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_42_prep_patterns(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_patterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_44_mapTypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cpptype); /* proto */
static PyObject *__pyx_pf_4yoda_4core_46_bytestr_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename); /* proto */
static PyObject *__pyx_pf_4yoda_4core_48_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_50_istxt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_52_mktxtifstr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_54read(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_56readYODA(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_58readFLAT(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_60write(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_62writeYODA(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_64writeYODA1(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_66writeFLAT(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision); /* 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_8setErr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_10setErrs(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_12setErrMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_14setErrPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_16scale(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_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_20__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_4Axis___init__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_2__init1(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_4__init2(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_6numBins(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_8type(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_10index(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_edge); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_12width(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_14max(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_16min(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_18mid(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_20edge(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_22__repr__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_5axisT___get__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_4Axis_5axisT_2__set__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_4Axis_5axisT_4__del__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_24__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4Axis_26__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_8index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_10isMasked(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_24dLen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_26xWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_28xMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_30xMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_32xMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_34xEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_8index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_10isMasked(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_24dArea(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_26xWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_28xMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_30xMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_32xMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_34xEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_36dArea(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_38yWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_40yMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_42yMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_44yMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_46yEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_8index(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_10isMasked(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_24xWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_26xMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_28xMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_30xMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_32xEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_34yWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_36yMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_38yMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_40yMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_42yEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_44zWidth(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_46zMax(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_48zMin(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_50zMid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_52zEdge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate1D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_110__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_112__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_114__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_116__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_118__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_120__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_122__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_124__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate2D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_110numBinsY(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_112yEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_114yWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_116yMin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_118yMax(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_120rebinYBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_122rebinYTo(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_124rebinY(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_126__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_128__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_130__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_132__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_134__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_136__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_138__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_140__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate3D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_54genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_57genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_60genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_63genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_66genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_69genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_72genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_75genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_78genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_81genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_84genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_87genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_90genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_93genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_96genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_99genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_102genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_105genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_108genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_111genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_114genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_117genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_120genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_123genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_126genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_129genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_132genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_135genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_138genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_141genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_144genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_147genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_150genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_153genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_156genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_159genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_162genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_165genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_168genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_171genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_174genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_177genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_180genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_183genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_186genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_189genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_192genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_195genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_198genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_201genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_204genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_207genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_210genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_213genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_216genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_219genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_222genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_225genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_228genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_231genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_234genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_237genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_240genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_edgesA3, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_nbinsZ, PyObject *__pyx_v_lowerZ, PyObject *__pyx_v_upperZ, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate3D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_110numBinsY(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_112yEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_114yWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_116yMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_118yMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_120rebinYBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_122rebinYTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_124rebinY(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_126numBinsZ(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_128zEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_130zWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_132zMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_134zMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_136rebinZBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_138rebinZTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_140rebinZ(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_142__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_144__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_146__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_148__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_150__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_152__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_154__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_156__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto1D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_144__add__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_146__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_148__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_150__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_152__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_154__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_156__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_158__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto2D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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_13BinnedHisto2D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_144numBinsY(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_146yEdges(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_148yWidths(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_150yMin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_152yMax(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_154rebinYBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_156rebinYTo(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_158yMean(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_160yVariance(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_162yStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_164yStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_166yRMS(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_168rebinY(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_170__add__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_172__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_174__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_176__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_178__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_180__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_182__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_184__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto3D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_edgesA3, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_nbinsZ, PyObject *__pyx_v_lowerZ, PyObject *__pyx_v_upperZ, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto3D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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_13BinnedHisto3D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_144numBinsY(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_146yEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_148yWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_150yMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_152yMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_154rebinYBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_156rebinYTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_158yMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_160yVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_162yStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_164yStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_166yRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_168rebinY(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_170numBinsZ(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_172zEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_174zWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_176zMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_178zMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_180rebinZBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_182rebinZTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_184zMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_186zVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_188zStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_190zStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_192zRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_194rebinZ(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_196__add__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_198__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_200__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_202__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_204__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_206__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_208__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_210__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile1D___init__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_16clone(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_24set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_26reset(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_15BinnedProfile1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_38bins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_42bin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_58mkHisto(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_60mkScatter(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_62divideBy(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_64__div__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_66__truediv__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_68_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_70lengthContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_72serializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_74deserializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_76lengthMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_78serializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_80deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_82fill(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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_15BinnedProfile1D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_86fillDim(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_88normalize(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_90scaleW(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_92sumW(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_94sumW2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_96sumWA(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_98sumWA2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_100numEntries(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_102effNumEntries(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_104integral(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_106integralError(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_108dVol(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_110density(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_112densityError(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_114densitySum(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_116maxDensity(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_118maskedBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_120numBinsX(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_122xEdges(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_124xWidths(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_126xMin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_128xMax(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_130rebinXBy(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_132rebinXTo(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_134xMean(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_136xVariance(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_138xStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_140xStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_142xRMS(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_144rebinX(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_146__add__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_148__iadd__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_150__sub__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_152__isub__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_154__eq__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_156__ne__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_158__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_160__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile2D___init__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_16clone(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_24set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_26reset(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_15BinnedProfile2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_38bins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_42bin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_58mkHisto(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_60mkScatter(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_62divideBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_64__div__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_66__truediv__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_68_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_70lengthContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_72serializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_74deserializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_76lengthMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_78serializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_80deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_82fill(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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_15BinnedProfile2D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_86fillDim(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_88normalize(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_90scaleW(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_factor); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_92sumW(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_94sumW2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_96sumWA(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_98sumWA2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_100numEntries(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_102effNumEntries(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_104integral(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_106integralError(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_108dVol(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_110density(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_112densityError(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_114densitySum(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_116maxDensity(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_118maskedBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_120numBinsX(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_122xEdges(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_124xWidths(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_126xMin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_128xMax(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_130rebinXBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_132rebinXTo(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_134xMean(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_136xVariance(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_138xStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_140xStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_142xRMS(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_144rebinX(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_146numBinsY(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_148yEdges(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_150yWidths(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_152yMin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_154yMax(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_156rebinYBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_158rebinYTo(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_160yMean(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_162yVariance(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_164yStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_166yStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_168yRMS(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_170rebinY(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_172__add__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_174__iadd__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_176__sub__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_178__isub__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_180__eq__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_182__ne__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_184__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_186__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn1D___init__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_2__repr__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_4copy(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_6reset(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_8set(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2); /* 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_14scale(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_16numEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_18effNumEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_20sumW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_22sumW2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_24errW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_26relErrW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_28mean(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_30variance(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_36RMS(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_38__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_40__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_42scaleX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_44xMean(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_46xVariance(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_48xStdDev(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_50xStdErr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_52xRMS(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_54sumWX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_56sumWX2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_58__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_60__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn2D___init__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_2__repr__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_4copy(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_6reset(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_8set(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2, PyObject *__pyx_v_sumWcross); /* 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_14scale(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_16numEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_18effNumEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_20sumW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_22sumW2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_24errW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_26relErrW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_28mean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_30variance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_36RMS(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_38__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_40__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_42scaleX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_44xMean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_46xVariance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_48xStdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_50xStdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_52xRMS(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_54sumWX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_56sumWX2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_58scaleY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_60yMean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_62yVariance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_64yStdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_66yStdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_68yRMS(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_70sumWY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_72sumWY2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_74crossTerm(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_76__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_78__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn3D___init__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_2__repr__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_4copy(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_6reset(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_8set(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2, PyObject *__pyx_v_sumWcross); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_10fill(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_12scaleW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_14scale(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_16numEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_18effNumEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_20sumW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_22sumW2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_24errW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_26relErrW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_28mean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_30variance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_36RMS(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_38__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_40__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_42scaleX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_44xMean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_46xVariance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_48xStdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_50xStdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_52xRMS(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_54sumWX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_56sumWX2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_58scaleY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_60yMean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_62yVariance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_64yStdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_66yStdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_68yRMS(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_70sumWY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_72sumWY2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_74crossTerm(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_76scaleZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_78zMean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_80zVariance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_82zStdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_84zStdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_86zRMS(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_88sumWZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_90sumWZ2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_92crossTerm(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_94__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_96__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_7Point1D___init__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_2__init1(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_4__init2(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_6__init3(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_8__init4(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_xErr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_10copy(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_12__repr__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_14val(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_16max(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_18min(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_20errs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_22__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_24setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_26x(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_28setX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_30xErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_32xMin(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_34xMax(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_36xErrMinus(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_38xErrPlus(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_40xErrAvg(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_42scaleX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_44__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_46__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_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_2__init1(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_4__init2(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_6__init3(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp, PyObject *__pyx_v_yErrDn, PyObject *__pyx_v_yErrUp); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_8__init4(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_xErr, PyObject *__pyx_v_yErr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_10copy(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_12__repr__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_14val(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_16max(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_18min(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_20errs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_22__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_24setXErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_26x(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_28setX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_30xErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_32xMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_34xMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_36xErrMinus(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_38xErrPlus(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_40xErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_42scaleX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_44setYErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_46y(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_48setY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_50yErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_52yMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_54yMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_56yErrMinus(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_58yErrPlus(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_60yErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_62scaleY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_64__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_66__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_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_2__init1(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_4__init2(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_6__init3(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_zVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp, PyObject *__pyx_v_yErrDn, PyObject *__pyx_v_yErrUp, PyObject *__pyx_v_zErrDn, PyObject *__pyx_v_zErrUp); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_8__init4(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_zVal, PyObject *__pyx_v_xErr, PyObject *__pyx_v_yErr, PyObject *__pyx_v_zErr); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_10copy(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_12__repr__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_14val(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_16max(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_18min(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_20errs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_22__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_24setXErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_26x(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_28setX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_30xErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_32xMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_34xMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_36xErrMinus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_38xErrPlus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_40xErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_42scaleX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_44setYErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_46y(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_48setY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_50yErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_52yMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_54yMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_56yErrMinus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_58yErrPlus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_60yErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_62scaleY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_64setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_66z(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_68setZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_70zErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_72zMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_74zMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_76zErrMinus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_78zErrPlus(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_80zErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_82scaleZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_84__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_86__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_7Point4D___init__(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_2__init1(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_4__init2(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_6copy(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_8__repr__(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_10val(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_12max(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_14min(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_16errs(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_18__richcmp__(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point4D_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point4D *__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_1(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_2(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__iter__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_10__repr__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_12reset(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_14numPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter1D_16__len__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_18points(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_20point(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_22__getitem__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_24addPoint(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_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_28__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_30addPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_32rmPoint(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_34rmPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_36combineWith(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_38_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_42scale(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_44scaleVal(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_46scaleErr(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_48edges(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_50vals(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_52mins(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_54maxs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_56errs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_72scaleX(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_74xVals(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_76xMins(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_78xMaxs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_80xMin(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_82xMax(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_84xErrs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_86xErrAvgs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_90__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_1(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_2(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__iter__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_10__repr__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_12reset(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_14numPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter2D_16__len__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_18points(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_20point(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_22__getitem__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_24addPoint(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_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_28__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_30addPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_32rmPoint(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_34rmPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_36combineWith(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_38_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_42scale(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_44scaleVal(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_46scaleErr(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_48edges(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_50vals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_52mins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_54maxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_56errs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_72scaleX(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_74xVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_76xMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_78xMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_80xMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_82xMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_84xErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_86xErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_88scaleY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_90yVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_92yMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_94yMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_96yMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_98yMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_100yErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_102yErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_104__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_106__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_1(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_2(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__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__iter__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_10__repr__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_12reset(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_14numPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter3D_16__len__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_18points(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_20point(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_22__getitem__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_24addPoint(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_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_28__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_30addPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_32rmPoint(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_34rmPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_36combineWith(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_38_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_42scale(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_44scaleVal(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_46scaleErr(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_48edges(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_50vals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_52mins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_54maxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_56errs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_72scaleX(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_74xVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_76xMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_78xMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_80xMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_82xMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_84xErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_86xErrAvgs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_88scaleY(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_90yVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_92yMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_94yMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_96yMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_98yMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_100yErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_102yErrAvgs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_104scaleZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_106zVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_108zMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_110zMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_112zMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_114zMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_116zErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_118zErrAvgs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_120__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_122__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Scatter4D___init__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_2__init_1(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_4__init_2(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_6clone(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_8__iter__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_10__repr__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_12reset(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_14numPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter4D_16__len__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_18points(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_20point(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_22__getitem__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_24addPoint(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_28__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_p); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_30addPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_32rmPoint(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_34rmPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_36combineWith(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_38_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_42scale(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_44scaleVal(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_46scaleErr(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_48edges(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_50vals(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_52mins(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_54maxs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_56errs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_fixed_length); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_72__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_74__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* 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_Dbn0D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Estimate(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Estimate0D(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_Axis(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedProfile1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_BinnedProfile2D(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_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_Point4D(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_Scatter4D(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_genexpr(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 PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_9_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_10_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_11_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_12_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_13_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_14_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_15_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_16_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_17_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_18_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_19_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_20_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_21_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_22_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_23_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_24_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_25_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_26_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_27_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_28_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_29_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_30_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_31_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_32_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_33_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_34_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_35_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_36_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_37_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_38_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_39_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_40_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_41_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_42_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_43_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_44_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_45_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_46_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_47_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_48_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_49_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_50_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_51_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_52_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_53_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_54_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_55_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_56_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_57_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_58_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_59_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_60_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_61_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_62_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_63_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_64_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_65_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_66_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_67_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_68_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_69_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_70_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_71_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_72_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_73_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_74_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_75_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_76_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_77_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_78_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_79_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_80_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_81_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_82_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_83_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_84_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_85_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_86_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_87_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_88_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_89_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_90_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_91_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_92_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_93_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_94_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_95_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_96_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_97_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_98_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_99_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_100_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_101_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_102_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_103_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_104_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_105_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_106_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_107_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_108_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_109_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_110_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_111_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_112_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_113_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_114_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_115_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_116_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_117_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_118_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_119_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_120_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_121_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_122_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_123_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_124_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_125_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_126_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_127_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_128_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_129_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_130_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_131_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_132_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_133_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_134_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_135_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_136_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_137_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_138_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_139_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_140_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_141_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_142_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_143_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_144_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_145_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_146_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_147_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_148_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_149_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_150_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_151_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_152_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_153_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_154_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_155_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_156_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_157_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_158_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_159_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_160_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_161_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_162_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_163_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_164_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items = {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_AnalysisObject;
  PyObject *__pyx_type_4yoda_4core_Counter;
  PyObject *__pyx_type_4yoda_4core_Dbn0D;
  PyObject *__pyx_type_4yoda_4core_Estimate;
  PyObject *__pyx_type_4yoda_4core_Estimate0D;
  PyObject *__pyx_type_4yoda_4core_Point;
  PyObject *__pyx_type_4yoda_4core_Axis;
  PyObject *__pyx_type_4yoda_4core_BinnedEstimate1D;
  PyObject *__pyx_type_4yoda_4core_BinnedEstimate2D;
  PyObject *__pyx_type_4yoda_4core_BinnedEstimate3D;
  PyObject *__pyx_type_4yoda_4core_BinnedHisto1D;
  PyObject *__pyx_type_4yoda_4core_BinnedHisto2D;
  PyObject *__pyx_type_4yoda_4core_BinnedHisto3D;
  PyObject *__pyx_type_4yoda_4core_BinnedProfile1D;
  PyObject *__pyx_type_4yoda_4core_BinnedProfile2D;
  PyObject *__pyx_type_4yoda_4core_Dbn1D;
  PyObject *__pyx_type_4yoda_4core_Dbn2D;
  PyObject *__pyx_type_4yoda_4core_Dbn3D;
  PyObject *__pyx_type_4yoda_4core_Point1D;
  PyObject *__pyx_type_4yoda_4core_Point2D;
  PyObject *__pyx_type_4yoda_4core_Point3D;
  PyObject *__pyx_type_4yoda_4core_Point4D;
  PyObject *__pyx_type_4yoda_4core_Scatter1D;
  PyObject *__pyx_type_4yoda_4core_Scatter2D;
  PyObject *__pyx_type_4yoda_4core_Scatter3D;
  PyObject *__pyx_type_4yoda_4core_Scatter4D;
  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_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr;
  #endif
  PyTypeObject *__pyx_ptype_4yoda_4core_AnalysisObject;
  PyTypeObject *__pyx_ptype_4yoda_4core_Counter;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn0D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Estimate;
  PyTypeObject *__pyx_ptype_4yoda_4core_Estimate0D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point;
  PyTypeObject *__pyx_ptype_4yoda_4core_Axis;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedEstimate1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedEstimate2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedEstimate3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedHisto1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedHisto2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedHisto3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedProfile1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_BinnedProfile2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point4D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter4D;
  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_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr;
  PyObject *__pyx_n_s_AO;
  PyObject *__pyx_kp_s_A_bin_content_wrapper_in_1D;
  PyObject *__pyx_kp_s_A_bin_content_wrapper_in_2D;
  PyObject *__pyx_kp_s_A_bin_content_wrapper_in_3D;
  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_axisConfig;
  PyObject *__pyx_n_s_AnalysisObject_clearAnnotations;
  PyObject *__pyx_n_s_AnalysisObject_dim;
  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_Axis;
  PyObject *__pyx_n_s_Axis___init1;
  PyObject *__pyx_n_s_Axis___init2;
  PyObject *__pyx_n_s_Axis___reduce_cython;
  PyObject *__pyx_n_s_Axis___setstate_cython;
  PyObject *__pyx_n_s_Axis__init1;
  PyObject *__pyx_n_s_Axis__init2;
  PyObject *__pyx_n_s_Axis__init2_locals_genexpr;
  PyObject *__pyx_n_s_Axis_edge;
  PyObject *__pyx_n_s_Axis_index;
  PyObject *__pyx_n_s_Axis_max;
  PyObject *__pyx_n_s_Axis_mid;
  PyObject *__pyx_n_s_Axis_min;
  PyObject *__pyx_n_s_Axis_numBins;
  PyObject *__pyx_kp_s_Axis_s;
  PyObject *__pyx_n_s_Axis_type;
  PyObject *__pyx_n_s_Axis_width;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper___init;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_attach;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_dLen;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_dVol;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_edge;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_index;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_isMasked;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_max;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_mid;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_min;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_setBinni;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_setIndic;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_width;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_xEdge;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_xMax;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_xMid;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_xMin;
  PyObject *__pyx_n_s_Bin1D_locals_BinWrapper_xWidth;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper___init;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_attach;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_dArea;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_dVol;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_edge;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_index;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_isMasked;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_max;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_mid;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_min;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_setBinni;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_setIndic;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_width;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_xEdge;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_xMax;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_xMid;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_xMin;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_xWidth;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_yEdge;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_yMax;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_yMid;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_yMin;
  PyObject *__pyx_n_s_Bin2D_locals_BinWrapper_yWidth;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper___init;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_attach;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_dVol;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_edge;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_index;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_isMasked;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_max;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_mid;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_min;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_setBinni;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_setIndic;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_width;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_xEdge;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_xMax;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_xMid;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_xMin;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_xWidth;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_yEdge;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_yMax;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_yMid;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_yMin;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_yWidth;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_zEdge;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_zMax;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_zMid;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_zMin;
  PyObject *__pyx_n_s_Bin3D_locals_BinWrapper_zWidth;
  PyObject *__pyx_n_s_BinWrapper;
  PyObject *__pyx_n_s_Binned;
  PyObject *__pyx_n_s_BinnedEstimate1D;
  PyObject *__pyx_n_s_BinnedEstimate1D___init1;
  PyObject *__pyx_n_s_BinnedEstimate1D___init2;
  PyObject *__pyx_n_s_BinnedEstimate1D___init3;
  PyObject *__pyx_n_s_BinnedEstimate1D___init4;
  PyObject *__pyx_n_s_BinnedEstimate1D___reduce_cython;
  PyObject *__pyx_n_s_BinnedEstimate1D___setstate_cyth;
  PyObject *__pyx_n_s_BinnedEstimate1D__bin;
  PyObject *__pyx_n_s_BinnedEstimate1D__global_set;
  PyObject *__pyx_n_s_BinnedEstimate1D__init1;
  PyObject *__pyx_n_s_BinnedEstimate1D__init2;
  PyObject *__pyx_n_s_BinnedEstimate1D__init2_locals;
  PyObject *__pyx_n_s_BinnedEstimate1D__init3;
  PyObject *__pyx_n_s_BinnedEstimate1D__init4;
  PyObject *__pyx_n_s_BinnedEstimate1D__local_set;
  PyObject *__pyx_n_s_BinnedEstimate1D__mknp;
  PyObject *__pyx_n_s_BinnedEstimate1D__set_config;
  PyObject *__pyx_n_s_BinnedEstimate1D_areaUnderCurve;
  PyObject *__pyx_n_s_BinnedEstimate1D_auc;
  PyObject *__pyx_n_s_BinnedEstimate1D_bin;
  PyObject *__pyx_n_s_BinnedEstimate1D_binAt;
  PyObject *__pyx_n_s_BinnedEstimate1D_binDim;
  PyObject *__pyx_n_s_BinnedEstimate1D_bins;
  PyObject *__pyx_n_s_BinnedEstimate1D_clone;
  PyObject *__pyx_n_s_BinnedEstimate1D_covarianceMatri;
  PyObject *__pyx_n_s_BinnedEstimate1D_deserializeCont;
  PyObject *__pyx_n_s_BinnedEstimate1D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate1D_divideBy;
  PyObject *__pyx_n_s_BinnedEstimate1D_indexAt;
  PyObject *__pyx_n_s_BinnedEstimate1D_isMasked;
  PyObject *__pyx_n_s_BinnedEstimate1D_isVisible;
  PyObject *__pyx_n_s_BinnedEstimate1D_lengthContent;
  PyObject *__pyx_n_s_BinnedEstimate1D_lengthMeta;
  PyObject *__pyx_n_s_BinnedEstimate1D_localToGlobalIn;
  PyObject *__pyx_n_s_BinnedEstimate1D_maskBin;
  PyObject *__pyx_n_s_BinnedEstimate1D_maskBinAt;
  PyObject *__pyx_n_s_BinnedEstimate1D_maskBins;
  PyObject *__pyx_n_s_BinnedEstimate1D_maskSlice;
  PyObject *__pyx_n_s_BinnedEstimate1D_maskedBins;
  PyObject *__pyx_n_s_BinnedEstimate1D_mkScatter;
  PyObject *__pyx_n_s_BinnedEstimate1D_numBins;
  PyObject *__pyx_n_s_BinnedEstimate1D_numBinsX;
  PyObject *__pyx_n_s_BinnedEstimate1D_rebinX;
  PyObject *__pyx_n_s_BinnedEstimate1D_rebinXBy;
  PyObject *__pyx_n_s_BinnedEstimate1D_rebinXTo;
  PyObject *__pyx_n_s_BinnedEstimate1D_reset;
  PyObject *__pyx_n_s_BinnedEstimate1D_scale;
  PyObject *__pyx_n_s_BinnedEstimate1D_serializeConten;
  PyObject *__pyx_n_s_BinnedEstimate1D_serializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate1D_set;
  PyObject *__pyx_n_s_BinnedEstimate1D_sources;
  PyObject *__pyx_n_s_BinnedEstimate1D_vals;
  PyObject *__pyx_n_s_BinnedEstimate1D_xEdges;
  PyObject *__pyx_n_s_BinnedEstimate1D_xMax;
  PyObject *__pyx_n_s_BinnedEstimate1D_xMin;
  PyObject *__pyx_n_s_BinnedEstimate1D_xWidths;
  PyObject *__pyx_n_s_BinnedEstimate2D;
  PyObject *__pyx_n_s_BinnedEstimate2D___init1;
  PyObject *__pyx_n_s_BinnedEstimate2D___init2;
  PyObject *__pyx_n_s_BinnedEstimate2D___init3;
  PyObject *__pyx_n_s_BinnedEstimate2D___init4;
  PyObject *__pyx_n_s_BinnedEstimate2D___reduce_cython;
  PyObject *__pyx_n_s_BinnedEstimate2D___setstate_cyth;
  PyObject *__pyx_n_s_BinnedEstimate2D__bin;
  PyObject *__pyx_n_s_BinnedEstimate2D__global_set;
  PyObject *__pyx_n_s_BinnedEstimate2D__init1;
  PyObject *__pyx_n_s_BinnedEstimate2D__init2;
  PyObject *__pyx_n_s_BinnedEstimate2D__init2_locals;
  PyObject *__pyx_n_s_BinnedEstimate2D__init3;
  PyObject *__pyx_n_s_BinnedEstimate2D__init4;
  PyObject *__pyx_n_s_BinnedEstimate2D__local_set;
  PyObject *__pyx_n_s_BinnedEstimate2D__mknp;
  PyObject *__pyx_n_s_BinnedEstimate2D__set_config;
  PyObject *__pyx_n_s_BinnedEstimate2D_areaUnderCurve;
  PyObject *__pyx_n_s_BinnedEstimate2D_auc;
  PyObject *__pyx_n_s_BinnedEstimate2D_bin;
  PyObject *__pyx_n_s_BinnedEstimate2D_binAt;
  PyObject *__pyx_n_s_BinnedEstimate2D_binDim;
  PyObject *__pyx_n_s_BinnedEstimate2D_bins;
  PyObject *__pyx_n_s_BinnedEstimate2D_clone;
  PyObject *__pyx_n_s_BinnedEstimate2D_covarianceMatri;
  PyObject *__pyx_n_s_BinnedEstimate2D_deserializeCont;
  PyObject *__pyx_n_s_BinnedEstimate2D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate2D_divideBy;
  PyObject *__pyx_n_s_BinnedEstimate2D_indexAt;
  PyObject *__pyx_n_s_BinnedEstimate2D_isMasked;
  PyObject *__pyx_n_s_BinnedEstimate2D_isVisible;
  PyObject *__pyx_n_s_BinnedEstimate2D_lengthContent;
  PyObject *__pyx_n_s_BinnedEstimate2D_lengthMeta;
  PyObject *__pyx_n_s_BinnedEstimate2D_localToGlobalIn;
  PyObject *__pyx_n_s_BinnedEstimate2D_maskBin;
  PyObject *__pyx_n_s_BinnedEstimate2D_maskBinAt;
  PyObject *__pyx_n_s_BinnedEstimate2D_maskBins;
  PyObject *__pyx_n_s_BinnedEstimate2D_maskSlice;
  PyObject *__pyx_n_s_BinnedEstimate2D_maskedBins;
  PyObject *__pyx_n_s_BinnedEstimate2D_mkScatter;
  PyObject *__pyx_n_s_BinnedEstimate2D_numBins;
  PyObject *__pyx_n_s_BinnedEstimate2D_numBinsX;
  PyObject *__pyx_n_s_BinnedEstimate2D_numBinsY;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinX;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinXBy;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinXTo;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinY;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinYBy;
  PyObject *__pyx_n_s_BinnedEstimate2D_rebinYTo;
  PyObject *__pyx_n_s_BinnedEstimate2D_reset;
  PyObject *__pyx_n_s_BinnedEstimate2D_scale;
  PyObject *__pyx_n_s_BinnedEstimate2D_serializeConten;
  PyObject *__pyx_n_s_BinnedEstimate2D_serializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate2D_set;
  PyObject *__pyx_n_s_BinnedEstimate2D_sources;
  PyObject *__pyx_n_s_BinnedEstimate2D_vals;
  PyObject *__pyx_n_s_BinnedEstimate2D_xEdges;
  PyObject *__pyx_n_s_BinnedEstimate2D_xMax;
  PyObject *__pyx_n_s_BinnedEstimate2D_xMin;
  PyObject *__pyx_n_s_BinnedEstimate2D_xWidths;
  PyObject *__pyx_n_s_BinnedEstimate2D_yEdges;
  PyObject *__pyx_n_s_BinnedEstimate2D_yMax;
  PyObject *__pyx_n_s_BinnedEstimate2D_yMin;
  PyObject *__pyx_n_s_BinnedEstimate2D_yWidths;
  PyObject *__pyx_n_s_BinnedEstimate3D;
  PyObject *__pyx_n_s_BinnedEstimate3D___init1;
  PyObject *__pyx_n_s_BinnedEstimate3D___init2;
  PyObject *__pyx_n_s_BinnedEstimate3D___init3;
  PyObject *__pyx_n_s_BinnedEstimate3D___init4;
  PyObject *__pyx_n_s_BinnedEstimate3D___reduce_cython;
  PyObject *__pyx_n_s_BinnedEstimate3D___setstate_cyth;
  PyObject *__pyx_n_s_BinnedEstimate3D__bin;
  PyObject *__pyx_n_s_BinnedEstimate3D__global_set;
  PyObject *__pyx_n_s_BinnedEstimate3D__init1;
  PyObject *__pyx_n_s_BinnedEstimate3D__init2;
  PyObject *__pyx_n_s_BinnedEstimate3D__init2_locals;
  PyObject *__pyx_n_s_BinnedEstimate3D__init3;
  PyObject *__pyx_n_s_BinnedEstimate3D__init4;
  PyObject *__pyx_n_s_BinnedEstimate3D__local_set;
  PyObject *__pyx_n_s_BinnedEstimate3D__mknp;
  PyObject *__pyx_n_s_BinnedEstimate3D__set_config;
  PyObject *__pyx_n_s_BinnedEstimate3D_areaUnderCurve;
  PyObject *__pyx_n_s_BinnedEstimate3D_auc;
  PyObject *__pyx_n_s_BinnedEstimate3D_bin;
  PyObject *__pyx_n_s_BinnedEstimate3D_binAt;
  PyObject *__pyx_n_s_BinnedEstimate3D_binDim;
  PyObject *__pyx_n_s_BinnedEstimate3D_bins;
  PyObject *__pyx_n_s_BinnedEstimate3D_clone;
  PyObject *__pyx_n_s_BinnedEstimate3D_covarianceMatri;
  PyObject *__pyx_n_s_BinnedEstimate3D_deserializeCont;
  PyObject *__pyx_n_s_BinnedEstimate3D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate3D_divideBy;
  PyObject *__pyx_n_s_BinnedEstimate3D_indexAt;
  PyObject *__pyx_n_s_BinnedEstimate3D_isMasked;
  PyObject *__pyx_n_s_BinnedEstimate3D_isVisible;
  PyObject *__pyx_n_s_BinnedEstimate3D_lengthContent;
  PyObject *__pyx_n_s_BinnedEstimate3D_lengthMeta;
  PyObject *__pyx_n_s_BinnedEstimate3D_localToGlobalIn;
  PyObject *__pyx_n_s_BinnedEstimate3D_maskBin;
  PyObject *__pyx_n_s_BinnedEstimate3D_maskBinAt;
  PyObject *__pyx_n_s_BinnedEstimate3D_maskBins;
  PyObject *__pyx_n_s_BinnedEstimate3D_maskSlice;
  PyObject *__pyx_n_s_BinnedEstimate3D_maskedBins;
  PyObject *__pyx_n_s_BinnedEstimate3D_mkScatter;
  PyObject *__pyx_n_s_BinnedEstimate3D_numBins;
  PyObject *__pyx_n_s_BinnedEstimate3D_numBinsX;
  PyObject *__pyx_n_s_BinnedEstimate3D_numBinsY;
  PyObject *__pyx_n_s_BinnedEstimate3D_numBinsZ;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinX;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinXBy;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinXTo;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinY;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinYBy;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinYTo;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinZ;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinZBy;
  PyObject *__pyx_n_s_BinnedEstimate3D_rebinZTo;
  PyObject *__pyx_n_s_BinnedEstimate3D_reset;
  PyObject *__pyx_n_s_BinnedEstimate3D_scale;
  PyObject *__pyx_n_s_BinnedEstimate3D_serializeConten;
  PyObject *__pyx_n_s_BinnedEstimate3D_serializeMeta;
  PyObject *__pyx_n_s_BinnedEstimate3D_set;
  PyObject *__pyx_n_s_BinnedEstimate3D_sources;
  PyObject *__pyx_n_s_BinnedEstimate3D_vals;
  PyObject *__pyx_n_s_BinnedEstimate3D_xEdges;
  PyObject *__pyx_n_s_BinnedEstimate3D_xMax;
  PyObject *__pyx_n_s_BinnedEstimate3D_xMin;
  PyObject *__pyx_n_s_BinnedEstimate3D_xWidths;
  PyObject *__pyx_n_s_BinnedEstimate3D_yEdges;
  PyObject *__pyx_n_s_BinnedEstimate3D_yMax;
  PyObject *__pyx_n_s_BinnedEstimate3D_yMin;
  PyObject *__pyx_n_s_BinnedEstimate3D_yWidths;
  PyObject *__pyx_n_s_BinnedEstimate3D_zEdges;
  PyObject *__pyx_n_s_BinnedEstimate3D_zMax;
  PyObject *__pyx_n_s_BinnedEstimate3D_zMin;
  PyObject *__pyx_n_s_BinnedEstimate3D_zWidths;
  PyObject *__pyx_n_s_BinnedHisto1D;
  PyObject *__pyx_n_s_BinnedHisto1D___init1;
  PyObject *__pyx_n_s_BinnedHisto1D___init2;
  PyObject *__pyx_n_s_BinnedHisto1D___init3;
  PyObject *__pyx_n_s_BinnedHisto1D___init4;
  PyObject *__pyx_n_s_BinnedHisto1D___reduce_cython;
  PyObject *__pyx_n_s_BinnedHisto1D___setstate_cython;
  PyObject *__pyx_n_s_BinnedHisto1D__bin;
  PyObject *__pyx_n_s_BinnedHisto1D__global_set;
  PyObject *__pyx_n_s_BinnedHisto1D__init1;
  PyObject *__pyx_n_s_BinnedHisto1D__init2;
  PyObject *__pyx_n_s_BinnedHisto1D__init2_locals_gen;
  PyObject *__pyx_n_s_BinnedHisto1D__init3;
  PyObject *__pyx_n_s_BinnedHisto1D__init4;
  PyObject *__pyx_n_s_BinnedHisto1D__local_set;
  PyObject *__pyx_n_s_BinnedHisto1D__mknp;
  PyObject *__pyx_n_s_BinnedHisto1D__set_config;
  PyObject *__pyx_n_s_BinnedHisto1D_bin;
  PyObject *__pyx_n_s_BinnedHisto1D_binAt;
  PyObject *__pyx_n_s_BinnedHisto1D_binDim;
  PyObject *__pyx_n_s_BinnedHisto1D_bins;
  PyObject *__pyx_n_s_BinnedHisto1D_clone;
  PyObject *__pyx_n_s_BinnedHisto1D_dVol;
  PyObject *__pyx_n_s_BinnedHisto1D_density;
  PyObject *__pyx_n_s_BinnedHisto1D_densityError;
  PyObject *__pyx_n_s_BinnedHisto1D_densitySum;
  PyObject *__pyx_n_s_BinnedHisto1D_deserializeContent;
  PyObject *__pyx_n_s_BinnedHisto1D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedHisto1D_divideBy;
  PyObject *__pyx_n_s_BinnedHisto1D_effNumEntries;
  PyObject *__pyx_n_s_BinnedHisto1D_fill;
  PyObject *__pyx_n_s_BinnedHisto1D_fillDim;
  PyObject *__pyx_n_s_BinnedHisto1D_indexAt;
  PyObject *__pyx_n_s_BinnedHisto1D_integral;
  PyObject *__pyx_n_s_BinnedHisto1D_integralError;
  PyObject *__pyx_n_s_BinnedHisto1D_isMasked;
  PyObject *__pyx_n_s_BinnedHisto1D_isVisible;
  PyObject *__pyx_n_s_BinnedHisto1D_lengthContent;
  PyObject *__pyx_n_s_BinnedHisto1D_lengthMeta;
  PyObject *__pyx_n_s_BinnedHisto1D_localToGlobalIndex;
  PyObject *__pyx_n_s_BinnedHisto1D_maskBin;
  PyObject *__pyx_n_s_BinnedHisto1D_maskBinAt;
  PyObject *__pyx_n_s_BinnedHisto1D_maskBins;
  PyObject *__pyx_n_s_BinnedHisto1D_maskSlice;
  PyObject *__pyx_n_s_BinnedHisto1D_maskedBins;
  PyObject *__pyx_n_s_BinnedHisto1D_maxDensity;
  PyObject *__pyx_n_s_BinnedHisto1D_mkEstimate;
  PyObject *__pyx_n_s_BinnedHisto1D_mkScatter;
  PyObject *__pyx_n_s_BinnedHisto1D_normalize;
  PyObject *__pyx_n_s_BinnedHisto1D_numBins;
  PyObject *__pyx_n_s_BinnedHisto1D_numBinsX;
  PyObject *__pyx_n_s_BinnedHisto1D_numEntries;
  PyObject *__pyx_n_s_BinnedHisto1D_rebinX;
  PyObject *__pyx_n_s_BinnedHisto1D_rebinXBy;
  PyObject *__pyx_n_s_BinnedHisto1D_rebinXTo;
  PyObject *__pyx_n_s_BinnedHisto1D_reset;
  PyObject *__pyx_n_s_BinnedHisto1D_scaleW;
  PyObject *__pyx_n_s_BinnedHisto1D_serializeContent;
  PyObject *__pyx_n_s_BinnedHisto1D_serializeMeta;
  PyObject *__pyx_n_s_BinnedHisto1D_set;
  PyObject *__pyx_n_s_BinnedHisto1D_sumW;
  PyObject *__pyx_n_s_BinnedHisto1D_sumW2;
  PyObject *__pyx_n_s_BinnedHisto1D_sumWA;
  PyObject *__pyx_n_s_BinnedHisto1D_sumWA2;
  PyObject *__pyx_n_s_BinnedHisto1D_xEdges;
  PyObject *__pyx_n_s_BinnedHisto1D_xMax;
  PyObject *__pyx_n_s_BinnedHisto1D_xMean;
  PyObject *__pyx_n_s_BinnedHisto1D_xMin;
  PyObject *__pyx_n_s_BinnedHisto1D_xRMS;
  PyObject *__pyx_n_s_BinnedHisto1D_xStdDev;
  PyObject *__pyx_n_s_BinnedHisto1D_xStdErr;
  PyObject *__pyx_n_s_BinnedHisto1D_xVariance;
  PyObject *__pyx_n_s_BinnedHisto1D_xWidths;
  PyObject *__pyx_n_s_BinnedHisto2D;
  PyObject *__pyx_n_s_BinnedHisto2D___init1;
  PyObject *__pyx_n_s_BinnedHisto2D___init2;
  PyObject *__pyx_n_s_BinnedHisto2D___init3;
  PyObject *__pyx_n_s_BinnedHisto2D___init4;
  PyObject *__pyx_n_s_BinnedHisto2D___reduce_cython;
  PyObject *__pyx_n_s_BinnedHisto2D___setstate_cython;
  PyObject *__pyx_n_s_BinnedHisto2D__bin;
  PyObject *__pyx_n_s_BinnedHisto2D__global_set;
  PyObject *__pyx_n_s_BinnedHisto2D__init1;
  PyObject *__pyx_n_s_BinnedHisto2D__init2;
  PyObject *__pyx_n_s_BinnedHisto2D__init2_locals_gen;
  PyObject *__pyx_n_s_BinnedHisto2D__init3;
  PyObject *__pyx_n_s_BinnedHisto2D__init4;
  PyObject *__pyx_n_s_BinnedHisto2D__local_set;
  PyObject *__pyx_n_s_BinnedHisto2D__mknp;
  PyObject *__pyx_n_s_BinnedHisto2D__set_config;
  PyObject *__pyx_n_s_BinnedHisto2D_bin;
  PyObject *__pyx_n_s_BinnedHisto2D_binAt;
  PyObject *__pyx_n_s_BinnedHisto2D_binDim;
  PyObject *__pyx_n_s_BinnedHisto2D_bins;
  PyObject *__pyx_n_s_BinnedHisto2D_clone;
  PyObject *__pyx_n_s_BinnedHisto2D_dVol;
  PyObject *__pyx_n_s_BinnedHisto2D_density;
  PyObject *__pyx_n_s_BinnedHisto2D_densityError;
  PyObject *__pyx_n_s_BinnedHisto2D_densitySum;
  PyObject *__pyx_n_s_BinnedHisto2D_deserializeContent;
  PyObject *__pyx_n_s_BinnedHisto2D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedHisto2D_divideBy;
  PyObject *__pyx_n_s_BinnedHisto2D_effNumEntries;
  PyObject *__pyx_n_s_BinnedHisto2D_fill;
  PyObject *__pyx_n_s_BinnedHisto2D_fillDim;
  PyObject *__pyx_n_s_BinnedHisto2D_indexAt;
  PyObject *__pyx_n_s_BinnedHisto2D_integral;
  PyObject *__pyx_n_s_BinnedHisto2D_integralError;
  PyObject *__pyx_n_s_BinnedHisto2D_isMasked;
  PyObject *__pyx_n_s_BinnedHisto2D_isVisible;
  PyObject *__pyx_n_s_BinnedHisto2D_lengthContent;
  PyObject *__pyx_n_s_BinnedHisto2D_lengthMeta;
  PyObject *__pyx_n_s_BinnedHisto2D_localToGlobalIndex;
  PyObject *__pyx_n_s_BinnedHisto2D_maskBin;
  PyObject *__pyx_n_s_BinnedHisto2D_maskBinAt;
  PyObject *__pyx_n_s_BinnedHisto2D_maskBins;
  PyObject *__pyx_n_s_BinnedHisto2D_maskSlice;
  PyObject *__pyx_n_s_BinnedHisto2D_maskedBins;
  PyObject *__pyx_n_s_BinnedHisto2D_maxDensity;
  PyObject *__pyx_n_s_BinnedHisto2D_mkEstimate;
  PyObject *__pyx_n_s_BinnedHisto2D_mkScatter;
  PyObject *__pyx_n_s_BinnedHisto2D_normalize;
  PyObject *__pyx_n_s_BinnedHisto2D_numBins;
  PyObject *__pyx_n_s_BinnedHisto2D_numBinsX;
  PyObject *__pyx_n_s_BinnedHisto2D_numBinsY;
  PyObject *__pyx_n_s_BinnedHisto2D_numEntries;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinX;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinXBy;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinXTo;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinY;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinYBy;
  PyObject *__pyx_n_s_BinnedHisto2D_rebinYTo;
  PyObject *__pyx_n_s_BinnedHisto2D_reset;
  PyObject *__pyx_n_s_BinnedHisto2D_scaleW;
  PyObject *__pyx_n_s_BinnedHisto2D_serializeContent;
  PyObject *__pyx_n_s_BinnedHisto2D_serializeMeta;
  PyObject *__pyx_n_s_BinnedHisto2D_set;
  PyObject *__pyx_n_s_BinnedHisto2D_sumW;
  PyObject *__pyx_n_s_BinnedHisto2D_sumW2;
  PyObject *__pyx_n_s_BinnedHisto2D_sumWA;
  PyObject *__pyx_n_s_BinnedHisto2D_sumWA2;
  PyObject *__pyx_n_s_BinnedHisto2D_xEdges;
  PyObject *__pyx_n_s_BinnedHisto2D_xMax;
  PyObject *__pyx_n_s_BinnedHisto2D_xMean;
  PyObject *__pyx_n_s_BinnedHisto2D_xMin;
  PyObject *__pyx_n_s_BinnedHisto2D_xRMS;
  PyObject *__pyx_n_s_BinnedHisto2D_xStdDev;
  PyObject *__pyx_n_s_BinnedHisto2D_xStdErr;
  PyObject *__pyx_n_s_BinnedHisto2D_xVariance;
  PyObject *__pyx_n_s_BinnedHisto2D_xWidths;
  PyObject *__pyx_n_s_BinnedHisto2D_yEdges;
  PyObject *__pyx_n_s_BinnedHisto2D_yMax;
  PyObject *__pyx_n_s_BinnedHisto2D_yMean;
  PyObject *__pyx_n_s_BinnedHisto2D_yMin;
  PyObject *__pyx_n_s_BinnedHisto2D_yRMS;
  PyObject *__pyx_n_s_BinnedHisto2D_yStdDev;
  PyObject *__pyx_n_s_BinnedHisto2D_yStdErr;
  PyObject *__pyx_n_s_BinnedHisto2D_yVariance;
  PyObject *__pyx_n_s_BinnedHisto2D_yWidths;
  PyObject *__pyx_n_s_BinnedHisto3D;
  PyObject *__pyx_n_s_BinnedHisto3D___init1;
  PyObject *__pyx_n_s_BinnedHisto3D___init2;
  PyObject *__pyx_n_s_BinnedHisto3D___init3;
  PyObject *__pyx_n_s_BinnedHisto3D___init4;
  PyObject *__pyx_n_s_BinnedHisto3D___reduce_cython;
  PyObject *__pyx_n_s_BinnedHisto3D___setstate_cython;
  PyObject *__pyx_n_s_BinnedHisto3D__bin;
  PyObject *__pyx_n_s_BinnedHisto3D__global_set;
  PyObject *__pyx_n_s_BinnedHisto3D__init1;
  PyObject *__pyx_n_s_BinnedHisto3D__init2;
  PyObject *__pyx_n_s_BinnedHisto3D__init2_locals_gen;
  PyObject *__pyx_n_s_BinnedHisto3D__init3;
  PyObject *__pyx_n_s_BinnedHisto3D__init4;
  PyObject *__pyx_n_s_BinnedHisto3D__local_set;
  PyObject *__pyx_n_s_BinnedHisto3D__mknp;
  PyObject *__pyx_n_s_BinnedHisto3D__set_config;
  PyObject *__pyx_n_s_BinnedHisto3D_bin;
  PyObject *__pyx_n_s_BinnedHisto3D_binAt;
  PyObject *__pyx_n_s_BinnedHisto3D_binDim;
  PyObject *__pyx_n_s_BinnedHisto3D_bins;
  PyObject *__pyx_n_s_BinnedHisto3D_clone;
  PyObject *__pyx_n_s_BinnedHisto3D_dVol;
  PyObject *__pyx_n_s_BinnedHisto3D_density;
  PyObject *__pyx_n_s_BinnedHisto3D_densityError;
  PyObject *__pyx_n_s_BinnedHisto3D_densitySum;
  PyObject *__pyx_n_s_BinnedHisto3D_deserializeContent;
  PyObject *__pyx_n_s_BinnedHisto3D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedHisto3D_divideBy;
  PyObject *__pyx_n_s_BinnedHisto3D_effNumEntries;
  PyObject *__pyx_n_s_BinnedHisto3D_fill;
  PyObject *__pyx_n_s_BinnedHisto3D_fillDim;
  PyObject *__pyx_n_s_BinnedHisto3D_indexAt;
  PyObject *__pyx_n_s_BinnedHisto3D_integral;
  PyObject *__pyx_n_s_BinnedHisto3D_integralError;
  PyObject *__pyx_n_s_BinnedHisto3D_isMasked;
  PyObject *__pyx_n_s_BinnedHisto3D_isVisible;
  PyObject *__pyx_n_s_BinnedHisto3D_lengthContent;
  PyObject *__pyx_n_s_BinnedHisto3D_lengthMeta;
  PyObject *__pyx_n_s_BinnedHisto3D_localToGlobalIndex;
  PyObject *__pyx_n_s_BinnedHisto3D_maskBin;
  PyObject *__pyx_n_s_BinnedHisto3D_maskBinAt;
  PyObject *__pyx_n_s_BinnedHisto3D_maskBins;
  PyObject *__pyx_n_s_BinnedHisto3D_maskSlice;
  PyObject *__pyx_n_s_BinnedHisto3D_maskedBins;
  PyObject *__pyx_n_s_BinnedHisto3D_maxDensity;
  PyObject *__pyx_n_s_BinnedHisto3D_mkEstimate;
  PyObject *__pyx_n_s_BinnedHisto3D_mkScatter;
  PyObject *__pyx_n_s_BinnedHisto3D_normalize;
  PyObject *__pyx_n_s_BinnedHisto3D_numBins;
  PyObject *__pyx_n_s_BinnedHisto3D_numBinsX;
  PyObject *__pyx_n_s_BinnedHisto3D_numBinsY;
  PyObject *__pyx_n_s_BinnedHisto3D_numBinsZ;
  PyObject *__pyx_n_s_BinnedHisto3D_numEntries;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinX;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinXBy;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinXTo;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinY;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinYBy;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinYTo;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinZ;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinZBy;
  PyObject *__pyx_n_s_BinnedHisto3D_rebinZTo;
  PyObject *__pyx_n_s_BinnedHisto3D_reset;
  PyObject *__pyx_n_s_BinnedHisto3D_scaleW;
  PyObject *__pyx_n_s_BinnedHisto3D_serializeContent;
  PyObject *__pyx_n_s_BinnedHisto3D_serializeMeta;
  PyObject *__pyx_n_s_BinnedHisto3D_set;
  PyObject *__pyx_n_s_BinnedHisto3D_sumW;
  PyObject *__pyx_n_s_BinnedHisto3D_sumW2;
  PyObject *__pyx_n_s_BinnedHisto3D_sumWA;
  PyObject *__pyx_n_s_BinnedHisto3D_sumWA2;
  PyObject *__pyx_n_s_BinnedHisto3D_xEdges;
  PyObject *__pyx_n_s_BinnedHisto3D_xMax;
  PyObject *__pyx_n_s_BinnedHisto3D_xMean;
  PyObject *__pyx_n_s_BinnedHisto3D_xMin;
  PyObject *__pyx_n_s_BinnedHisto3D_xRMS;
  PyObject *__pyx_n_s_BinnedHisto3D_xStdDev;
  PyObject *__pyx_n_s_BinnedHisto3D_xStdErr;
  PyObject *__pyx_n_s_BinnedHisto3D_xVariance;
  PyObject *__pyx_n_s_BinnedHisto3D_xWidths;
  PyObject *__pyx_n_s_BinnedHisto3D_yEdges;
  PyObject *__pyx_n_s_BinnedHisto3D_yMax;
  PyObject *__pyx_n_s_BinnedHisto3D_yMean;
  PyObject *__pyx_n_s_BinnedHisto3D_yMin;
  PyObject *__pyx_n_s_BinnedHisto3D_yRMS;
  PyObject *__pyx_n_s_BinnedHisto3D_yStdDev;
  PyObject *__pyx_n_s_BinnedHisto3D_yStdErr;
  PyObject *__pyx_n_s_BinnedHisto3D_yVariance;
  PyObject *__pyx_n_s_BinnedHisto3D_yWidths;
  PyObject *__pyx_n_s_BinnedHisto3D_zEdges;
  PyObject *__pyx_n_s_BinnedHisto3D_zMax;
  PyObject *__pyx_n_s_BinnedHisto3D_zMean;
  PyObject *__pyx_n_s_BinnedHisto3D_zMin;
  PyObject *__pyx_n_s_BinnedHisto3D_zRMS;
  PyObject *__pyx_n_s_BinnedHisto3D_zStdDev;
  PyObject *__pyx_n_s_BinnedHisto3D_zStdErr;
  PyObject *__pyx_n_s_BinnedHisto3D_zVariance;
  PyObject *__pyx_n_s_BinnedHisto3D_zWidths;
  PyObject *__pyx_n_s_BinnedProfile1D;
  PyObject *__pyx_n_s_BinnedProfile1D___init1;
  PyObject *__pyx_n_s_BinnedProfile1D___init2;
  PyObject *__pyx_n_s_BinnedProfile1D___init3;
  PyObject *__pyx_n_s_BinnedProfile1D___init4;
  PyObject *__pyx_n_s_BinnedProfile1D___reduce_cython;
  PyObject *__pyx_n_s_BinnedProfile1D___setstate_cytho;
  PyObject *__pyx_n_s_BinnedProfile1D__bin;
  PyObject *__pyx_n_s_BinnedProfile1D__global_set;
  PyObject *__pyx_n_s_BinnedProfile1D__init1;
  PyObject *__pyx_n_s_BinnedProfile1D__init2;
  PyObject *__pyx_n_s_BinnedProfile1D__init2_locals_g;
  PyObject *__pyx_n_s_BinnedProfile1D__init3;
  PyObject *__pyx_n_s_BinnedProfile1D__init4;
  PyObject *__pyx_n_s_BinnedProfile1D__local_set;
  PyObject *__pyx_n_s_BinnedProfile1D__mknp;
  PyObject *__pyx_n_s_BinnedProfile1D__set_config;
  PyObject *__pyx_n_s_BinnedProfile1D_bin;
  PyObject *__pyx_n_s_BinnedProfile1D_binAt;
  PyObject *__pyx_n_s_BinnedProfile1D_binDim;
  PyObject *__pyx_n_s_BinnedProfile1D_bins;
  PyObject *__pyx_n_s_BinnedProfile1D_clone;
  PyObject *__pyx_n_s_BinnedProfile1D_dVol;
  PyObject *__pyx_n_s_BinnedProfile1D_density;
  PyObject *__pyx_n_s_BinnedProfile1D_densityError;
  PyObject *__pyx_n_s_BinnedProfile1D_densitySum;
  PyObject *__pyx_n_s_BinnedProfile1D_deserializeConte;
  PyObject *__pyx_n_s_BinnedProfile1D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedProfile1D_divideBy;
  PyObject *__pyx_n_s_BinnedProfile1D_effNumEntries;
  PyObject *__pyx_n_s_BinnedProfile1D_fill;
  PyObject *__pyx_n_s_BinnedProfile1D_fillDim;
  PyObject *__pyx_n_s_BinnedProfile1D_indexAt;
  PyObject *__pyx_n_s_BinnedProfile1D_integral;
  PyObject *__pyx_n_s_BinnedProfile1D_integralError;
  PyObject *__pyx_n_s_BinnedProfile1D_isMasked;
  PyObject *__pyx_n_s_BinnedProfile1D_isVisible;
  PyObject *__pyx_n_s_BinnedProfile1D_lengthContent;
  PyObject *__pyx_n_s_BinnedProfile1D_lengthMeta;
  PyObject *__pyx_n_s_BinnedProfile1D_localToGlobalInd;
  PyObject *__pyx_n_s_BinnedProfile1D_maskBin;
  PyObject *__pyx_n_s_BinnedProfile1D_maskBinAt;
  PyObject *__pyx_n_s_BinnedProfile1D_maskBins;
  PyObject *__pyx_n_s_BinnedProfile1D_maskSlice;
  PyObject *__pyx_n_s_BinnedProfile1D_maskedBins;
  PyObject *__pyx_n_s_BinnedProfile1D_maxDensity;
  PyObject *__pyx_n_s_BinnedProfile1D_mkEstimate;
  PyObject *__pyx_n_s_BinnedProfile1D_mkHisto;
  PyObject *__pyx_n_s_BinnedProfile1D_mkScatter;
  PyObject *__pyx_n_s_BinnedProfile1D_normalize;
  PyObject *__pyx_n_s_BinnedProfile1D_numBins;
  PyObject *__pyx_n_s_BinnedProfile1D_numBinsX;
  PyObject *__pyx_n_s_BinnedProfile1D_numEntries;
  PyObject *__pyx_n_s_BinnedProfile1D_rebinX;
  PyObject *__pyx_n_s_BinnedProfile1D_rebinXBy;
  PyObject *__pyx_n_s_BinnedProfile1D_rebinXTo;
  PyObject *__pyx_n_s_BinnedProfile1D_reset;
  PyObject *__pyx_n_s_BinnedProfile1D_scaleW;
  PyObject *__pyx_n_s_BinnedProfile1D_serializeContent;
  PyObject *__pyx_n_s_BinnedProfile1D_serializeMeta;
  PyObject *__pyx_n_s_BinnedProfile1D_set;
  PyObject *__pyx_n_s_BinnedProfile1D_sumW;
  PyObject *__pyx_n_s_BinnedProfile1D_sumW2;
  PyObject *__pyx_n_s_BinnedProfile1D_sumWA;
  PyObject *__pyx_n_s_BinnedProfile1D_sumWA2;
  PyObject *__pyx_n_s_BinnedProfile1D_xEdges;
  PyObject *__pyx_n_s_BinnedProfile1D_xMax;
  PyObject *__pyx_n_s_BinnedProfile1D_xMean;
  PyObject *__pyx_n_s_BinnedProfile1D_xMin;
  PyObject *__pyx_n_s_BinnedProfile1D_xRMS;
  PyObject *__pyx_n_s_BinnedProfile1D_xStdDev;
  PyObject *__pyx_n_s_BinnedProfile1D_xStdErr;
  PyObject *__pyx_n_s_BinnedProfile1D_xVariance;
  PyObject *__pyx_n_s_BinnedProfile1D_xWidths;
  PyObject *__pyx_n_s_BinnedProfile2D;
  PyObject *__pyx_n_s_BinnedProfile2D___init1;
  PyObject *__pyx_n_s_BinnedProfile2D___init2;
  PyObject *__pyx_n_s_BinnedProfile2D___init3;
  PyObject *__pyx_n_s_BinnedProfile2D___init4;
  PyObject *__pyx_n_s_BinnedProfile2D___reduce_cython;
  PyObject *__pyx_n_s_BinnedProfile2D___setstate_cytho;
  PyObject *__pyx_n_s_BinnedProfile2D__bin;
  PyObject *__pyx_n_s_BinnedProfile2D__global_set;
  PyObject *__pyx_n_s_BinnedProfile2D__init1;
  PyObject *__pyx_n_s_BinnedProfile2D__init2;
  PyObject *__pyx_n_s_BinnedProfile2D__init2_locals_g;
  PyObject *__pyx_n_s_BinnedProfile2D__init3;
  PyObject *__pyx_n_s_BinnedProfile2D__init4;
  PyObject *__pyx_n_s_BinnedProfile2D__local_set;
  PyObject *__pyx_n_s_BinnedProfile2D__mknp;
  PyObject *__pyx_n_s_BinnedProfile2D__set_config;
  PyObject *__pyx_n_s_BinnedProfile2D_bin;
  PyObject *__pyx_n_s_BinnedProfile2D_binAt;
  PyObject *__pyx_n_s_BinnedProfile2D_binDim;
  PyObject *__pyx_n_s_BinnedProfile2D_bins;
  PyObject *__pyx_n_s_BinnedProfile2D_clone;
  PyObject *__pyx_n_s_BinnedProfile2D_dVol;
  PyObject *__pyx_n_s_BinnedProfile2D_density;
  PyObject *__pyx_n_s_BinnedProfile2D_densityError;
  PyObject *__pyx_n_s_BinnedProfile2D_densitySum;
  PyObject *__pyx_n_s_BinnedProfile2D_deserializeConte;
  PyObject *__pyx_n_s_BinnedProfile2D_deserializeMeta;
  PyObject *__pyx_n_s_BinnedProfile2D_divideBy;
  PyObject *__pyx_n_s_BinnedProfile2D_effNumEntries;
  PyObject *__pyx_n_s_BinnedProfile2D_fill;
  PyObject *__pyx_n_s_BinnedProfile2D_fillDim;
  PyObject *__pyx_n_s_BinnedProfile2D_indexAt;
  PyObject *__pyx_n_s_BinnedProfile2D_integral;
  PyObject *__pyx_n_s_BinnedProfile2D_integralError;
  PyObject *__pyx_n_s_BinnedProfile2D_isMasked;
  PyObject *__pyx_n_s_BinnedProfile2D_isVisible;
  PyObject *__pyx_n_s_BinnedProfile2D_lengthContent;
  PyObject *__pyx_n_s_BinnedProfile2D_lengthMeta;
  PyObject *__pyx_n_s_BinnedProfile2D_localToGlobalInd;
  PyObject *__pyx_n_s_BinnedProfile2D_maskBin;
  PyObject *__pyx_n_s_BinnedProfile2D_maskBinAt;
  PyObject *__pyx_n_s_BinnedProfile2D_maskBins;
  PyObject *__pyx_n_s_BinnedProfile2D_maskSlice;
  PyObject *__pyx_n_s_BinnedProfile2D_maskedBins;
  PyObject *__pyx_n_s_BinnedProfile2D_maxDensity;
  PyObject *__pyx_n_s_BinnedProfile2D_mkEstimate;
  PyObject *__pyx_n_s_BinnedProfile2D_mkHisto;
  PyObject *__pyx_n_s_BinnedProfile2D_mkScatter;
  PyObject *__pyx_n_s_BinnedProfile2D_normalize;
  PyObject *__pyx_n_s_BinnedProfile2D_numBins;
  PyObject *__pyx_n_s_BinnedProfile2D_numBinsX;
  PyObject *__pyx_n_s_BinnedProfile2D_numBinsY;
  PyObject *__pyx_n_s_BinnedProfile2D_numEntries;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinX;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinXBy;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinXTo;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinY;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinYBy;
  PyObject *__pyx_n_s_BinnedProfile2D_rebinYTo;
  PyObject *__pyx_n_s_BinnedProfile2D_reset;
  PyObject *__pyx_n_s_BinnedProfile2D_scaleW;
  PyObject *__pyx_n_s_BinnedProfile2D_serializeContent;
  PyObject *__pyx_n_s_BinnedProfile2D_serializeMeta;
  PyObject *__pyx_n_s_BinnedProfile2D_set;
  PyObject *__pyx_n_s_BinnedProfile2D_sumW;
  PyObject *__pyx_n_s_BinnedProfile2D_sumW2;
  PyObject *__pyx_n_s_BinnedProfile2D_sumWA;
  PyObject *__pyx_n_s_BinnedProfile2D_sumWA2;
  PyObject *__pyx_n_s_BinnedProfile2D_xEdges;
  PyObject *__pyx_n_s_BinnedProfile2D_xMax;
  PyObject *__pyx_n_s_BinnedProfile2D_xMean;
  PyObject *__pyx_n_s_BinnedProfile2D_xMin;
  PyObject *__pyx_n_s_BinnedProfile2D_xRMS;
  PyObject *__pyx_n_s_BinnedProfile2D_xStdDev;
  PyObject *__pyx_n_s_BinnedProfile2D_xStdErr;
  PyObject *__pyx_n_s_BinnedProfile2D_xVariance;
  PyObject *__pyx_n_s_BinnedProfile2D_xWidths;
  PyObject *__pyx_n_s_BinnedProfile2D_yEdges;
  PyObject *__pyx_n_s_BinnedProfile2D_yMax;
  PyObject *__pyx_n_s_BinnedProfile2D_yMean;
  PyObject *__pyx_n_s_BinnedProfile2D_yMin;
  PyObject *__pyx_n_s_BinnedProfile2D_yRMS;
  PyObject *__pyx_n_s_BinnedProfile2D_yStdDev;
  PyObject *__pyx_n_s_BinnedProfile2D_yStdErr;
  PyObject *__pyx_n_s_BinnedProfile2D_yVariance;
  PyObject *__pyx_n_s_BinnedProfile2D_yWidths;
  PyObject *__pyx_n_s_Binning;
  PyObject *__pyx_n_s_Binning___init;
  PyObject *__pyx_n_s_Binning_config;
  PyObject *__pyx_n_s_Binning_config_locals_genexpr;
  PyObject *__pyx_n_s_Binning_edge;
  PyObject *__pyx_n_s_Binning_max;
  PyObject *__pyx_n_s_Binning_mid;
  PyObject *__pyx_n_s_Binning_min;
  PyObject *__pyx_n_s_Binning_width;
  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_deserializeContent;
  PyObject *__pyx_n_s_Counter_deserializeMeta;
  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_lengthContent;
  PyObject *__pyx_n_s_Counter_lengthMeta;
  PyObject *__pyx_n_s_Counter_mkEstimate;
  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_serializeContent;
  PyObject *__pyx_n_s_Counter_serializeMeta;
  PyObject *__pyx_n_s_Counter_set;
  PyObject *__pyx_n_s_Counter_sumW;
  PyObject *__pyx_n_s_Counter_sumW2;
  PyObject *__pyx_n_s_Counter_val;
  PyObject *__pyx_n_s_D;
  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_set;
  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_RMS;
  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_n_s_Dbn1D_mean;
  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_scale;
  PyObject *__pyx_n_s_Dbn1D_scaleW;
  PyObject *__pyx_n_s_Dbn1D_scaleX;
  PyObject *__pyx_n_s_Dbn1D_set;
  PyObject *__pyx_n_s_Dbn1D_stdDev;
  PyObject *__pyx_n_s_Dbn1D_stdErr;
  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_variance;
  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_RMS;
  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_crossTerm;
  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_scale;
  PyObject *__pyx_n_s_Dbn2D_scaleW;
  PyObject *__pyx_n_s_Dbn2D_scaleX;
  PyObject *__pyx_n_s_Dbn2D_scaleY;
  PyObject *__pyx_n_s_Dbn2D_set;
  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_sumWY;
  PyObject *__pyx_n_s_Dbn2D_sumWY2;
  PyObject *__pyx_n_s_Dbn2D_variance;
  PyObject *__pyx_n_s_Dbn2D_xMean;
  PyObject *__pyx_n_s_Dbn2D_xRMS;
  PyObject *__pyx_n_s_Dbn2D_xStdDev;
  PyObject *__pyx_n_s_Dbn2D_xStdErr;
  PyObject *__pyx_n_s_Dbn2D_xVariance;
  PyObject *__pyx_n_s_Dbn2D_yMean;
  PyObject *__pyx_n_s_Dbn2D_yRMS;
  PyObject *__pyx_n_s_Dbn2D_yStdDev;
  PyObject *__pyx_n_s_Dbn2D_yStdErr;
  PyObject *__pyx_n_s_Dbn2D_yVariance;
  PyObject *__pyx_n_s_Dbn3D;
  PyObject *__pyx_n_s_Dbn3D_RMS;
  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_crossTerm;
  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_scale;
  PyObject *__pyx_n_s_Dbn3D_scaleW;
  PyObject *__pyx_n_s_Dbn3D_scaleX;
  PyObject *__pyx_n_s_Dbn3D_scaleY;
  PyObject *__pyx_n_s_Dbn3D_scaleZ;
  PyObject *__pyx_n_s_Dbn3D_set;
  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_sumWY;
  PyObject *__pyx_n_s_Dbn3D_sumWY2;
  PyObject *__pyx_n_s_Dbn3D_sumWZ;
  PyObject *__pyx_n_s_Dbn3D_sumWZ2;
  PyObject *__pyx_n_s_Dbn3D_variance;
  PyObject *__pyx_n_s_Dbn3D_xMean;
  PyObject *__pyx_n_s_Dbn3D_xRMS;
  PyObject *__pyx_n_s_Dbn3D_xStdDev;
  PyObject *__pyx_n_s_Dbn3D_xStdErr;
  PyObject *__pyx_n_s_Dbn3D_xVariance;
  PyObject *__pyx_n_s_Dbn3D_yMean;
  PyObject *__pyx_n_s_Dbn3D_yRMS;
  PyObject *__pyx_n_s_Dbn3D_yStdDev;
  PyObject *__pyx_n_s_Dbn3D_yStdErr;
  PyObject *__pyx_n_s_Dbn3D_yVariance;
  PyObject *__pyx_n_s_Dbn3D_zMean;
  PyObject *__pyx_n_s_Dbn3D_zRMS;
  PyObject *__pyx_n_s_Dbn3D_zStdDev;
  PyObject *__pyx_n_s_Dbn3D_zStdErr;
  PyObject *__pyx_n_s_Dbn3D_zVariance;
  PyObject *__pyx_kp_s_Dynamic_ptr_cast_failed_Next;
  PyObject *__pyx_n_s_Estimate;
  PyObject *__pyx_n_s_Estimate0D;
  PyObject *__pyx_n_s_Estimate0D___reduce_cython;
  PyObject *__pyx_n_s_Estimate0D___setstate_cython;
  PyObject *__pyx_n_s_Estimate0D_clone;
  PyObject *__pyx_n_s_Estimate0D_deserializeContent;
  PyObject *__pyx_n_s_Estimate0D_deserializeMeta;
  PyObject *__pyx_n_s_Estimate0D_err;
  PyObject *__pyx_n_s_Estimate0D_errDown;
  PyObject *__pyx_n_s_Estimate0D_errDownUp;
  PyObject *__pyx_n_s_Estimate0D_errNeg;
  PyObject *__pyx_n_s_Estimate0D_errNegPos;
  PyObject *__pyx_n_s_Estimate0D_errPos;
  PyObject *__pyx_n_s_Estimate0D_errUp;
  PyObject *__pyx_n_s_Estimate0D_hasSource;
  PyObject *__pyx_n_s_Estimate0D_lengthContent;
  PyObject *__pyx_n_s_Estimate0D_lengthMeta;
  PyObject *__pyx_n_s_Estimate0D_mkScatter;
  PyObject *__pyx_n_s_Estimate0D_numErrs;
  PyObject *__pyx_n_s_Estimate0D_quadSum;
  PyObject *__pyx_n_s_Estimate0D_quadSumNeg;
  PyObject *__pyx_n_s_Estimate0D_quadSumPos;
  PyObject *__pyx_n_s_Estimate0D_relErr;
  PyObject *__pyx_n_s_Estimate0D_relErrDown;
  PyObject *__pyx_n_s_Estimate0D_relErrDownUp;
  PyObject *__pyx_n_s_Estimate0D_relErrUp;
  PyObject *__pyx_n_s_Estimate0D_relTotalErr;
  PyObject *__pyx_n_s_Estimate0D_relTotalErrNeg;
  PyObject *__pyx_n_s_Estimate0D_relTotalErrPos;
  PyObject *__pyx_n_s_Estimate0D_reset;
  PyObject *__pyx_n_s_Estimate0D_rmErrs;
  PyObject *__pyx_n_s_Estimate0D_rmSource;
  PyObject *__pyx_n_s_Estimate0D_scale;
  PyObject *__pyx_n_s_Estimate0D_serializeContent;
  PyObject *__pyx_n_s_Estimate0D_serializeMeta;
  PyObject *__pyx_n_s_Estimate0D_set;
  PyObject *__pyx_n_s_Estimate0D_setErr;
  PyObject *__pyx_n_s_Estimate0D_setVal;
  PyObject *__pyx_n_s_Estimate0D_sources;
  PyObject *__pyx_n_s_Estimate0D_totalErr;
  PyObject *__pyx_n_s_Estimate0D_val;
  PyObject *__pyx_kp_s_Estimate0D_value_2e_s;
  PyObject *__pyx_n_s_Estimate1D;
  PyObject *__pyx_n_s_Estimate2D;
  PyObject *__pyx_n_s_Estimate3D;
  PyObject *__pyx_n_s_Estimate___reduce_cython;
  PyObject *__pyx_n_s_Estimate___setstate_cython;
  PyObject *__pyx_n_s_Estimate_copy;
  PyObject *__pyx_n_s_Estimate_deserializeSources;
  PyObject *__pyx_n_s_Estimate_err;
  PyObject *__pyx_n_s_Estimate_errAvg;
  PyObject *__pyx_n_s_Estimate_errDown;
  PyObject *__pyx_n_s_Estimate_errDownUp;
  PyObject *__pyx_n_s_Estimate_errEnv;
  PyObject *__pyx_n_s_Estimate_errNeg;
  PyObject *__pyx_n_s_Estimate_errNegPos;
  PyObject *__pyx_n_s_Estimate_errPos;
  PyObject *__pyx_n_s_Estimate_errUp;
  PyObject *__pyx_n_s_Estimate_hasSource;
  PyObject *__pyx_n_s_Estimate_numErrs;
  PyObject *__pyx_n_s_Estimate_quadSum;
  PyObject *__pyx_n_s_Estimate_quadSumAvg;
  PyObject *__pyx_n_s_Estimate_quadSumEnv;
  PyObject *__pyx_n_s_Estimate_quadSumNeg;
  PyObject *__pyx_n_s_Estimate_quadSumPos;
  PyObject *__pyx_n_s_Estimate_relErr;
  PyObject *__pyx_n_s_Estimate_relErrAvg;
  PyObject *__pyx_n_s_Estimate_relErrDown;
  PyObject *__pyx_n_s_Estimate_relErrDownUp;
  PyObject *__pyx_n_s_Estimate_relErrEnv;
  PyObject *__pyx_n_s_Estimate_relErrUp;
  PyObject *__pyx_n_s_Estimate_relTotalErr;
  PyObject *__pyx_n_s_Estimate_relTotalErrAvg;
  PyObject *__pyx_n_s_Estimate_relTotalErrEnv;
  PyObject *__pyx_n_s_Estimate_relTotalErrNeg;
  PyObject *__pyx_n_s_Estimate_relTotalErrPos;
  PyObject *__pyx_n_s_Estimate_reset;
  PyObject *__pyx_n_s_Estimate_rmErrs;
  PyObject *__pyx_n_s_Estimate_rmSource;
  PyObject *__pyx_n_s_Estimate_scale;
  PyObject *__pyx_n_s_Estimate_serializeSources;
  PyObject *__pyx_n_s_Estimate_set;
  PyObject *__pyx_n_s_Estimate_setErr;
  PyObject *__pyx_n_s_Estimate_setVal;
  PyObject *__pyx_n_s_Estimate_sources;
  PyObject *__pyx_n_s_Estimate_totalErr;
  PyObject *__pyx_n_s_Estimate_totalErrAvg;
  PyObject *__pyx_n_s_Estimate_totalErrEnv;
  PyObject *__pyx_n_s_Estimate_totalErrNeg;
  PyObject *__pyx_n_s_Estimate_totalErrPos;
  PyObject *__pyx_n_s_Estimate_val;
  PyObject *__pyx_n_s_Estimate_valMax;
  PyObject *__pyx_n_s_Estimate_valMin;
  PyObject *__pyx_kp_s_Estimate_value_2e;
  PyObject *__pyx_n_s_H1D;
  PyObject *__pyx_n_s_H2D;
  PyObject *__pyx_n_s_H3D;
  PyObject *__pyx_n_s_Histo1D;
  PyObject *__pyx_n_s_Histo2D;
  PyObject *__pyx_n_s_Histo3D;
  PyObject *__pyx_kp_s_Histograms_must_be_of_the_same_t;
  PyObject *__pyx_n_s_ImportError;
  PyObject *__pyx_n_s_IndexError;
  PyObject *__pyx_n_s_MemoryError;
  PyObject *__pyx_n_s_N;
  PyObject *__pyx_kp_s_Null_pointer_referenced_perhaps;
  PyObject *__pyx_kp_s_Only_division_of_BinnedHisto_Bin;
  PyObject *__pyx_n_s_OrderedDict;
  PyObject *__pyx_n_s_P1D;
  PyObject *__pyx_n_s_P2D;
  PyObject *__pyx_n_s_P3D;
  PyObject *__pyx_n_s_P4D;
  PyObject *__pyx_n_s_Point;
  PyObject *__pyx_n_s_Point1D;
  PyObject *__pyx_n_s_Point1D___init1;
  PyObject *__pyx_n_s_Point1D___init2;
  PyObject *__pyx_n_s_Point1D___init3;
  PyObject *__pyx_n_s_Point1D___init4;
  PyObject *__pyx_n_s_Point1D___reduce_cython;
  PyObject *__pyx_n_s_Point1D___setstate_cython;
  PyObject *__pyx_n_s_Point1D__init1;
  PyObject *__pyx_n_s_Point1D__init2;
  PyObject *__pyx_n_s_Point1D__init2_locals_genexpr;
  PyObject *__pyx_n_s_Point1D__init3;
  PyObject *__pyx_n_s_Point1D__init4;
  PyObject *__pyx_n_s_Point1D_copy;
  PyObject *__pyx_n_s_Point1D_errs;
  PyObject *__pyx_n_s_Point1D_max;
  PyObject *__pyx_n_s_Point1D_min;
  PyObject *__pyx_n_s_Point1D_scaleX;
  PyObject *__pyx_n_s_Point1D_setX;
  PyObject *__pyx_n_s_Point1D_setXErrs;
  PyObject *__pyx_kp_s_Point1D_v1_g;
  PyObject *__pyx_n_s_Point1D_val;
  PyObject *__pyx_n_s_Point1D_x;
  PyObject *__pyx_n_s_Point1D_xErrAvg;
  PyObject *__pyx_n_s_Point1D_xErrMinus;
  PyObject *__pyx_n_s_Point1D_xErrPlus;
  PyObject *__pyx_n_s_Point1D_xErrs;
  PyObject *__pyx_n_s_Point1D_xMax;
  PyObject *__pyx_n_s_Point1D_xMin;
  PyObject *__pyx_n_s_Point2D;
  PyObject *__pyx_n_s_Point2D___init1;
  PyObject *__pyx_n_s_Point2D___init2;
  PyObject *__pyx_n_s_Point2D___init3;
  PyObject *__pyx_n_s_Point2D___init4;
  PyObject *__pyx_n_s_Point2D___reduce_cython;
  PyObject *__pyx_n_s_Point2D___setstate_cython;
  PyObject *__pyx_n_s_Point2D__init1;
  PyObject *__pyx_n_s_Point2D__init2;
  PyObject *__pyx_n_s_Point2D__init2_locals_genexpr;
  PyObject *__pyx_n_s_Point2D__init3;
  PyObject *__pyx_n_s_Point2D__init4;
  PyObject *__pyx_n_s_Point2D_copy;
  PyObject *__pyx_n_s_Point2D_errs;
  PyObject *__pyx_n_s_Point2D_max;
  PyObject *__pyx_n_s_Point2D_min;
  PyObject *__pyx_n_s_Point2D_scaleX;
  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_kp_s_Point2D_v1_g_v2_g;
  PyObject *__pyx_n_s_Point2D_val;
  PyObject *__pyx_n_s_Point2D_x;
  PyObject *__pyx_n_s_Point2D_xErrAvg;
  PyObject *__pyx_n_s_Point2D_xErrMinus;
  PyObject *__pyx_n_s_Point2D_xErrPlus;
  PyObject *__pyx_n_s_Point2D_xErrs;
  PyObject *__pyx_n_s_Point2D_xMax;
  PyObject *__pyx_n_s_Point2D_xMin;
  PyObject *__pyx_n_s_Point2D_y;
  PyObject *__pyx_n_s_Point2D_yErrAvg;
  PyObject *__pyx_n_s_Point2D_yErrMinus;
  PyObject *__pyx_n_s_Point2D_yErrPlus;
  PyObject *__pyx_n_s_Point2D_yErrs;
  PyObject *__pyx_n_s_Point2D_yMax;
  PyObject *__pyx_n_s_Point2D_yMin;
  PyObject *__pyx_n_s_Point3D;
  PyObject *__pyx_n_s_Point3D___init1;
  PyObject *__pyx_n_s_Point3D___init2;
  PyObject *__pyx_n_s_Point3D___init3;
  PyObject *__pyx_n_s_Point3D___init4;
  PyObject *__pyx_n_s_Point3D___reduce_cython;
  PyObject *__pyx_n_s_Point3D___setstate_cython;
  PyObject *__pyx_n_s_Point3D__init1;
  PyObject *__pyx_n_s_Point3D__init2;
  PyObject *__pyx_n_s_Point3D__init2_locals_genexpr;
  PyObject *__pyx_n_s_Point3D__init3;
  PyObject *__pyx_n_s_Point3D__init4;
  PyObject *__pyx_n_s_Point3D_copy;
  PyObject *__pyx_n_s_Point3D_errs;
  PyObject *__pyx_n_s_Point3D_max;
  PyObject *__pyx_n_s_Point3D_min;
  PyObject *__pyx_n_s_Point3D_scaleX;
  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_kp_s_Point3D_v1_g_v2_g_v3_g;
  PyObject *__pyx_n_s_Point3D_val;
  PyObject *__pyx_n_s_Point3D_x;
  PyObject *__pyx_n_s_Point3D_xErrAvg;
  PyObject *__pyx_n_s_Point3D_xErrMinus;
  PyObject *__pyx_n_s_Point3D_xErrPlus;
  PyObject *__pyx_n_s_Point3D_xErrs;
  PyObject *__pyx_n_s_Point3D_xMax;
  PyObject *__pyx_n_s_Point3D_xMin;
  PyObject *__pyx_n_s_Point3D_y;
  PyObject *__pyx_n_s_Point3D_yErrAvg;
  PyObject *__pyx_n_s_Point3D_yErrMinus;
  PyObject *__pyx_n_s_Point3D_yErrPlus;
  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_zErrMinus;
  PyObject *__pyx_n_s_Point3D_zErrPlus;
  PyObject *__pyx_n_s_Point3D_zErrs;
  PyObject *__pyx_n_s_Point3D_zMax;
  PyObject *__pyx_n_s_Point3D_zMin;
  PyObject *__pyx_n_s_Point4D;
  PyObject *__pyx_n_s_Point4D___init1;
  PyObject *__pyx_n_s_Point4D___init2;
  PyObject *__pyx_n_s_Point4D___reduce_cython;
  PyObject *__pyx_n_s_Point4D___setstate_cython;
  PyObject *__pyx_n_s_Point4D__init1;
  PyObject *__pyx_n_s_Point4D__init2;
  PyObject *__pyx_n_s_Point4D__init2_locals_genexpr;
  PyObject *__pyx_n_s_Point4D_copy;
  PyObject *__pyx_n_s_Point4D_errs;
  PyObject *__pyx_n_s_Point4D_max;
  PyObject *__pyx_n_s_Point4D_min;
  PyObject *__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g;
  PyObject *__pyx_n_s_Point4D_val;
  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_scale;
  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_Profile2D;
  PyObject *__pyx_n_s_RMS;
  PyObject *__pyx_n_s_RuntimeError;
  PyObject *__pyx_n_s_S1D;
  PyObject *__pyx_n_s_S2D;
  PyObject *__pyx_n_s_S3D;
  PyObject *__pyx_n_s_S4D;
  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_1;
  PyObject *__pyx_n_s_Scatter1D___init_2;
  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_1;
  PyObject *__pyx_n_s_Scatter1D__init_2;
  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_deserializeContent;
  PyObject *__pyx_n_s_Scatter1D_deserializeMeta;
  PyObject *__pyx_n_s_Scatter1D_edges;
  PyObject *__pyx_n_s_Scatter1D_errAvgs;
  PyObject *__pyx_n_s_Scatter1D_errs;
  PyObject *__pyx_n_s_Scatter1D_lengthContent;
  PyObject *__pyx_n_s_Scatter1D_lengthMeta;
  PyObject *__pyx_n_s_Scatter1D_maxs;
  PyObject *__pyx_n_s_Scatter1D_mins;
  PyObject *__pyx_n_s_Scatter1D_mkScatter;
  PyObject *__pyx_n_s_Scatter1D_numPoints;
  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_scale;
  PyObject *__pyx_n_s_Scatter1D_scaleErr;
  PyObject *__pyx_n_s_Scatter1D_scaleVal;
  PyObject *__pyx_n_s_Scatter1D_scaleX;
  PyObject *__pyx_n_s_Scatter1D_serializeContent;
  PyObject *__pyx_n_s_Scatter1D_serializeMeta;
  PyObject *__pyx_n_s_Scatter1D_vals;
  PyObject *__pyx_n_s_Scatter1D_xErrAvgs;
  PyObject *__pyx_n_s_Scatter1D_xErrs;
  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_1;
  PyObject *__pyx_n_s_Scatter2D___init_2;
  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_1;
  PyObject *__pyx_n_s_Scatter2D__init_2;
  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_deserializeContent;
  PyObject *__pyx_n_s_Scatter2D_deserializeMeta;
  PyObject *__pyx_n_s_Scatter2D_edges;
  PyObject *__pyx_n_s_Scatter2D_errAvgs;
  PyObject *__pyx_n_s_Scatter2D_errs;
  PyObject *__pyx_n_s_Scatter2D_lengthContent;
  PyObject *__pyx_n_s_Scatter2D_lengthMeta;
  PyObject *__pyx_n_s_Scatter2D_maxs;
  PyObject *__pyx_n_s_Scatter2D_mins;
  PyObject *__pyx_n_s_Scatter2D_mkScatter;
  PyObject *__pyx_n_s_Scatter2D_numPoints;
  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_scale;
  PyObject *__pyx_n_s_Scatter2D_scaleErr;
  PyObject *__pyx_n_s_Scatter2D_scaleVal;
  PyObject *__pyx_n_s_Scatter2D_scaleX;
  PyObject *__pyx_n_s_Scatter2D_scaleY;
  PyObject *__pyx_n_s_Scatter2D_serializeContent;
  PyObject *__pyx_n_s_Scatter2D_serializeMeta;
  PyObject *__pyx_n_s_Scatter2D_vals;
  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_1;
  PyObject *__pyx_n_s_Scatter3D___init_2;
  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_1;
  PyObject *__pyx_n_s_Scatter3D__init_2;
  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_deserializeContent;
  PyObject *__pyx_n_s_Scatter3D_deserializeMeta;
  PyObject *__pyx_n_s_Scatter3D_edges;
  PyObject *__pyx_n_s_Scatter3D_errAvgs;
  PyObject *__pyx_n_s_Scatter3D_errs;
  PyObject *__pyx_n_s_Scatter3D_lengthContent;
  PyObject *__pyx_n_s_Scatter3D_lengthMeta;
  PyObject *__pyx_n_s_Scatter3D_maxs;
  PyObject *__pyx_n_s_Scatter3D_mins;
  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_scale;
  PyObject *__pyx_n_s_Scatter3D_scaleErr;
  PyObject *__pyx_n_s_Scatter3D_scaleVal;
  PyObject *__pyx_n_s_Scatter3D_scaleX;
  PyObject *__pyx_n_s_Scatter3D_scaleY;
  PyObject *__pyx_n_s_Scatter3D_scaleZ;
  PyObject *__pyx_n_s_Scatter3D_serializeContent;
  PyObject *__pyx_n_s_Scatter3D_serializeMeta;
  PyObject *__pyx_n_s_Scatter3D_vals;
  PyObject *__pyx_n_s_Scatter3D_xErrAvgs;
  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_yErrAvgs;
  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_zErrAvgs;
  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_Scatter4D;
  PyObject *__pyx_n_s_Scatter4D___addPoint_explicit;
  PyObject *__pyx_n_s_Scatter4D___addPoint_point;
  PyObject *__pyx_n_s_Scatter4D___init_1;
  PyObject *__pyx_n_s_Scatter4D___init_2;
  PyObject *__pyx_n_s_Scatter4D___reduce_cython;
  PyObject *__pyx_n_s_Scatter4D___setstate_cython;
  PyObject *__pyx_n_s_Scatter4D__addPoint_explicit;
  PyObject *__pyx_n_s_Scatter4D__addPoint_point;
  PyObject *__pyx_n_s_Scatter4D__init_1;
  PyObject *__pyx_n_s_Scatter4D__init_2;
  PyObject *__pyx_n_s_Scatter4D__mknp;
  PyObject *__pyx_n_s_Scatter4D_addPoint;
  PyObject *__pyx_n_s_Scatter4D_addPoints;
  PyObject *__pyx_n_s_Scatter4D_clone;
  PyObject *__pyx_n_s_Scatter4D_combineWith;
  PyObject *__pyx_n_s_Scatter4D_deserializeContent;
  PyObject *__pyx_n_s_Scatter4D_deserializeMeta;
  PyObject *__pyx_n_s_Scatter4D_edges;
  PyObject *__pyx_n_s_Scatter4D_errAvgs;
  PyObject *__pyx_n_s_Scatter4D_errs;
  PyObject *__pyx_n_s_Scatter4D_lengthContent;
  PyObject *__pyx_n_s_Scatter4D_lengthMeta;
  PyObject *__pyx_n_s_Scatter4D_maxs;
  PyObject *__pyx_n_s_Scatter4D_mins;
  PyObject *__pyx_n_s_Scatter4D_mkScatter;
  PyObject *__pyx_n_s_Scatter4D_numPoints;
  PyObject *__pyx_n_s_Scatter4D_point;
  PyObject *__pyx_n_s_Scatter4D_points;
  PyObject *__pyx_n_s_Scatter4D_reset;
  PyObject *__pyx_n_s_Scatter4D_rmPoint;
  PyObject *__pyx_n_s_Scatter4D_rmPoints;
  PyObject *__pyx_n_s_Scatter4D_scale;
  PyObject *__pyx_n_s_Scatter4D_scaleErr;
  PyObject *__pyx_n_s_Scatter4D_scaleVal;
  PyObject *__pyx_n_s_Scatter4D_serializeContent;
  PyObject *__pyx_n_s_Scatter4D_serializeMeta;
  PyObject *__pyx_n_s_Scatter4D_vals;
  PyObject *__pyx_n_s_TypeError;
  PyObject *__pyx_kp_s_Unknown_axis_combination_encount;
  PyObject *__pyx_kp_s_Unknown_edge_type_encountered;
  PyObject *__pyx_n_s_ValueError;
  PyObject *__pyx_kp_s_WARNING_method_not_supported_for;
  PyObject *__pyx_n_s__10;
  PyObject *__pyx_kp_u__108;
  PyObject *__pyx_n_s__1405;
  PyObject *__pyx_kp_s__2;
  PyObject *__pyx_kp_s__5;
  PyObject *__pyx_kp_s__6;
  PyObject *__pyx_kp_s__7;
  PyObject *__pyx_n_s_a;
  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_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_append;
  PyObject *__pyx_n_s_areaUnderCurve;
  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_asum;
  PyObject *__pyx_n_s_asyncio_coroutines;
  PyObject *__pyx_n_s_attach;
  PyObject *__pyx_n_s_attrgetter;
  PyObject *__pyx_n_s_auc;
  PyObject *__pyx_n_s_autostr;
  PyObject *__pyx_n_s_axes;
  PyObject *__pyx_n_s_axisConfig;
  PyObject *__pyx_n_s_b;
  PyObject *__pyx_n_s_base;
  PyObject *__pyx_n_s_begin;
  PyObject *__pyx_n_s_bin;
  PyObject *__pyx_n_s_binAt;
  PyObject *__pyx_n_s_binDim;
  PyObject *__pyx_n_s_binIndex;
  PyObject *__pyx_n_s_bin_2;
  PyObject *__pyx_n_s_binedges;
  PyObject *__pyx_n_s_binning;
  PyObject *__pyx_n_s_binning_2;
  PyObject *__pyx_n_s_bins;
  PyObject *__pyx_n_s_binwidthdiv;
  PyObject *__pyx_n_s_buffer;
  PyObject *__pyx_n_s_bytestr_from_file;
  PyObject *__pyx_n_s_cdata;
  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_config;
  PyObject *__pyx_n_s_cont;
  PyObject *__pyx_n_s_copy;
  PyObject *__pyx_kp_s_core_pyx;
  PyObject *__pyx_n_s_correlation;
  PyObject *__pyx_n_s_covariance;
  PyObject *__pyx_n_s_covarianceMatrix;
  PyObject *__pyx_n_s_cpptype;
  PyObject *__pyx_n_s_crossTerm;
  PyObject *__pyx_n_s_d;
  PyObject *__pyx_n_s_d2ptr;
  PyObject *__pyx_n_s_dArea;
  PyObject *__pyx_n_s_dLen;
  PyObject *__pyx_n_s_dVol;
  PyObject *__pyx_n_s_da;
  PyObject *__pyx_n_s_data;
  PyObject *__pyx_n_s_dd;
  PyObject *__pyx_n_s_ddd;
  PyObject *__pyx_n_s_ddi;
  PyObject *__pyx_n_s_dds;
  PyObject *__pyx_n_s_default;
  PyObject *__pyx_n_s_density;
  PyObject *__pyx_n_s_densityError;
  PyObject *__pyx_n_s_densitySum;
  PyObject *__pyx_n_s_deserializeContent;
  PyObject *__pyx_n_s_deserializeMeta;
  PyObject *__pyx_n_s_deserializeSources;
  PyObject *__pyx_n_s_di;
  PyObject *__pyx_n_s_dict;
  PyObject *__pyx_n_s_did;
  PyObject *__pyx_n_s_dii;
  PyObject *__pyx_n_s_dim;
  PyObject *__pyx_n_s_dis;
  PyObject *__pyx_kp_u_disable;
  PyObject *__pyx_n_s_divbyvol;
  PyObject *__pyx_n_s_divide;
  PyObject *__pyx_n_s_divideBy;
  PyObject *__pyx_n_s_doc;
  PyObject *__pyx_n_s_ds;
  PyObject *__pyx_n_s_dsd;
  PyObject *__pyx_n_s_dsi;
  PyObject *__pyx_n_s_dss;
  PyObject *__pyx_n_s_dx;
  PyObject *__pyx_n_s_e;
  PyObject *__pyx_n_s_edge;
  PyObject *__pyx_n_s_edges;
  PyObject *__pyx_n_s_edgesA1;
  PyObject *__pyx_n_s_edgesA2;
  PyObject *__pyx_n_s_edgesA3;
  PyObject *__pyx_n_s_edges_d;
  PyObject *__pyx_n_s_edges_i;
  PyObject *__pyx_n_s_edges_s;
  PyObject *__pyx_n_s_effNumEntries;
  PyObject *__pyx_n_s_efficiency;
  PyObject *__pyx_kp_u_enable;
  PyObject *__pyx_n_s_encode;
  PyObject *__pyx_n_s_end;
  PyObject *__pyx_n_s_enter;
  PyObject *__pyx_n_s_enumerate;
  PyObject *__pyx_n_s_err;
  PyObject *__pyx_n_s_errAvg;
  PyObject *__pyx_n_s_errAvgs;
  PyObject *__pyx_n_s_errDown;
  PyObject *__pyx_n_s_errDownUp;
  PyObject *__pyx_n_s_errEnv;
  PyObject *__pyx_n_s_errNeg;
  PyObject *__pyx_n_s_errNegPos;
  PyObject *__pyx_n_s_errPos;
  PyObject *__pyx_n_s_errUp;
  PyObject *__pyx_n_s_errW;
  PyObject *__pyx_n_s_errm;
  PyObject *__pyx_n_s_errors1;
  PyObject *__pyx_n_s_errors2;
  PyObject *__pyx_n_s_errp;
  PyObject *__pyx_n_s_errs;
  PyObject *__pyx_n_s_errsdn;
  PyObject *__pyx_n_s_errsup;
  PyObject *__pyx_n_s_es;
  PyObject *__pyx_n_s_estptr;
  PyObject *__pyx_n_s_exit;
  PyObject *__pyx_n_s_f;
  PyObject *__pyx_n_s_factor;
  PyObject *__pyx_n_s_file;
  PyObject *__pyx_n_s_file_or_filename;
  PyObject *__pyx_n_s_filename;
  PyObject *__pyx_n_s_fill;
  PyObject *__pyx_n_s_fillDim;
  PyObject *__pyx_n_s_find;
  PyObject *__pyx_n_s_fixed_length;
  PyObject *__pyx_n_s_fn;
  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_global_set;
  PyObject *__pyx_n_s_hasAnnotation;
  PyObject *__pyx_n_s_hasSource;
  PyObject *__pyx_n_s_i;
  PyObject *__pyx_n_s_id;
  PyObject *__pyx_n_s_idd;
  PyObject *__pyx_n_s_idi;
  PyObject *__pyx_n_s_ids;
  PyObject *__pyx_n_s_idx;
  PyObject *__pyx_n_s_idxs;
  PyObject *__pyx_n_s_ignoreOffDiagonalTerms;
  PyObject *__pyx_n_s_ii;
  PyObject *__pyx_n_s_iid;
  PyObject *__pyx_n_s_iii;
  PyObject *__pyx_n_s_iis;
  PyObject *__pyx_n_s_import;
  PyObject *__pyx_n_s_includeBinVol;
  PyObject *__pyx_n_s_includeMaskedBins;
  PyObject *__pyx_n_s_includeOverflows;
  PyObject *__pyx_kp_s_include_AnalysisObject_pyx;
  PyObject *__pyx_kp_s_include_Binning_pyx;
  PyObject *__pyx_kp_s_include_Counter_pyx;
  PyObject *__pyx_kp_s_include_Dbn0D_pyx;
  PyObject *__pyx_kp_s_include_Estimate0D_pyx;
  PyObject *__pyx_kp_s_include_Estimate_pyx;
  PyObject *__pyx_kp_s_include_Functions_pyx;
  PyObject *__pyx_kp_s_include_IO_pyx;
  PyObject *__pyx_kp_s_include_Point_pyx;
  PyObject *__pyx_kp_s_include_generated_Axis_pyx;
  PyObject *__pyx_kp_s_include_generated_Bin1D_pyx;
  PyObject *__pyx_kp_s_include_generated_Bin2D_pyx;
  PyObject *__pyx_kp_s_include_generated_Bin3D_pyx;
  PyObject *__pyx_kp_s_include_generated_BinnedEstimate;
  PyObject *__pyx_kp_s_include_generated_BinnedEstimate_2;
  PyObject *__pyx_kp_s_include_generated_BinnedEstimate_3;
  PyObject *__pyx_kp_s_include_generated_BinnedHisto1D;
  PyObject *__pyx_kp_s_include_generated_BinnedHisto2D;
  PyObject *__pyx_kp_s_include_generated_BinnedHisto3D;
  PyObject *__pyx_kp_s_include_generated_BinnedProfile1;
  PyObject *__pyx_kp_s_include_generated_BinnedProfile2;
  PyObject *__pyx_kp_s_include_generated_Dbn1D_pyx;
  PyObject *__pyx_kp_s_include_generated_Dbn2D_pyx;
  PyObject *__pyx_kp_s_include_generated_Dbn3D_pyx;
  PyObject *__pyx_kp_s_include_generated_Point1D_pyx;
  PyObject *__pyx_kp_s_include_generated_Point2D_pyx;
  PyObject *__pyx_kp_s_include_generated_Point3D_pyx;
  PyObject *__pyx_kp_s_include_generated_Point4D_pyx;
  PyObject *__pyx_kp_s_include_generated_Scatter1D_pyx;
  PyObject *__pyx_kp_s_include_generated_Scatter2D_pyx;
  PyObject *__pyx_kp_s_include_generated_Scatter3D_pyx;
  PyObject *__pyx_kp_s_include_generated_Scatter4D_pyx;
  PyObject *__pyx_n_s_index;
  PyObject *__pyx_n_s_indexArr;
  PyObject *__pyx_n_s_indexAt;
  PyObject *__pyx_n_s_index_2;
  PyObject *__pyx_n_s_index_between;
  PyObject *__pyx_n_s_index_list;
  PyObject *__pyx_n_s_indices;
  PyObject *__pyx_n_s_indices_2;
  PyObject *__pyx_n_s_init;
  PyObject *__pyx_n_s_init1;
  PyObject *__pyx_n_s_init2;
  PyObject *__pyx_n_s_init3;
  PyObject *__pyx_n_s_init4;
  PyObject *__pyx_n_s_init_1;
  PyObject *__pyx_n_s_init_2;
  PyObject *__pyx_n_s_init_subclass;
  PyObject *__pyx_n_s_initializing;
  PyObject *__pyx_n_s_integral;
  PyObject *__pyx_n_s_integralError;
  PyObject *__pyx_n_s_is;
  PyObject *__pyx_n_s_isMasked;
  PyObject *__pyx_n_s_isVisible;
  PyObject *__pyx_n_s_is_coroutine;
  PyObject *__pyx_n_s_isd;
  PyObject *__pyx_kp_u_isenabled;
  PyObject *__pyx_n_s_isi;
  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_itertools;
  PyObject *__pyx_n_s_j;
  PyObject *__pyx_n_s_join;
  PyObject *__pyx_n_s_k;
  PyObject *__pyx_n_s_key;
  PyObject *__pyx_n_s_kwargs;
  PyObject *__pyx_n_s_lengthContent;
  PyObject *__pyx_n_s_lengthMeta;
  PyObject *__pyx_n_s_linspace;
  PyObject *__pyx_n_s_localIndices;
  PyObject *__pyx_n_s_localToGlobalIndex;
  PyObject *__pyx_n_s_local_set;
  PyObject *__pyx_n_s_logspace;
  PyObject *__pyx_n_s_lower;
  PyObject *__pyx_n_s_lowerX;
  PyObject *__pyx_n_s_lowerY;
  PyObject *__pyx_n_s_lowerZ;
  PyObject *__pyx_n_s_main;
  PyObject *__pyx_n_s_mapTypes;
  PyObject *__pyx_n_s_maskBin;
  PyObject *__pyx_n_s_maskBinAt;
  PyObject *__pyx_n_s_maskBins;
  PyObject *__pyx_n_s_maskSlice;
  PyObject *__pyx_n_s_masked;
  PyObject *__pyx_n_s_maskedBins;
  PyObject *__pyx_n_s_max;
  PyObject *__pyx_n_s_maxDensity;
  PyObject *__pyx_n_s_maxs;
  PyObject *__pyx_n_s_maxsize;
  PyObject *__pyx_n_s_mean;
  PyObject *__pyx_n_s_metaclass;
  PyObject *__pyx_n_s_mid;
  PyObject *__pyx_n_s_min;
  PyObject *__pyx_n_s_mins;
  PyObject *__pyx_n_s_mkEstimate;
  PyObject *__pyx_n_s_mkHisto;
  PyObject *__pyx_n_s_mkScatter;
  PyObject *__pyx_n_s_mknp;
  PyObject *__pyx_n_s_mktxtifstr;
  PyObject *__pyx_n_s_module;
  PyObject *__pyx_n_s_mro_entries;
  PyObject *__pyx_n_s_n;
  PyObject *__pyx_n_s_naiveChi2;
  PyObject *__pyx_n_s_naiveChi2reduced;
  PyObject *__pyx_n_s_name;
  PyObject *__pyx_n_s_name_2;
  PyObject *__pyx_n_s_nbins;
  PyObject *__pyx_n_s_nbinsX;
  PyObject *__pyx_n_s_nbinsY;
  PyObject *__pyx_n_s_nbinsZ;
  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_numBinsZ;
  PyObject *__pyx_n_s_numEntries;
  PyObject *__pyx_n_s_numErrs;
  PyObject *__pyx_n_s_numPoints;
  PyObject *__pyx_n_s_numpy;
  PyObject *__pyx_n_s_object;
  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_p;
  PyObject *__pyx_n_s_parseyaml;
  PyObject *__pyx_n_s_pat_match;
  PyObject *__pyx_n_s_pat_uncorr;
  PyObject *__pyx_n_s_path;
  PyObject *__pyx_n_s_patterns;
  PyObject *__pyx_n_s_pdfspace;
  PyObject *__pyx_n_s_point;
  PyObject *__pyx_n_s_points;
  PyObject *__pyx_n_s_pos;
  PyObject *__pyx_n_s_precision;
  PyObject *__pyx_n_s_prep_patterns;
  PyObject *__pyx_n_s_prepare;
  PyObject *__pyx_n_s_print;
  PyObject *__pyx_n_s_pyx_state;
  PyObject *__pyx_n_s_pyx_vtable;
  PyObject *__pyx_n_s_quadSum;
  PyObject *__pyx_n_s_quadSumAvg;
  PyObject *__pyx_n_s_quadSumEnv;
  PyObject *__pyx_n_s_quadSumNeg;
  PyObject *__pyx_n_s_quadSumPos;
  PyObject *__pyx_n_s_qualname;
  PyObject *__pyx_n_s_range;
  PyObject *__pyx_n_s_rb;
  PyObject *__pyx_n_s_read;
  PyObject *__pyx_n_s_readFLAT;
  PyObject *__pyx_n_s_readYODA;
  PyObject *__pyx_n_s_read_symmetric;
  PyObject *__pyx_n_s_rebinX;
  PyObject *__pyx_n_s_rebinXBy;
  PyObject *__pyx_n_s_rebinXTo;
  PyObject *__pyx_n_s_rebinY;
  PyObject *__pyx_n_s_rebinYBy;
  PyObject *__pyx_n_s_rebinYTo;
  PyObject *__pyx_n_s_rebinZ;
  PyObject *__pyx_n_s_rebinZBy;
  PyObject *__pyx_n_s_rebinZTo;
  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_relErrAvg;
  PyObject *__pyx_n_s_relErrDown;
  PyObject *__pyx_n_s_relErrDownUp;
  PyObject *__pyx_n_s_relErrEnv;
  PyObject *__pyx_n_s_relErrUp;
  PyObject *__pyx_n_s_relErrW;
  PyObject *__pyx_n_s_relTotalErr;
  PyObject *__pyx_n_s_relTotalErrAvg;
  PyObject *__pyx_n_s_relTotalErrEnv;
  PyObject *__pyx_n_s_relTotalErrNeg;
  PyObject *__pyx_n_s_relTotalErrPos;
  PyObject *__pyx_n_s_repeat;
  PyObject *__pyx_n_s_reset;
  PyObject *__pyx_n_s_resetPath;
  PyObject *__pyx_n_s_resetTitle;
  PyObject *__pyx_n_s_rmAnnotation;
  PyObject *__pyx_n_s_rmErrs;
  PyObject *__pyx_n_s_rmPoint;
  PyObject *__pyx_n_s_rmPoints;
  PyObject *__pyx_n_s_rmSource;
  PyObject *__pyx_n_s_row;
  PyObject *__pyx_n_s_rtn;
  PyObject *__pyx_n_s_s;
  PyObject *__pyx_n_s_s1;
  PyObject *__pyx_n_s_sW;
  PyObject *__pyx_n_s_sW2;
  PyObject *__pyx_n_s_sWcross;
  PyObject *__pyx_kp_s_s_s;
  PyObject *__pyx_kp_s_s_s_d_points;
  PyObject *__pyx_kp_s_s_s_s_d_bins;
  PyObject *__pyx_kp_s_s_s_sumw_0_2g_err_s;
  PyObject *__pyx_n_s_sample;
  PyObject *__pyx_n_s_sample1;
  PyObject *__pyx_n_s_sample2;
  PyObject *__pyx_n_s_scale;
  PyObject *__pyx_n_s_scaleErr;
  PyObject *__pyx_n_s_scaleVal;
  PyObject *__pyx_n_s_scaleW;
  PyObject *__pyx_n_s_scaleX;
  PyObject *__pyx_n_s_scaleY;
  PyObject *__pyx_n_s_scaleZ;
  PyObject *__pyx_n_s_sd;
  PyObject *__pyx_n_s_sdd;
  PyObject *__pyx_n_s_sdi;
  PyObject *__pyx_n_s_sds;
  PyObject *__pyx_n_s_self;
  PyObject *__pyx_kp_s_self__ptr_cannot_be_converted_to;
  PyObject *__pyx_n_s_send;
  PyObject *__pyx_n_s_serializeContent;
  PyObject *__pyx_n_s_serializeMeta;
  PyObject *__pyx_n_s_serializeSources;
  PyObject *__pyx_n_s_set;
  PyObject *__pyx_n_s_setAnnotation;
  PyObject *__pyx_n_s_setBinning;
  PyObject *__pyx_n_s_setErr;
  PyObject *__pyx_n_s_setErrMinus;
  PyObject *__pyx_n_s_setErrPlus;
  PyObject *__pyx_n_s_setErrs;
  PyObject *__pyx_n_s_setIndices;
  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_config;
  PyObject *__pyx_n_s_set_name;
  PyObject *__pyx_n_s_setstate;
  PyObject *__pyx_n_s_setstate_cython;
  PyObject *__pyx_n_s_si;
  PyObject *__pyx_n_s_sid;
  PyObject *__pyx_n_s_sii;
  PyObject *__pyx_n_s_sis;
  PyObject *__pyx_n_s_skipPath;
  PyObject *__pyx_n_s_skipTitle;
  PyObject *__pyx_n_s_source;
  PyObject *__pyx_n_s_sources;
  PyObject *__pyx_n_s_spec;
  PyObject *__pyx_n_s_split;
  PyObject *__pyx_n_s_ss;
  PyObject *__pyx_n_s_ssd;
  PyObject *__pyx_n_s_ssi;
  PyObject *__pyx_n_s_sss;
  PyObject *__pyx_n_s_st;
  PyObject *__pyx_kp_s_stat_uncor;
  PyObject *__pyx_n_s_status;
  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_to_file;
  PyObject *__pyx_kp_s_stringsource;
  PyObject *__pyx_n_s_sum;
  PyObject *__pyx_n_s_sumW;
  PyObject *__pyx_n_s_sumW2;
  PyObject *__pyx_n_s_sumWA;
  PyObject *__pyx_n_s_sumWA2;
  PyObject *__pyx_n_s_sumWX;
  PyObject *__pyx_n_s_sumWX2;
  PyObject *__pyx_n_s_sumWY;
  PyObject *__pyx_n_s_sumWY2;
  PyObject *__pyx_n_s_sumWZ;
  PyObject *__pyx_n_s_sumWZ2;
  PyObject *__pyx_n_s_sumWcross;
  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_tmp;
  PyObject *__pyx_n_s_totalErr;
  PyObject *__pyx_n_s_totalErrAvg;
  PyObject *__pyx_n_s_totalErrEnv;
  PyObject *__pyx_n_s_totalErrNeg;
  PyObject *__pyx_n_s_totalErrPos;
  PyObject *__pyx_n_s_try_loop;
  PyObject *__pyx_n_s_type;
  PyObject *__pyx_n_s_unpatterns;
  PyObject *__pyx_n_s_upperX;
  PyObject *__pyx_n_s_upperY;
  PyObject *__pyx_n_s_upperZ;
  PyObject *__pyx_n_s_useFocus;
  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_valMax;
  PyObject *__pyx_n_s_valMin;
  PyObject *__pyx_n_s_vals;
  PyObject *__pyx_n_s_value;
  PyObject *__pyx_n_s_values;
  PyObject *__pyx_n_s_variance;
  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_w;
  PyObject *__pyx_n_s_weight;
  PyObject *__pyx_n_s_weights;
  PyObject *__pyx_n_s_width;
  PyObject *__pyx_n_s_write;
  PyObject *__pyx_n_s_writeFLAT;
  PyObject *__pyx_n_s_writeYODA;
  PyObject *__pyx_n_s_writeYODA1;
  PyObject *__pyx_n_s_x;
  PyObject *__pyx_n_s_xEdge;
  PyObject *__pyx_n_s_xEdges;
  PyObject *__pyx_n_s_xErr;
  PyObject *__pyx_n_s_xErrAvg;
  PyObject *__pyx_n_s_xErrAvgs;
  PyObject *__pyx_n_s_xErrDn;
  PyObject *__pyx_n_s_xErrMinus;
  PyObject *__pyx_n_s_xErrPlus;
  PyObject *__pyx_n_s_xErrUp;
  PyObject *__pyx_n_s_xErrs;
  PyObject *__pyx_n_s_xMax;
  PyObject *__pyx_n_s_xMaxs;
  PyObject *__pyx_n_s_xMean;
  PyObject *__pyx_n_s_xMid;
  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_xVal;
  PyObject *__pyx_n_s_xVals;
  PyObject *__pyx_n_s_xVariance;
  PyObject *__pyx_n_s_xWidth;
  PyObject *__pyx_n_s_xWidths;
  PyObject *__pyx_n_s_xedges;
  PyObject *__pyx_n_s_xmax;
  PyObject *__pyx_n_s_xmin;
  PyObject *__pyx_n_s_xs;
  PyObject *__pyx_n_s_y;
  PyObject *__pyx_n_s_yEdge;
  PyObject *__pyx_n_s_yEdges;
  PyObject *__pyx_n_s_yErr;
  PyObject *__pyx_n_s_yErrAvg;
  PyObject *__pyx_n_s_yErrAvgs;
  PyObject *__pyx_n_s_yErrDn;
  PyObject *__pyx_n_s_yErrMinus;
  PyObject *__pyx_n_s_yErrPlus;
  PyObject *__pyx_n_s_yErrUp;
  PyObject *__pyx_n_s_yErrs;
  PyObject *__pyx_n_s_yMax;
  PyObject *__pyx_n_s_yMaxs;
  PyObject *__pyx_n_s_yMean;
  PyObject *__pyx_n_s_yMid;
  PyObject *__pyx_n_s_yMin;
  PyObject *__pyx_n_s_yMins;
  PyObject *__pyx_n_s_yRMS;
  PyObject *__pyx_n_s_yStdDev;
  PyObject *__pyx_n_s_yStdErr;
  PyObject *__pyx_n_s_yVal;
  PyObject *__pyx_n_s_yVals;
  PyObject *__pyx_n_s_yVariance;
  PyObject *__pyx_n_s_yWidth;
  PyObject *__pyx_n_s_yWidths;
  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_zEdge;
  PyObject *__pyx_n_s_zEdges;
  PyObject *__pyx_n_s_zErr;
  PyObject *__pyx_n_s_zErrAvg;
  PyObject *__pyx_n_s_zErrAvgs;
  PyObject *__pyx_n_s_zErrDn;
  PyObject *__pyx_n_s_zErrMinus;
  PyObject *__pyx_n_s_zErrPlus;
  PyObject *__pyx_n_s_zErrUp;
  PyObject *__pyx_n_s_zErrs;
  PyObject *__pyx_n_s_zMax;
  PyObject *__pyx_n_s_zMaxs;
  PyObject *__pyx_n_s_zMean;
  PyObject *__pyx_n_s_zMid;
  PyObject *__pyx_n_s_zMin;
  PyObject *__pyx_n_s_zMins;
  PyObject *__pyx_n_s_zRMS;
  PyObject *__pyx_n_s_zStdDev;
  PyObject *__pyx_n_s_zStdErr;
  PyObject *__pyx_n_s_zVal;
  PyObject *__pyx_n_s_zVals;
  PyObject *__pyx_n_s_zVariance;
  PyObject *__pyx_n_s_zWidth;
  PyObject *__pyx_n_s_zWidths;
  PyObject *__pyx_float_2_;
  PyObject *__pyx_float_0_0;
  PyObject *__pyx_float_1_0;
  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_k__92;
  PyObject *__pyx_k__93;
  PyObject *__pyx_k__94;
  PyObject *__pyx_k__95;
  PyObject *__pyx_k__96;
  PyObject *__pyx_k__97;
  PyObject *__pyx_k__98;
  PyObject *__pyx_k__99;
  PyObject *__pyx_k__100;
  PyObject *__pyx_k__101;
  PyObject *__pyx_k__102;
  PyObject *__pyx_k__103;
  PyObject *__pyx_k__104;
  PyObject *__pyx_k__105;
  PyObject *__pyx_k__106;
  PyObject *__pyx_tuple_;
  PyObject *__pyx_tuple__3;
  PyObject *__pyx_tuple__4;
  PyObject *__pyx_tuple__8;
  PyObject *__pyx_tuple__9;
  PyObject *__pyx_tuple__11;
  PyObject *__pyx_tuple__12;
  PyObject *__pyx_tuple__13;
  PyObject *__pyx_tuple__15;
  PyObject *__pyx_tuple__17;
  PyObject *__pyx_tuple__19;
  PyObject *__pyx_tuple__21;
  PyObject *__pyx_tuple__24;
  PyObject *__pyx_tuple__26;
  PyObject *__pyx_tuple__89;
  PyObject *__pyx_tuple__90;
  PyObject *__pyx_tuple__91;
  PyObject *__pyx_tuple__107;
  PyObject *__pyx_tuple__115;
  PyObject *__pyx_tuple__117;
  PyObject *__pyx_tuple__119;
  PyObject *__pyx_tuple__121;
  PyObject *__pyx_tuple__122;
  PyObject *__pyx_tuple__124;
  PyObject *__pyx_tuple__130;
  PyObject *__pyx_tuple__133;
  PyObject *__pyx_tuple__137;
  PyObject *__pyx_tuple__139;
  PyObject *__pyx_tuple__140;
  PyObject *__pyx_tuple__141;
  PyObject *__pyx_tuple__144;
  PyObject *__pyx_tuple__152;
  PyObject *__pyx_tuple__154;
  PyObject *__pyx_tuple__155;
  PyObject *__pyx_tuple__164;
  PyObject *__pyx_tuple__166;
  PyObject *__pyx_tuple__168;
  PyObject *__pyx_tuple__169;
  PyObject *__pyx_tuple__171;
  PyObject *__pyx_tuple__172;
  PyObject *__pyx_tuple__174;
  PyObject *__pyx_tuple__177;
  PyObject *__pyx_tuple__179;
  PyObject *__pyx_tuple__182;
  PyObject *__pyx_tuple__184;
  PyObject *__pyx_tuple__201;
  PyObject *__pyx_tuple__203;
  PyObject *__pyx_tuple__205;
  PyObject *__pyx_tuple__209;
  PyObject *__pyx_tuple__227;
  PyObject *__pyx_tuple__250;
  PyObject *__pyx_tuple__290;
  PyObject *__pyx_tuple__294;
  PyObject *__pyx_tuple__296;
  PyObject *__pyx_tuple__298;
  PyObject *__pyx_tuple__301;
  PyObject *__pyx_tuple__303;
  PyObject *__pyx_tuple__304;
  PyObject *__pyx_tuple__306;
  PyObject *__pyx_tuple__308;
  PyObject *__pyx_tuple__310;
  PyObject *__pyx_tuple__316;
  PyObject *__pyx_tuple__319;
  PyObject *__pyx_tuple__322;
  PyObject *__pyx_tuple__324;
  PyObject *__pyx_tuple__326;
  PyObject *__pyx_tuple__328;
  PyObject *__pyx_tuple__330;
  PyObject *__pyx_tuple__333;
  PyObject *__pyx_tuple__335;
  PyObject *__pyx_tuple__336;
  PyObject *__pyx_tuple__339;
  PyObject *__pyx_tuple__341;
  PyObject *__pyx_tuple__342;
  PyObject *__pyx_tuple__347;
  PyObject *__pyx_tuple__349;
  PyObject *__pyx_tuple__351;
  PyObject *__pyx_tuple__353;
  PyObject *__pyx_tuple__357;
  PyObject *__pyx_tuple__362;
  PyObject *__pyx_tuple__364;
  PyObject *__pyx_tuple__367;
  PyObject *__pyx_tuple__369;
  PyObject *__pyx_tuple__378;
  PyObject *__pyx_tuple__380;
  PyObject *__pyx_tuple__382;
  PyObject *__pyx_tuple__385;
  PyObject *__pyx_tuple__387;
  PyObject *__pyx_tuple__389;
  PyObject *__pyx_tuple__391;
  PyObject *__pyx_tuple__393;
  PyObject *__pyx_tuple__396;
  PyObject *__pyx_tuple__401;
  PyObject *__pyx_tuple__403;
  PyObject *__pyx_tuple__405;
  PyObject *__pyx_tuple__407;
  PyObject *__pyx_tuple__409;
  PyObject *__pyx_tuple__411;
  PyObject *__pyx_tuple__412;
  PyObject *__pyx_tuple__414;
  PyObject *__pyx_tuple__416;
  PyObject *__pyx_tuple__418;
  PyObject *__pyx_tuple__420;
  PyObject *__pyx_tuple__421;
  PyObject *__pyx_tuple__423;
  PyObject *__pyx_tuple__431;
  PyObject *__pyx_tuple__433;
  PyObject *__pyx_tuple__435;
  PyObject *__pyx_tuple__441;
  PyObject *__pyx_tuple__443;
  PyObject *__pyx_tuple__449;
  PyObject *__pyx_tuple__451;
  PyObject *__pyx_tuple__453;
  PyObject *__pyx_tuple__458;
  PyObject *__pyx_tuple__460;
  PyObject *__pyx_tuple__477;
  PyObject *__pyx_tuple__481;
  PyObject *__pyx_tuple__520;
  PyObject *__pyx_tuple__522;
  PyObject *__pyx_tuple__539;
  PyObject *__pyx_tuple__543;
  PyObject *__pyx_tuple__612;
  PyObject *__pyx_tuple__614;
  PyObject *__pyx_tuple__615;
  PyObject *__pyx_tuple__617;
  PyObject *__pyx_tuple__626;
  PyObject *__pyx_tuple__630;
  PyObject *__pyx_tuple__632;
  PyObject *__pyx_tuple__636;
  PyObject *__pyx_tuple__697;
  PyObject *__pyx_tuple__746;
  PyObject *__pyx_tuple__779;
  PyObject *__pyx_tuple__864;
  PyObject *__pyx_tuple__992;
  PyObject *__pyx_tuple__996;
  PyObject *__pyx_codeobj__14;
  PyObject *__pyx_codeobj__16;
  PyObject *__pyx_codeobj__18;
  PyObject *__pyx_codeobj__20;
  PyObject *__pyx_codeobj__22;
  PyObject *__pyx_codeobj__23;
  PyObject *__pyx_codeobj__25;
  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__33;
  PyObject *__pyx_codeobj__34;
  PyObject *__pyx_codeobj__35;
  PyObject *__pyx_codeobj__36;
  PyObject *__pyx_codeobj__37;
  PyObject *__pyx_codeobj__38;
  PyObject *__pyx_codeobj__39;
  PyObject *__pyx_codeobj__40;
  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__59;
  PyObject *__pyx_codeobj__60;
  PyObject *__pyx_codeobj__61;
  PyObject *__pyx_codeobj__62;
  PyObject *__pyx_codeobj__63;
  PyObject *__pyx_codeobj__64;
  PyObject *__pyx_codeobj__65;
  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__86;
  PyObject *__pyx_codeobj__87;
  PyObject *__pyx_codeobj__88;
  PyObject *__pyx_tuple__1004;
  PyObject *__pyx_tuple__1006;
  PyObject *__pyx_tuple__1023;
  PyObject *__pyx_tuple__1047;
  PyObject *__pyx_tuple__1056;
  PyObject *__pyx_tuple__1094;
  PyObject *__pyx_tuple__1107;
  PyObject *__pyx_tuple__1109;
  PyObject *__pyx_tuple__1111;
  PyObject *__pyx_tuple__1118;
  PyObject *__pyx_tuple__1133;
  PyObject *__pyx_tuple__1135;
  PyObject *__pyx_tuple__1166;
  PyObject *__pyx_tuple__1168;
  PyObject *__pyx_tuple__1216;
  PyObject *__pyx_tuple__1218;
  PyObject *__pyx_tuple__1225;
  PyObject *__pyx_tuple__1228;
  PyObject *__pyx_tuple__1230;
  PyObject *__pyx_tuple__1232;
  PyObject *__pyx_tuple__1234;
  PyObject *__pyx_tuple__1236;
  PyObject *__pyx_tuple__1239;
  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__116;
  PyObject *__pyx_codeobj__118;
  PyObject *__pyx_codeobj__120;
  PyObject *__pyx_codeobj__123;
  PyObject *__pyx_codeobj__125;
  PyObject *__pyx_codeobj__126;
  PyObject *__pyx_codeobj__127;
  PyObject *__pyx_codeobj__128;
  PyObject *__pyx_codeobj__129;
  PyObject *__pyx_codeobj__131;
  PyObject *__pyx_codeobj__132;
  PyObject *__pyx_codeobj__134;
  PyObject *__pyx_codeobj__135;
  PyObject *__pyx_codeobj__136;
  PyObject *__pyx_codeobj__138;
  PyObject *__pyx_codeobj__142;
  PyObject *__pyx_codeobj__143;
  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__153;
  PyObject *__pyx_codeobj__156;
  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__165;
  PyObject *__pyx_codeobj__167;
  PyObject *__pyx_codeobj__170;
  PyObject *__pyx_codeobj__173;
  PyObject *__pyx_codeobj__175;
  PyObject *__pyx_codeobj__176;
  PyObject *__pyx_codeobj__178;
  PyObject *__pyx_codeobj__180;
  PyObject *__pyx_codeobj__181;
  PyObject *__pyx_codeobj__183;
  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__194;
  PyObject *__pyx_codeobj__195;
  PyObject *__pyx_codeobj__196;
  PyObject *__pyx_codeobj__197;
  PyObject *__pyx_codeobj__198;
  PyObject *__pyx_codeobj__199;
  PyObject *__pyx_codeobj__200;
  PyObject *__pyx_codeobj__202;
  PyObject *__pyx_codeobj__204;
  PyObject *__pyx_codeobj__206;
  PyObject *__pyx_codeobj__207;
  PyObject *__pyx_codeobj__208;
  PyObject *__pyx_codeobj__210;
  PyObject *__pyx_codeobj__211;
  PyObject *__pyx_codeobj__212;
  PyObject *__pyx_codeobj__213;
  PyObject *__pyx_codeobj__214;
  PyObject *__pyx_codeobj__215;
  PyObject *__pyx_codeobj__216;
  PyObject *__pyx_codeobj__217;
  PyObject *__pyx_codeobj__218;
  PyObject *__pyx_codeobj__219;
  PyObject *__pyx_codeobj__220;
  PyObject *__pyx_codeobj__221;
  PyObject *__pyx_codeobj__222;
  PyObject *__pyx_codeobj__223;
  PyObject *__pyx_codeobj__224;
  PyObject *__pyx_codeobj__225;
  PyObject *__pyx_codeobj__226;
  PyObject *__pyx_codeobj__228;
  PyObject *__pyx_codeobj__229;
  PyObject *__pyx_codeobj__230;
  PyObject *__pyx_codeobj__231;
  PyObject *__pyx_codeobj__232;
  PyObject *__pyx_codeobj__233;
  PyObject *__pyx_codeobj__234;
  PyObject *__pyx_codeobj__235;
  PyObject *__pyx_codeobj__236;
  PyObject *__pyx_codeobj__237;
  PyObject *__pyx_codeobj__238;
  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__252;
  PyObject *__pyx_codeobj__253;
  PyObject *__pyx_codeobj__254;
  PyObject *__pyx_codeobj__255;
  PyObject *__pyx_codeobj__256;
  PyObject *__pyx_codeobj__257;
  PyObject *__pyx_codeobj__258;
  PyObject *__pyx_codeobj__259;
  PyObject *__pyx_codeobj__260;
  PyObject *__pyx_codeobj__261;
  PyObject *__pyx_codeobj__262;
  PyObject *__pyx_codeobj__263;
  PyObject *__pyx_codeobj__264;
  PyObject *__pyx_codeobj__265;
  PyObject *__pyx_codeobj__266;
  PyObject *__pyx_codeobj__267;
  PyObject *__pyx_codeobj__268;
  PyObject *__pyx_codeobj__269;
  PyObject *__pyx_codeobj__270;
  PyObject *__pyx_codeobj__271;
  PyObject *__pyx_codeobj__272;
  PyObject *__pyx_codeobj__273;
  PyObject *__pyx_codeobj__274;
  PyObject *__pyx_codeobj__275;
  PyObject *__pyx_codeobj__276;
  PyObject *__pyx_codeobj__277;
  PyObject *__pyx_codeobj__278;
  PyObject *__pyx_codeobj__279;
  PyObject *__pyx_codeobj__280;
  PyObject *__pyx_codeobj__281;
  PyObject *__pyx_codeobj__282;
  PyObject *__pyx_codeobj__283;
  PyObject *__pyx_codeobj__284;
  PyObject *__pyx_codeobj__285;
  PyObject *__pyx_codeobj__286;
  PyObject *__pyx_codeobj__287;
  PyObject *__pyx_codeobj__288;
  PyObject *__pyx_codeobj__289;
  PyObject *__pyx_codeobj__291;
  PyObject *__pyx_codeobj__292;
  PyObject *__pyx_codeobj__293;
  PyObject *__pyx_codeobj__295;
  PyObject *__pyx_codeobj__297;
  PyObject *__pyx_codeobj__299;
  PyObject *__pyx_codeobj__300;
  PyObject *__pyx_codeobj__302;
  PyObject *__pyx_codeobj__305;
  PyObject *__pyx_codeobj__307;
  PyObject *__pyx_codeobj__309;
  PyObject *__pyx_codeobj__311;
  PyObject *__pyx_codeobj__312;
  PyObject *__pyx_codeobj__313;
  PyObject *__pyx_codeobj__314;
  PyObject *__pyx_codeobj__315;
  PyObject *__pyx_codeobj__317;
  PyObject *__pyx_codeobj__318;
  PyObject *__pyx_codeobj__320;
  PyObject *__pyx_codeobj__321;
  PyObject *__pyx_codeobj__323;
  PyObject *__pyx_codeobj__325;
  PyObject *__pyx_codeobj__327;
  PyObject *__pyx_codeobj__329;
  PyObject *__pyx_codeobj__331;
  PyObject *__pyx_codeobj__332;
  PyObject *__pyx_codeobj__334;
  PyObject *__pyx_codeobj__337;
  PyObject *__pyx_codeobj__338;
  PyObject *__pyx_codeobj__340;
  PyObject *__pyx_codeobj__343;
  PyObject *__pyx_codeobj__344;
  PyObject *__pyx_codeobj__345;
  PyObject *__pyx_codeobj__346;
  PyObject *__pyx_codeobj__348;
  PyObject *__pyx_codeobj__350;
  PyObject *__pyx_codeobj__352;
  PyObject *__pyx_codeobj__354;
  PyObject *__pyx_codeobj__355;
  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__365;
  PyObject *__pyx_codeobj__366;
  PyObject *__pyx_codeobj__368;
  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__379;
  PyObject *__pyx_codeobj__381;
  PyObject *__pyx_codeobj__383;
  PyObject *__pyx_codeobj__384;
  PyObject *__pyx_codeobj__386;
  PyObject *__pyx_codeobj__388;
  PyObject *__pyx_codeobj__390;
  PyObject *__pyx_codeobj__392;
  PyObject *__pyx_codeobj__394;
  PyObject *__pyx_codeobj__395;
  PyObject *__pyx_codeobj__397;
  PyObject *__pyx_codeobj__398;
  PyObject *__pyx_codeobj__399;
  PyObject *__pyx_codeobj__400;
  PyObject *__pyx_codeobj__402;
  PyObject *__pyx_codeobj__404;
  PyObject *__pyx_codeobj__406;
  PyObject *__pyx_codeobj__408;
  PyObject *__pyx_codeobj__410;
  PyObject *__pyx_codeobj__413;
  PyObject *__pyx_codeobj__415;
  PyObject *__pyx_codeobj__417;
  PyObject *__pyx_codeobj__419;
  PyObject *__pyx_codeobj__422;
  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__432;
  PyObject *__pyx_codeobj__434;
  PyObject *__pyx_codeobj__436;
  PyObject *__pyx_codeobj__437;
  PyObject *__pyx_codeobj__438;
  PyObject *__pyx_codeobj__439;
  PyObject *__pyx_codeobj__440;
  PyObject *__pyx_codeobj__442;
  PyObject *__pyx_codeobj__444;
  PyObject *__pyx_codeobj__445;
  PyObject *__pyx_codeobj__446;
  PyObject *__pyx_codeobj__447;
  PyObject *__pyx_codeobj__448;
  PyObject *__pyx_codeobj__450;
  PyObject *__pyx_codeobj__452;
  PyObject *__pyx_codeobj__454;
  PyObject *__pyx_codeobj__455;
  PyObject *__pyx_codeobj__456;
  PyObject *__pyx_codeobj__457;
  PyObject *__pyx_codeobj__459;
  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__478;
  PyObject *__pyx_codeobj__479;
  PyObject *__pyx_codeobj__480;
  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__493;
  PyObject *__pyx_codeobj__494;
  PyObject *__pyx_codeobj__495;
  PyObject *__pyx_codeobj__496;
  PyObject *__pyx_codeobj__497;
  PyObject *__pyx_codeobj__498;
  PyObject *__pyx_codeobj__499;
  PyObject *__pyx_codeobj__500;
  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__521;
  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__536;
  PyObject *__pyx_codeobj__537;
  PyObject *__pyx_codeobj__538;
  PyObject *__pyx_codeobj__540;
  PyObject *__pyx_codeobj__541;
  PyObject *__pyx_codeobj__542;
  PyObject *__pyx_codeobj__544;
  PyObject *__pyx_codeobj__545;
  PyObject *__pyx_codeobj__546;
  PyObject *__pyx_codeobj__547;
  PyObject *__pyx_codeobj__548;
  PyObject *__pyx_codeobj__549;
  PyObject *__pyx_codeobj__550;
  PyObject *__pyx_codeobj__551;
  PyObject *__pyx_codeobj__552;
  PyObject *__pyx_codeobj__553;
  PyObject *__pyx_codeobj__554;
  PyObject *__pyx_codeobj__555;
  PyObject *__pyx_codeobj__556;
  PyObject *__pyx_codeobj__557;
  PyObject *__pyx_codeobj__558;
  PyObject *__pyx_codeobj__559;
  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__574;
  PyObject *__pyx_codeobj__575;
  PyObject *__pyx_codeobj__576;
  PyObject *__pyx_codeobj__577;
  PyObject *__pyx_codeobj__578;
  PyObject *__pyx_codeobj__579;
  PyObject *__pyx_codeobj__580;
  PyObject *__pyx_codeobj__581;
  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__594;
  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__613;
  PyObject *__pyx_codeobj__616;
  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__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__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__658;
  PyObject *__pyx_codeobj__659;
  PyObject *__pyx_codeobj__660;
  PyObject *__pyx_codeobj__661;
  PyObject *__pyx_codeobj__662;
  PyObject *__pyx_codeobj__663;
  PyObject *__pyx_codeobj__664;
  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__673;
  PyObject *__pyx_codeobj__674;
  PyObject *__pyx_codeobj__675;
  PyObject *__pyx_codeobj__676;
  PyObject *__pyx_codeobj__677;
  PyObject *__pyx_codeobj__678;
  PyObject *__pyx_codeobj__679;
  PyObject *__pyx_codeobj__680;
  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__687;
  PyObject *__pyx_codeobj__688;
  PyObject *__pyx_codeobj__689;
  PyObject *__pyx_codeobj__690;
  PyObject *__pyx_codeobj__691;
  PyObject *__pyx_codeobj__692;
  PyObject *__pyx_codeobj__693;
  PyObject *__pyx_codeobj__694;
  PyObject *__pyx_codeobj__695;
  PyObject *__pyx_codeobj__696;
  PyObject *__pyx_codeobj__698;
  PyObject *__pyx_codeobj__699;
  PyObject *__pyx_codeobj__700;
  PyObject *__pyx_codeobj__701;
  PyObject *__pyx_codeobj__702;
  PyObject *__pyx_codeobj__703;
  PyObject *__pyx_codeobj__704;
  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__718;
  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__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__761;
  PyObject *__pyx_codeobj__762;
  PyObject *__pyx_codeobj__763;
  PyObject *__pyx_codeobj__764;
  PyObject *__pyx_codeobj__765;
  PyObject *__pyx_codeobj__766;
  PyObject *__pyx_codeobj__767;
  PyObject *__pyx_codeobj__768;
  PyObject *__pyx_codeobj__769;
  PyObject *__pyx_codeobj__770;
  PyObject *__pyx_codeobj__771;
  PyObject *__pyx_codeobj__772;
  PyObject *__pyx_codeobj__773;
  PyObject *__pyx_codeobj__774;
  PyObject *__pyx_codeobj__775;
  PyObject *__pyx_codeobj__776;
  PyObject *__pyx_codeobj__777;
  PyObject *__pyx_codeobj__778;
  PyObject *__pyx_codeobj__780;
  PyObject *__pyx_codeobj__781;
  PyObject *__pyx_codeobj__782;
  PyObject *__pyx_codeobj__783;
  PyObject *__pyx_codeobj__784;
  PyObject *__pyx_codeobj__785;
  PyObject *__pyx_codeobj__786;
  PyObject *__pyx_codeobj__787;
  PyObject *__pyx_codeobj__788;
  PyObject *__pyx_codeobj__789;
  PyObject *__pyx_codeobj__790;
  PyObject *__pyx_codeobj__791;
  PyObject *__pyx_codeobj__792;
  PyObject *__pyx_codeobj__793;
  PyObject *__pyx_codeobj__794;
  PyObject *__pyx_codeobj__795;
  PyObject *__pyx_codeobj__796;
  PyObject *__pyx_codeobj__797;
  PyObject *__pyx_codeobj__798;
  PyObject *__pyx_codeobj__799;
  PyObject *__pyx_codeobj__800;
  PyObject *__pyx_codeobj__801;
  PyObject *__pyx_codeobj__802;
  PyObject *__pyx_codeobj__803;
  PyObject *__pyx_codeobj__804;
  PyObject *__pyx_codeobj__805;
  PyObject *__pyx_codeobj__806;
  PyObject *__pyx_codeobj__807;
  PyObject *__pyx_codeobj__808;
  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__826;
  PyObject *__pyx_codeobj__827;
  PyObject *__pyx_codeobj__828;
  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__837;
  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__848;
  PyObject *__pyx_codeobj__849;
  PyObject *__pyx_codeobj__850;
  PyObject *__pyx_codeobj__851;
  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__865;
  PyObject *__pyx_codeobj__866;
  PyObject *__pyx_codeobj__867;
  PyObject *__pyx_codeobj__868;
  PyObject *__pyx_codeobj__869;
  PyObject *__pyx_codeobj__870;
  PyObject *__pyx_codeobj__871;
  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__878;
  PyObject *__pyx_codeobj__879;
  PyObject *__pyx_codeobj__880;
  PyObject *__pyx_codeobj__881;
  PyObject *__pyx_codeobj__882;
  PyObject *__pyx_codeobj__883;
  PyObject *__pyx_codeobj__884;
  PyObject *__pyx_codeobj__885;
  PyObject *__pyx_codeobj__886;
  PyObject *__pyx_codeobj__887;
  PyObject *__pyx_codeobj__888;
  PyObject *__pyx_codeobj__889;
  PyObject *__pyx_codeobj__890;
  PyObject *__pyx_codeobj__891;
  PyObject *__pyx_codeobj__892;
  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__924;
  PyObject *__pyx_codeobj__925;
  PyObject *__pyx_codeobj__926;
  PyObject *__pyx_codeobj__927;
  PyObject *__pyx_codeobj__928;
  PyObject *__pyx_codeobj__929;
  PyObject *__pyx_codeobj__930;
  PyObject *__pyx_codeobj__931;
  PyObject *__pyx_codeobj__932;
  PyObject *__pyx_codeobj__933;
  PyObject *__pyx_codeobj__934;
  PyObject *__pyx_codeobj__935;
  PyObject *__pyx_codeobj__936;
  PyObject *__pyx_codeobj__937;
  PyObject *__pyx_codeobj__938;
  PyObject *__pyx_codeobj__939;
  PyObject *__pyx_codeobj__940;
  PyObject *__pyx_codeobj__941;
  PyObject *__pyx_codeobj__942;
  PyObject *__pyx_codeobj__943;
  PyObject *__pyx_codeobj__944;
  PyObject *__pyx_codeobj__945;
  PyObject *__pyx_codeobj__946;
  PyObject *__pyx_codeobj__947;
  PyObject *__pyx_codeobj__948;
  PyObject *__pyx_codeobj__949;
  PyObject *__pyx_codeobj__950;
  PyObject *__pyx_codeobj__951;
  PyObject *__pyx_codeobj__952;
  PyObject *__pyx_codeobj__953;
  PyObject *__pyx_codeobj__954;
  PyObject *__pyx_codeobj__955;
  PyObject *__pyx_codeobj__956;
  PyObject *__pyx_codeobj__957;
  PyObject *__pyx_codeobj__958;
  PyObject *__pyx_codeobj__959;
  PyObject *__pyx_codeobj__960;
  PyObject *__pyx_codeobj__961;
  PyObject *__pyx_codeobj__962;
  PyObject *__pyx_codeobj__963;
  PyObject *__pyx_codeobj__964;
  PyObject *__pyx_codeobj__965;
  PyObject *__pyx_codeobj__966;
  PyObject *__pyx_codeobj__967;
  PyObject *__pyx_codeobj__968;
  PyObject *__pyx_codeobj__969;
  PyObject *__pyx_codeobj__970;
  PyObject *__pyx_codeobj__971;
  PyObject *__pyx_codeobj__972;
  PyObject *__pyx_codeobj__973;
  PyObject *__pyx_codeobj__974;
  PyObject *__pyx_codeobj__975;
  PyObject *__pyx_codeobj__976;
  PyObject *__pyx_codeobj__977;
  PyObject *__pyx_codeobj__978;
  PyObject *__pyx_codeobj__979;
  PyObject *__pyx_codeobj__980;
  PyObject *__pyx_codeobj__981;
  PyObject *__pyx_codeobj__982;
  PyObject *__pyx_codeobj__983;
  PyObject *__pyx_codeobj__984;
  PyObject *__pyx_codeobj__985;
  PyObject *__pyx_codeobj__986;
  PyObject *__pyx_codeobj__987;
  PyObject *__pyx_codeobj__988;
  PyObject *__pyx_codeobj__989;
  PyObject *__pyx_codeobj__990;
  PyObject *__pyx_codeobj__991;
  PyObject *__pyx_codeobj__993;
  PyObject *__pyx_codeobj__994;
  PyObject *__pyx_codeobj__995;
  PyObject *__pyx_codeobj__997;
  PyObject *__pyx_codeobj__998;
  PyObject *__pyx_codeobj__999;
  PyObject *__pyx_codeobj__1000;
  PyObject *__pyx_codeobj__1001;
  PyObject *__pyx_codeobj__1002;
  PyObject *__pyx_codeobj__1003;
  PyObject *__pyx_codeobj__1005;
  PyObject *__pyx_codeobj__1007;
  PyObject *__pyx_codeobj__1008;
  PyObject *__pyx_codeobj__1009;
  PyObject *__pyx_codeobj__1010;
  PyObject *__pyx_codeobj__1011;
  PyObject *__pyx_codeobj__1012;
  PyObject *__pyx_codeobj__1013;
  PyObject *__pyx_codeobj__1014;
  PyObject *__pyx_codeobj__1015;
  PyObject *__pyx_codeobj__1016;
  PyObject *__pyx_codeobj__1017;
  PyObject *__pyx_codeobj__1018;
  PyObject *__pyx_codeobj__1019;
  PyObject *__pyx_codeobj__1020;
  PyObject *__pyx_codeobj__1021;
  PyObject *__pyx_codeobj__1022;
  PyObject *__pyx_codeobj__1024;
  PyObject *__pyx_codeobj__1025;
  PyObject *__pyx_codeobj__1026;
  PyObject *__pyx_codeobj__1027;
  PyObject *__pyx_codeobj__1028;
  PyObject *__pyx_codeobj__1029;
  PyObject *__pyx_codeobj__1030;
  PyObject *__pyx_codeobj__1031;
  PyObject *__pyx_codeobj__1032;
  PyObject *__pyx_codeobj__1033;
  PyObject *__pyx_codeobj__1034;
  PyObject *__pyx_codeobj__1035;
  PyObject *__pyx_codeobj__1036;
  PyObject *__pyx_codeobj__1037;
  PyObject *__pyx_codeobj__1038;
  PyObject *__pyx_codeobj__1039;
  PyObject *__pyx_codeobj__1040;
  PyObject *__pyx_codeobj__1041;
  PyObject *__pyx_codeobj__1042;
  PyObject *__pyx_codeobj__1043;
  PyObject *__pyx_codeobj__1044;
  PyObject *__pyx_codeobj__1045;
  PyObject *__pyx_codeobj__1046;
  PyObject *__pyx_codeobj__1048;
  PyObject *__pyx_codeobj__1049;
  PyObject *__pyx_codeobj__1050;
  PyObject *__pyx_codeobj__1051;
  PyObject *__pyx_codeobj__1052;
  PyObject *__pyx_codeobj__1053;
  PyObject *__pyx_codeobj__1054;
  PyObject *__pyx_codeobj__1055;
  PyObject *__pyx_codeobj__1057;
  PyObject *__pyx_codeobj__1058;
  PyObject *__pyx_codeobj__1059;
  PyObject *__pyx_codeobj__1060;
  PyObject *__pyx_codeobj__1061;
  PyObject *__pyx_codeobj__1062;
  PyObject *__pyx_codeobj__1063;
  PyObject *__pyx_codeobj__1064;
  PyObject *__pyx_codeobj__1065;
  PyObject *__pyx_codeobj__1066;
  PyObject *__pyx_codeobj__1067;
  PyObject *__pyx_codeobj__1068;
  PyObject *__pyx_codeobj__1069;
  PyObject *__pyx_codeobj__1070;
  PyObject *__pyx_codeobj__1071;
  PyObject *__pyx_codeobj__1072;
  PyObject *__pyx_codeobj__1073;
  PyObject *__pyx_codeobj__1074;
  PyObject *__pyx_codeobj__1075;
  PyObject *__pyx_codeobj__1076;
  PyObject *__pyx_codeobj__1077;
  PyObject *__pyx_codeobj__1078;
  PyObject *__pyx_codeobj__1079;
  PyObject *__pyx_codeobj__1080;
  PyObject *__pyx_codeobj__1081;
  PyObject *__pyx_codeobj__1082;
  PyObject *__pyx_codeobj__1083;
  PyObject *__pyx_codeobj__1084;
  PyObject *__pyx_codeobj__1085;
  PyObject *__pyx_codeobj__1086;
  PyObject *__pyx_codeobj__1087;
  PyObject *__pyx_codeobj__1088;
  PyObject *__pyx_codeobj__1089;
  PyObject *__pyx_codeobj__1090;
  PyObject *__pyx_codeobj__1091;
  PyObject *__pyx_codeobj__1092;
  PyObject *__pyx_codeobj__1093;
  PyObject *__pyx_codeobj__1095;
  PyObject *__pyx_codeobj__1096;
  PyObject *__pyx_codeobj__1097;
  PyObject *__pyx_codeobj__1098;
  PyObject *__pyx_codeobj__1099;
  PyObject *__pyx_codeobj__1100;
  PyObject *__pyx_codeobj__1101;
  PyObject *__pyx_codeobj__1102;
  PyObject *__pyx_codeobj__1103;
  PyObject *__pyx_codeobj__1104;
  PyObject *__pyx_codeobj__1105;
  PyObject *__pyx_codeobj__1106;
  PyObject *__pyx_codeobj__1108;
  PyObject *__pyx_codeobj__1110;
  PyObject *__pyx_codeobj__1112;
  PyObject *__pyx_codeobj__1113;
  PyObject *__pyx_codeobj__1114;
  PyObject *__pyx_codeobj__1115;
  PyObject *__pyx_codeobj__1116;
  PyObject *__pyx_codeobj__1117;
  PyObject *__pyx_codeobj__1119;
  PyObject *__pyx_codeobj__1120;
  PyObject *__pyx_codeobj__1121;
  PyObject *__pyx_codeobj__1122;
  PyObject *__pyx_codeobj__1123;
  PyObject *__pyx_codeobj__1124;
  PyObject *__pyx_codeobj__1125;
  PyObject *__pyx_codeobj__1126;
  PyObject *__pyx_codeobj__1127;
  PyObject *__pyx_codeobj__1128;
  PyObject *__pyx_codeobj__1129;
  PyObject *__pyx_codeobj__1130;
  PyObject *__pyx_codeobj__1131;
  PyObject *__pyx_codeobj__1132;
  PyObject *__pyx_codeobj__1134;
  PyObject *__pyx_codeobj__1136;
  PyObject *__pyx_codeobj__1137;
  PyObject *__pyx_codeobj__1138;
  PyObject *__pyx_codeobj__1139;
  PyObject *__pyx_codeobj__1140;
  PyObject *__pyx_codeobj__1141;
  PyObject *__pyx_codeobj__1142;
  PyObject *__pyx_codeobj__1143;
  PyObject *__pyx_codeobj__1144;
  PyObject *__pyx_codeobj__1145;
  PyObject *__pyx_codeobj__1146;
  PyObject *__pyx_codeobj__1147;
  PyObject *__pyx_codeobj__1148;
  PyObject *__pyx_codeobj__1149;
  PyObject *__pyx_codeobj__1150;
  PyObject *__pyx_codeobj__1151;
  PyObject *__pyx_codeobj__1152;
  PyObject *__pyx_codeobj__1153;
  PyObject *__pyx_codeobj__1154;
  PyObject *__pyx_codeobj__1155;
  PyObject *__pyx_codeobj__1156;
  PyObject *__pyx_codeobj__1157;
  PyObject *__pyx_codeobj__1158;
  PyObject *__pyx_codeobj__1159;
  PyObject *__pyx_codeobj__1160;
  PyObject *__pyx_codeobj__1161;
  PyObject *__pyx_codeobj__1162;
  PyObject *__pyx_codeobj__1163;
  PyObject *__pyx_codeobj__1164;
  PyObject *__pyx_codeobj__1165;
  PyObject *__pyx_codeobj__1167;
  PyObject *__pyx_codeobj__1169;
  PyObject *__pyx_codeobj__1170;
  PyObject *__pyx_codeobj__1171;
  PyObject *__pyx_codeobj__1172;
  PyObject *__pyx_codeobj__1173;
  PyObject *__pyx_codeobj__1174;
  PyObject *__pyx_codeobj__1175;
  PyObject *__pyx_codeobj__1176;
  PyObject *__pyx_codeobj__1177;
  PyObject *__pyx_codeobj__1178;
  PyObject *__pyx_codeobj__1179;
  PyObject *__pyx_codeobj__1180;
  PyObject *__pyx_codeobj__1181;
  PyObject *__pyx_codeobj__1182;
  PyObject *__pyx_codeobj__1183;
  PyObject *__pyx_codeobj__1184;
  PyObject *__pyx_codeobj__1185;
  PyObject *__pyx_codeobj__1186;
  PyObject *__pyx_codeobj__1187;
  PyObject *__pyx_codeobj__1188;
  PyObject *__pyx_codeobj__1189;
  PyObject *__pyx_codeobj__1190;
  PyObject *__pyx_codeobj__1191;
  PyObject *__pyx_codeobj__1192;
  PyObject *__pyx_codeobj__1193;
  PyObject *__pyx_codeobj__1194;
  PyObject *__pyx_codeobj__1195;
  PyObject *__pyx_codeobj__1196;
  PyObject *__pyx_codeobj__1197;
  PyObject *__pyx_codeobj__1198;
  PyObject *__pyx_codeobj__1199;
  PyObject *__pyx_codeobj__1200;
  PyObject *__pyx_codeobj__1201;
  PyObject *__pyx_codeobj__1202;
  PyObject *__pyx_codeobj__1203;
  PyObject *__pyx_codeobj__1204;
  PyObject *__pyx_codeobj__1205;
  PyObject *__pyx_codeobj__1206;
  PyObject *__pyx_codeobj__1207;
  PyObject *__pyx_codeobj__1208;
  PyObject *__pyx_codeobj__1209;
  PyObject *__pyx_codeobj__1210;
  PyObject *__pyx_codeobj__1211;
  PyObject *__pyx_codeobj__1212;
  PyObject *__pyx_codeobj__1213;
  PyObject *__pyx_codeobj__1214;
  PyObject *__pyx_codeobj__1215;
  PyObject *__pyx_codeobj__1217;
  PyObject *__pyx_codeobj__1219;
  PyObject *__pyx_codeobj__1220;
  PyObject *__pyx_codeobj__1221;
  PyObject *__pyx_codeobj__1222;
  PyObject *__pyx_codeobj__1223;
  PyObject *__pyx_codeobj__1224;
  PyObject *__pyx_codeobj__1226;
  PyObject *__pyx_codeobj__1227;
  PyObject *__pyx_codeobj__1229;
  PyObject *__pyx_codeobj__1231;
  PyObject *__pyx_codeobj__1233;
  PyObject *__pyx_codeobj__1235;
  PyObject *__pyx_codeobj__1237;
  PyObject *__pyx_codeobj__1238;
  PyObject *__pyx_codeobj__1240;
  PyObject *__pyx_codeobj__1241;
  PyObject *__pyx_codeobj__1242;
  PyObject *__pyx_codeobj__1243;
  PyObject *__pyx_codeobj__1244;
  PyObject *__pyx_codeobj__1245;
  PyObject *__pyx_codeobj__1246;
  PyObject *__pyx_codeobj__1247;
  PyObject *__pyx_codeobj__1248;
  PyObject *__pyx_codeobj__1249;
  PyObject *__pyx_codeobj__1250;
  PyObject *__pyx_codeobj__1251;
  PyObject *__pyx_codeobj__1252;
  PyObject *__pyx_codeobj__1253;
  PyObject *__pyx_codeobj__1254;
  PyObject *__pyx_codeobj__1255;
  PyObject *__pyx_codeobj__1256;
  PyObject *__pyx_codeobj__1257;
  PyObject *__pyx_codeobj__1258;
  PyObject *__pyx_codeobj__1259;
  PyObject *__pyx_codeobj__1260;
  PyObject *__pyx_codeobj__1261;
  PyObject *__pyx_codeobj__1262;
  PyObject *__pyx_codeobj__1263;
  PyObject *__pyx_codeobj__1264;
  PyObject *__pyx_codeobj__1265;
  PyObject *__pyx_codeobj__1266;
  PyObject *__pyx_codeobj__1267;
  PyObject *__pyx_codeobj__1268;
  PyObject *__pyx_codeobj__1269;
  PyObject *__pyx_codeobj__1270;
  PyObject *__pyx_codeobj__1271;
  PyObject *__pyx_codeobj__1272;
  PyObject *__pyx_codeobj__1273;
  PyObject *__pyx_codeobj__1274;
  PyObject *__pyx_codeobj__1275;
  PyObject *__pyx_codeobj__1276;
  PyObject *__pyx_codeobj__1277;
  PyObject *__pyx_codeobj__1278;
  PyObject *__pyx_codeobj__1279;
  PyObject *__pyx_codeobj__1280;
  PyObject *__pyx_codeobj__1281;
  PyObject *__pyx_codeobj__1282;
  PyObject *__pyx_codeobj__1283;
  PyObject *__pyx_codeobj__1284;
  PyObject *__pyx_codeobj__1285;
  PyObject *__pyx_codeobj__1286;
  PyObject *__pyx_codeobj__1287;
  PyObject *__pyx_codeobj__1288;
  PyObject *__pyx_codeobj__1289;
  PyObject *__pyx_codeobj__1290;
  PyObject *__pyx_codeobj__1291;
  PyObject *__pyx_codeobj__1292;
  PyObject *__pyx_codeobj__1293;
  PyObject *__pyx_codeobj__1294;
  PyObject *__pyx_codeobj__1295;
  PyObject *__pyx_codeobj__1296;
  PyObject *__pyx_codeobj__1297;
  PyObject *__pyx_codeobj__1298;
  PyObject *__pyx_codeobj__1299;
  PyObject *__pyx_codeobj__1300;
  PyObject *__pyx_codeobj__1301;
  PyObject *__pyx_codeobj__1302;
  PyObject *__pyx_codeobj__1303;
  PyObject *__pyx_codeobj__1304;
  PyObject *__pyx_codeobj__1305;
  PyObject *__pyx_codeobj__1306;
  PyObject *__pyx_codeobj__1307;
  PyObject *__pyx_codeobj__1308;
  PyObject *__pyx_codeobj__1309;
  PyObject *__pyx_codeobj__1310;
  PyObject *__pyx_codeobj__1311;
  PyObject *__pyx_codeobj__1312;
  PyObject *__pyx_codeobj__1313;
  PyObject *__pyx_codeobj__1314;
  PyObject *__pyx_codeobj__1315;
  PyObject *__pyx_codeobj__1316;
  PyObject *__pyx_codeobj__1317;
  PyObject *__pyx_codeobj__1318;
  PyObject *__pyx_codeobj__1319;
  PyObject *__pyx_codeobj__1320;
  PyObject *__pyx_codeobj__1321;
  PyObject *__pyx_codeobj__1322;
  PyObject *__pyx_codeobj__1323;
  PyObject *__pyx_codeobj__1324;
  PyObject *__pyx_codeobj__1325;
  PyObject *__pyx_codeobj__1326;
  PyObject *__pyx_codeobj__1327;
  PyObject *__pyx_codeobj__1328;
  PyObject *__pyx_codeobj__1329;
  PyObject *__pyx_codeobj__1330;
  PyObject *__pyx_codeobj__1331;
  PyObject *__pyx_codeobj__1332;
  PyObject *__pyx_codeobj__1333;
  PyObject *__pyx_codeobj__1334;
  PyObject *__pyx_codeobj__1335;
  PyObject *__pyx_codeobj__1336;
  PyObject *__pyx_codeobj__1337;
  PyObject *__pyx_codeobj__1338;
  PyObject *__pyx_codeobj__1339;
  PyObject *__pyx_codeobj__1340;
  PyObject *__pyx_codeobj__1341;
  PyObject *__pyx_codeobj__1342;
  PyObject *__pyx_codeobj__1343;
  PyObject *__pyx_codeobj__1344;
  PyObject *__pyx_codeobj__1345;
  PyObject *__pyx_codeobj__1346;
  PyObject *__pyx_codeobj__1347;
  PyObject *__pyx_codeobj__1348;
  PyObject *__pyx_codeobj__1349;
  PyObject *__pyx_codeobj__1350;
  PyObject *__pyx_codeobj__1351;
  PyObject *__pyx_codeobj__1352;
  PyObject *__pyx_codeobj__1353;
  PyObject *__pyx_codeobj__1354;
  PyObject *__pyx_codeobj__1355;
  PyObject *__pyx_codeobj__1356;
  PyObject *__pyx_codeobj__1357;
  PyObject *__pyx_codeobj__1358;
  PyObject *__pyx_codeobj__1359;
  PyObject *__pyx_codeobj__1360;
  PyObject *__pyx_codeobj__1361;
  PyObject *__pyx_codeobj__1362;
  PyObject *__pyx_codeobj__1363;
  PyObject *__pyx_codeobj__1364;
  PyObject *__pyx_codeobj__1365;
  PyObject *__pyx_codeobj__1366;
  PyObject *__pyx_codeobj__1367;
  PyObject *__pyx_codeobj__1368;
  PyObject *__pyx_codeobj__1369;
  PyObject *__pyx_codeobj__1370;
  PyObject *__pyx_codeobj__1371;
  PyObject *__pyx_codeobj__1372;
  PyObject *__pyx_codeobj__1373;
  PyObject *__pyx_codeobj__1374;
  PyObject *__pyx_codeobj__1375;
  PyObject *__pyx_codeobj__1376;
  PyObject *__pyx_codeobj__1377;
  PyObject *__pyx_codeobj__1378;
  PyObject *__pyx_codeobj__1379;
  PyObject *__pyx_codeobj__1380;
  PyObject *__pyx_codeobj__1381;
  PyObject *__pyx_codeobj__1382;
  PyObject *__pyx_codeobj__1383;
  PyObject *__pyx_codeobj__1384;
  PyObject *__pyx_codeobj__1385;
  PyObject *__pyx_codeobj__1386;
  PyObject *__pyx_codeobj__1387;
  PyObject *__pyx_codeobj__1388;
  PyObject *__pyx_codeobj__1389;
  PyObject *__pyx_codeobj__1390;
  PyObject *__pyx_codeobj__1391;
  PyObject *__pyx_codeobj__1392;
  PyObject *__pyx_codeobj__1393;
  PyObject *__pyx_codeobj__1394;
  PyObject *__pyx_codeobj__1395;
  PyObject *__pyx_codeobj__1396;
  PyObject *__pyx_codeobj__1397;
  PyObject *__pyx_codeobj__1398;
  PyObject *__pyx_codeobj__1399;
  PyObject *__pyx_codeobj__1400;
  PyObject *__pyx_codeobj__1401;
  PyObject *__pyx_codeobj__1402;
  PyObject *__pyx_codeobj__1403;
  PyObject *__pyx_codeobj__1404;
} __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_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_Dbn0D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Dbn0D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Estimate);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Estimate);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Estimate0D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Estimate0D);
  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_Axis);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Axis);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedEstimate1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedEstimate2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedEstimate3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedHisto1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedHisto1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedHisto2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedHisto2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedHisto3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedHisto3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedProfile1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedProfile1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_BinnedProfile2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_BinnedProfile2D);
  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_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_Point4D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Point4D);
  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_Scatter4D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Scatter4D);
  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_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr);
  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_ptype_4yoda_4core___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_AO);
  Py_CLEAR(clear_module_state->__pyx_kp_s_A_bin_content_wrapper_in_1D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_A_bin_content_wrapper_in_2D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_A_bin_content_wrapper_in_3D);
  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_axisConfig);
  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_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_Axis);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis__init2_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_numBins);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Axis_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_Axis_width);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper___init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_dLen);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_setBinni);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_setIndic);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_width);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper___init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_dArea);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_setBinni);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_setIndic);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_width);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper___init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_setBinni);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_setIndic);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_width);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinWrapper);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binned);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D___setstate_cyth);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__init2_locals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_areaUnderCurve);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_auc);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_covarianceMatri);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_deserializeCont);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_localToGlobalIn);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_serializeConten);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate1D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D___setstate_cyth);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__init2_locals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_areaUnderCurve);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_auc);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_covarianceMatri);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_deserializeCont);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_localToGlobalIn);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_serializeConten);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate2D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D___setstate_cyth);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__init2_locals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_areaUnderCurve);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_auc);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_covarianceMatri);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_deserializeCont);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_localToGlobalIn);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_numBinsZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinZBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_rebinZTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_serializeConten);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_zEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedEstimate3D_zWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__init2_locals_gen);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_localToGlobalIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_sumWA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto1D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__init2_locals_gen);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_localToGlobalIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_sumWA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto2D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__init2_locals_gen);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_localToGlobalIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_numBinsZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinZBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_rebinZTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_sumWA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedHisto3D_zWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D___setstate_cytho);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__init2_locals_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_deserializeConte);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_localToGlobalInd);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_mkHisto);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_sumWA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile1D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D___setstate_cytho);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__init2_locals_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D__set_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_deserializeConte);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_localToGlobalInd);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_mkHisto);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_sumWA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_BinnedProfile2D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning___init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_config_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Binning_width);
  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_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_deserializeMeta);
  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_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_mkEstimate);
  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_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_set);
  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_D);
  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_set);
  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_RMS);
  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_n_s_Dbn1D_mean);
  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_scale);
  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_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_stdErr);
  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_variance);
  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_RMS);
  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_crossTerm);
  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_scale);
  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_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_set);
  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_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_Dbn2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_RMS);
  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_crossTerm);
  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_scale);
  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_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_set);
  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_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWY2);
  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_Dbn3D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_zMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_zRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_zStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_zStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_zVariance);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Dynamic_ptr_cast_failed_Next);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_err);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errNegPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_errUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_hasSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_numErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_quadSum);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_quadSumNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_quadSumPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relErrDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relErrDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relTotalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relTotalErrNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_relTotalErrPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_rmErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_rmSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_setErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_setVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_totalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate0D_val);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Estimate0D_value_2e_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_deserializeSources);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_err);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errNegPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_errUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_hasSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_numErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_quadSum);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_quadSumAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_quadSumEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_quadSumNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_quadSumPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErrDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErrDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relTotalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relTotalErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relTotalErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relTotalErrNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_relTotalErrPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_rmErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_rmSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_serializeSources);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_setErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_setVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_totalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_totalErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_totalErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_totalErrNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_totalErrPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_val);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_valMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Estimate_valMin);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Estimate_value_2e);
  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_H3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo3D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Histograms_must_be_of_the_same_t);
  Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
  Py_CLEAR(clear_module_state->__pyx_n_s_IndexError);
  Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError);
  Py_CLEAR(clear_module_state->__pyx_n_s_N);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Null_pointer_referenced_perhaps);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Only_division_of_BinnedHisto_Bin);
  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_P3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_P4D);
  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___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D___init4);
  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__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D__init2_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_min);
  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_kp_s_Point1D_v1_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_val);
  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_xErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xErrs);
  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_n_s_Point2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___init4);
  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__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D__init2_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_scaleX);
  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_kp_s_Point2D_v1_g_v2_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_val);
  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_xErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_xErrPlus);
  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_n_s_Point2D_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrs);
  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___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D___init4);
  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__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D__init2_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_scaleX);
  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_kp_s_Point3D_v1_g_v2_g_v3_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_val);
  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_xErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_xErrPlus);
  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_n_s_Point3D_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yErrPlus);
  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_zErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zErrs);
  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_Point4D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D___init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D__init1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D__init2_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D_min);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point4D_val);
  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_scale);
  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_Profile2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_RMS);
  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_S4D);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___init_2);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__init_2);
  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_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_errAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_maxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_mins);
  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_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_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_scaleErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_scaleVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xErrs);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___init_2);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__init_2);
  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_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_errAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_maxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_mins);
  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_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_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_vals);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___init_2);
  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_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__init_2);
  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_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_errAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_maxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_mins);
  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_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleX);
  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_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xErrAvgs);
  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_yErrAvgs);
  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_zErrAvgs);
  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_Scatter4D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___init_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D__addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D__addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D__init_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D__init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_addPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_addPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_combineWith);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_errAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_maxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_mins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_numPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_rmPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_rmPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_scaleErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_scaleVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter4D_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Unknown_axis_combination_encount);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Unknown_edge_type_encountered);
  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
  Py_CLEAR(clear_module_state->__pyx_kp_s_WARNING_method_not_supported_for);
  Py_CLEAR(clear_module_state->__pyx_n_s__10);
  Py_CLEAR(clear_module_state->__pyx_kp_u__108);
  Py_CLEAR(clear_module_state->__pyx_n_s__1405);
  Py_CLEAR(clear_module_state->__pyx_kp_s__2);
  Py_CLEAR(clear_module_state->__pyx_kp_s__5);
  Py_CLEAR(clear_module_state->__pyx_kp_s__6);
  Py_CLEAR(clear_module_state->__pyx_kp_s__7);
  Py_CLEAR(clear_module_state->__pyx_n_s_a);
  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_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_append);
  Py_CLEAR(clear_module_state->__pyx_n_s_areaUnderCurve);
  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_asum);
  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
  Py_CLEAR(clear_module_state->__pyx_n_s_attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_attrgetter);
  Py_CLEAR(clear_module_state->__pyx_n_s_auc);
  Py_CLEAR(clear_module_state->__pyx_n_s_autostr);
  Py_CLEAR(clear_module_state->__pyx_n_s_axes);
  Py_CLEAR(clear_module_state->__pyx_n_s_axisConfig);
  Py_CLEAR(clear_module_state->__pyx_n_s_b);
  Py_CLEAR(clear_module_state->__pyx_n_s_base);
  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_binDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_binIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_bin_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_binedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_binning);
  Py_CLEAR(clear_module_state->__pyx_n_s_binning_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_bins);
  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_cdata);
  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_config);
  Py_CLEAR(clear_module_state->__pyx_n_s_cont);
  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_correlation);
  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_cpptype);
  Py_CLEAR(clear_module_state->__pyx_n_s_crossTerm);
  Py_CLEAR(clear_module_state->__pyx_n_s_d);
  Py_CLEAR(clear_module_state->__pyx_n_s_d2ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_dArea);
  Py_CLEAR(clear_module_state->__pyx_n_s_dLen);
  Py_CLEAR(clear_module_state->__pyx_n_s_dVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_da);
  Py_CLEAR(clear_module_state->__pyx_n_s_data);
  Py_CLEAR(clear_module_state->__pyx_n_s_dd);
  Py_CLEAR(clear_module_state->__pyx_n_s_ddd);
  Py_CLEAR(clear_module_state->__pyx_n_s_ddi);
  Py_CLEAR(clear_module_state->__pyx_n_s_dds);
  Py_CLEAR(clear_module_state->__pyx_n_s_default);
  Py_CLEAR(clear_module_state->__pyx_n_s_density);
  Py_CLEAR(clear_module_state->__pyx_n_s_densityError);
  Py_CLEAR(clear_module_state->__pyx_n_s_densitySum);
  Py_CLEAR(clear_module_state->__pyx_n_s_deserializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_deserializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_deserializeSources);
  Py_CLEAR(clear_module_state->__pyx_n_s_di);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict);
  Py_CLEAR(clear_module_state->__pyx_n_s_did);
  Py_CLEAR(clear_module_state->__pyx_n_s_dii);
  Py_CLEAR(clear_module_state->__pyx_n_s_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_dis);
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
  Py_CLEAR(clear_module_state->__pyx_n_s_divbyvol);
  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_ds);
  Py_CLEAR(clear_module_state->__pyx_n_s_dsd);
  Py_CLEAR(clear_module_state->__pyx_n_s_dsi);
  Py_CLEAR(clear_module_state->__pyx_n_s_dss);
  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_edgesA1);
  Py_CLEAR(clear_module_state->__pyx_n_s_edgesA2);
  Py_CLEAR(clear_module_state->__pyx_n_s_edgesA3);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges_d);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_efficiency);
  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_enumerate);
  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_errAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_errDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_errDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_errEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_errNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_errNegPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_errPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_errUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_errm);
  Py_CLEAR(clear_module_state->__pyx_n_s_errors1);
  Py_CLEAR(clear_module_state->__pyx_n_s_errors2);
  Py_CLEAR(clear_module_state->__pyx_n_s_errp);
  Py_CLEAR(clear_module_state->__pyx_n_s_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_errsdn);
  Py_CLEAR(clear_module_state->__pyx_n_s_errsup);
  Py_CLEAR(clear_module_state->__pyx_n_s_es);
  Py_CLEAR(clear_module_state->__pyx_n_s_estptr);
  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_factor);
  Py_CLEAR(clear_module_state->__pyx_n_s_file);
  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_fillDim);
  Py_CLEAR(clear_module_state->__pyx_n_s_find);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixed_length);
  Py_CLEAR(clear_module_state->__pyx_n_s_fn);
  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_global_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_idd);
  Py_CLEAR(clear_module_state->__pyx_n_s_idi);
  Py_CLEAR(clear_module_state->__pyx_n_s_ids);
  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_ii);
  Py_CLEAR(clear_module_state->__pyx_n_s_iid);
  Py_CLEAR(clear_module_state->__pyx_n_s_iii);
  Py_CLEAR(clear_module_state->__pyx_n_s_iis);
  Py_CLEAR(clear_module_state->__pyx_n_s_import);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeBinVol);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeMaskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeOverflows);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_AnalysisObject_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Binning_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_Estimate0D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Estimate_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Functions_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_IO_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Point_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Axis_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedEstimate);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedEstimate_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedEstimate_3);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedHisto1D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedHisto2D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedHisto3D);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedProfile1);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_BinnedProfile2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Dbn1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Dbn2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Dbn3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Point1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Point2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Point3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Point4D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Scatter1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Scatter2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Scatter3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Scatter4D_pyx);
  Py_CLEAR(clear_module_state->__pyx_n_s_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_indexArr);
  Py_CLEAR(clear_module_state->__pyx_n_s_indexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_index_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_index_between);
  Py_CLEAR(clear_module_state->__pyx_n_s_index_list);
  Py_CLEAR(clear_module_state->__pyx_n_s_indices);
  Py_CLEAR(clear_module_state->__pyx_n_s_indices_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_init1);
  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_init_1);
  Py_CLEAR(clear_module_state->__pyx_n_s_init_2);
  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_integralError);
  Py_CLEAR(clear_module_state->__pyx_n_s_is);
  Py_CLEAR(clear_module_state->__pyx_n_s_isMasked);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVisible);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
  Py_CLEAR(clear_module_state->__pyx_n_s_isd);
  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_isi);
  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_itertools);
  Py_CLEAR(clear_module_state->__pyx_n_s_j);
  Py_CLEAR(clear_module_state->__pyx_n_s_join);
  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_lengthContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_lengthMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_linspace);
  Py_CLEAR(clear_module_state->__pyx_n_s_localIndices);
  Py_CLEAR(clear_module_state->__pyx_n_s_localToGlobalIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_local_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_logspace);
  Py_CLEAR(clear_module_state->__pyx_n_s_lower);
  Py_CLEAR(clear_module_state->__pyx_n_s_lowerX);
  Py_CLEAR(clear_module_state->__pyx_n_s_lowerY);
  Py_CLEAR(clear_module_state->__pyx_n_s_lowerZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_main);
  Py_CLEAR(clear_module_state->__pyx_n_s_mapTypes);
  Py_CLEAR(clear_module_state->__pyx_n_s_maskBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_maskBinAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_maskBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_maskSlice);
  Py_CLEAR(clear_module_state->__pyx_n_s_masked);
  Py_CLEAR(clear_module_state->__pyx_n_s_maskedBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxDensity);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxsize);
  Py_CLEAR(clear_module_state->__pyx_n_s_mean);
  Py_CLEAR(clear_module_state->__pyx_n_s_metaclass);
  Py_CLEAR(clear_module_state->__pyx_n_s_mid);
  Py_CLEAR(clear_module_state->__pyx_n_s_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_mins);
  Py_CLEAR(clear_module_state->__pyx_n_s_mkEstimate);
  Py_CLEAR(clear_module_state->__pyx_n_s_mkHisto);
  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_mro_entries);
  Py_CLEAR(clear_module_state->__pyx_n_s_n);
  Py_CLEAR(clear_module_state->__pyx_n_s_naiveChi2);
  Py_CLEAR(clear_module_state->__pyx_n_s_naiveChi2reduced);
  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_nbinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_nbinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_nbinsZ);
  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_numBinsZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_numErrs);
  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_object);
  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_p);
  Py_CLEAR(clear_module_state->__pyx_n_s_parseyaml);
  Py_CLEAR(clear_module_state->__pyx_n_s_pat_match);
  Py_CLEAR(clear_module_state->__pyx_n_s_pat_uncorr);
  Py_CLEAR(clear_module_state->__pyx_n_s_path);
  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_pos);
  Py_CLEAR(clear_module_state->__pyx_n_s_precision);
  Py_CLEAR(clear_module_state->__pyx_n_s_prep_patterns);
  Py_CLEAR(clear_module_state->__pyx_n_s_prepare);
  Py_CLEAR(clear_module_state->__pyx_n_s_print);
  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_quadSum);
  Py_CLEAR(clear_module_state->__pyx_n_s_quadSumAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_quadSumEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_quadSumNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_quadSumPos);
  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_read);
  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_symmetric);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinX);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinXBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinXTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinY);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinYBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinYTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinZBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinZTo);
  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_relErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrDown);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrDownUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_relTotalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_relTotalErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_relTotalErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_relTotalErrNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_relTotalErrPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_repeat);
  Py_CLEAR(clear_module_state->__pyx_n_s_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_resetPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_resetTitle);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmErrs);
  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_rmSource);
  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_sW);
  Py_CLEAR(clear_module_state->__pyx_n_s_sW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sWcross);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_d_points);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_s_d_bins);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_sumw_0_2g_err_s);
  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_scaleErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleVal);
  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_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_sdd);
  Py_CLEAR(clear_module_state->__pyx_n_s_sdi);
  Py_CLEAR(clear_module_state->__pyx_n_s_sds);
  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_serializeContent);
  Py_CLEAR(clear_module_state->__pyx_n_s_serializeMeta);
  Py_CLEAR(clear_module_state->__pyx_n_s_serializeSources);
  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_setBinning);
  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_setIndices);
  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_config);
  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_si);
  Py_CLEAR(clear_module_state->__pyx_n_s_sid);
  Py_CLEAR(clear_module_state->__pyx_n_s_sii);
  Py_CLEAR(clear_module_state->__pyx_n_s_sis);
  Py_CLEAR(clear_module_state->__pyx_n_s_skipPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_skipTitle);
  Py_CLEAR(clear_module_state->__pyx_n_s_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
  Py_CLEAR(clear_module_state->__pyx_n_s_split);
  Py_CLEAR(clear_module_state->__pyx_n_s_ss);
  Py_CLEAR(clear_module_state->__pyx_n_s_ssd);
  Py_CLEAR(clear_module_state->__pyx_n_s_ssi);
  Py_CLEAR(clear_module_state->__pyx_n_s_sss);
  Py_CLEAR(clear_module_state->__pyx_n_s_st);
  Py_CLEAR(clear_module_state->__pyx_kp_s_stat_uncor);
  Py_CLEAR(clear_module_state->__pyx_n_s_status);
  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_to_file);
  Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
  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_sumWA);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWA2);
  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_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWY2);
  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_sumWcross);
  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_tmp);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalErrEnv);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalErrNeg);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalErrPos);
  Py_CLEAR(clear_module_state->__pyx_n_s_try_loop);
  Py_CLEAR(clear_module_state->__pyx_n_s_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_unpatterns);
  Py_CLEAR(clear_module_state->__pyx_n_s_upperX);
  Py_CLEAR(clear_module_state->__pyx_n_s_upperY);
  Py_CLEAR(clear_module_state->__pyx_n_s_upperZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_useFocus);
  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_valMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_valMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_value);
  Py_CLEAR(clear_module_state->__pyx_n_s_values);
  Py_CLEAR(clear_module_state->__pyx_n_s_variance);
  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_w);
  Py_CLEAR(clear_module_state->__pyx_n_s_weight);
  Py_CLEAR(clear_module_state->__pyx_n_s_weights);
  Py_CLEAR(clear_module_state->__pyx_n_s_width);
  Py_CLEAR(clear_module_state->__pyx_n_s_write);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeFLAT);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeYODA);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeYODA1);
  Py_CLEAR(clear_module_state->__pyx_n_s_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_xEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErr);
  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_xErrDn);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrs);
  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_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_xVal);
  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_xedges);
  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_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_yEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErr);
  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_yErrDn);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrs);
  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_yMid);
  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_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_yVal);
  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_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_zEdge);
  Py_CLEAR(clear_module_state->__pyx_n_s_zEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrDn);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrUp);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrs);
  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_zMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMid);
  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_zRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_zVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_zVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_zVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_zWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_zWidths);
  Py_CLEAR(clear_module_state->__pyx_float_2_);
  Py_CLEAR(clear_module_state->__pyx_float_0_0);
  Py_CLEAR(clear_module_state->__pyx_float_1_0);
  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_k__92);
  Py_CLEAR(clear_module_state->__pyx_k__93);
  Py_CLEAR(clear_module_state->__pyx_k__94);
  Py_CLEAR(clear_module_state->__pyx_k__95);
  Py_CLEAR(clear_module_state->__pyx_k__96);
  Py_CLEAR(clear_module_state->__pyx_k__97);
  Py_CLEAR(clear_module_state->__pyx_k__98);
  Py_CLEAR(clear_module_state->__pyx_k__99);
  Py_CLEAR(clear_module_state->__pyx_k__100);
  Py_CLEAR(clear_module_state->__pyx_k__101);
  Py_CLEAR(clear_module_state->__pyx_k__102);
  Py_CLEAR(clear_module_state->__pyx_k__103);
  Py_CLEAR(clear_module_state->__pyx_k__104);
  Py_CLEAR(clear_module_state->__pyx_k__105);
  Py_CLEAR(clear_module_state->__pyx_k__106);
  Py_CLEAR(clear_module_state->__pyx_tuple_);
  Py_CLEAR(clear_module_state->__pyx_tuple__3);
  Py_CLEAR(clear_module_state->__pyx_tuple__4);
  Py_CLEAR(clear_module_state->__pyx_tuple__8);
  Py_CLEAR(clear_module_state->__pyx_tuple__9);
  Py_CLEAR(clear_module_state->__pyx_tuple__11);
  Py_CLEAR(clear_module_state->__pyx_tuple__12);
  Py_CLEAR(clear_module_state->__pyx_tuple__13);
  Py_CLEAR(clear_module_state->__pyx_tuple__15);
  Py_CLEAR(clear_module_state->__pyx_tuple__17);
  Py_CLEAR(clear_module_state->__pyx_tuple__19);
  Py_CLEAR(clear_module_state->__pyx_tuple__21);
  Py_CLEAR(clear_module_state->__pyx_tuple__24);
  Py_CLEAR(clear_module_state->__pyx_tuple__26);
  Py_CLEAR(clear_module_state->__pyx_tuple__89);
  Py_CLEAR(clear_module_state->__pyx_tuple__90);
  Py_CLEAR(clear_module_state->__pyx_tuple__91);
  Py_CLEAR(clear_module_state->__pyx_tuple__107);
  Py_CLEAR(clear_module_state->__pyx_tuple__115);
  Py_CLEAR(clear_module_state->__pyx_tuple__117);
  Py_CLEAR(clear_module_state->__pyx_tuple__119);
  Py_CLEAR(clear_module_state->__pyx_tuple__121);
  Py_CLEAR(clear_module_state->__pyx_tuple__122);
  Py_CLEAR(clear_module_state->__pyx_tuple__124);
  Py_CLEAR(clear_module_state->__pyx_tuple__130);
  Py_CLEAR(clear_module_state->__pyx_tuple__133);
  Py_CLEAR(clear_module_state->__pyx_tuple__137);
  Py_CLEAR(clear_module_state->__pyx_tuple__139);
  Py_CLEAR(clear_module_state->__pyx_tuple__140);
  Py_CLEAR(clear_module_state->__pyx_tuple__141);
  Py_CLEAR(clear_module_state->__pyx_tuple__144);
  Py_CLEAR(clear_module_state->__pyx_tuple__152);
  Py_CLEAR(clear_module_state->__pyx_tuple__154);
  Py_CLEAR(clear_module_state->__pyx_tuple__155);
  Py_CLEAR(clear_module_state->__pyx_tuple__164);
  Py_CLEAR(clear_module_state->__pyx_tuple__166);
  Py_CLEAR(clear_module_state->__pyx_tuple__168);
  Py_CLEAR(clear_module_state->__pyx_tuple__169);
  Py_CLEAR(clear_module_state->__pyx_tuple__171);
  Py_CLEAR(clear_module_state->__pyx_tuple__172);
  Py_CLEAR(clear_module_state->__pyx_tuple__174);
  Py_CLEAR(clear_module_state->__pyx_tuple__177);
  Py_CLEAR(clear_module_state->__pyx_tuple__179);
  Py_CLEAR(clear_module_state->__pyx_tuple__182);
  Py_CLEAR(clear_module_state->__pyx_tuple__184);
  Py_CLEAR(clear_module_state->__pyx_tuple__201);
  Py_CLEAR(clear_module_state->__pyx_tuple__203);
  Py_CLEAR(clear_module_state->__pyx_tuple__205);
  Py_CLEAR(clear_module_state->__pyx_tuple__209);
  Py_CLEAR(clear_module_state->__pyx_tuple__227);
  Py_CLEAR(clear_module_state->__pyx_tuple__250);
  Py_CLEAR(clear_module_state->__pyx_tuple__290);
  Py_CLEAR(clear_module_state->__pyx_tuple__294);
  Py_CLEAR(clear_module_state->__pyx_tuple__296);
  Py_CLEAR(clear_module_state->__pyx_tuple__298);
  Py_CLEAR(clear_module_state->__pyx_tuple__301);
  Py_CLEAR(clear_module_state->__pyx_tuple__303);
  Py_CLEAR(clear_module_state->__pyx_tuple__304);
  Py_CLEAR(clear_module_state->__pyx_tuple__306);
  Py_CLEAR(clear_module_state->__pyx_tuple__308);
  Py_CLEAR(clear_module_state->__pyx_tuple__310);
  Py_CLEAR(clear_module_state->__pyx_tuple__316);
  Py_CLEAR(clear_module_state->__pyx_tuple__319);
  Py_CLEAR(clear_module_state->__pyx_tuple__322);
  Py_CLEAR(clear_module_state->__pyx_tuple__324);
  Py_CLEAR(clear_module_state->__pyx_tuple__326);
  Py_CLEAR(clear_module_state->__pyx_tuple__328);
  Py_CLEAR(clear_module_state->__pyx_tuple__330);
  Py_CLEAR(clear_module_state->__pyx_tuple__333);
  Py_CLEAR(clear_module_state->__pyx_tuple__335);
  Py_CLEAR(clear_module_state->__pyx_tuple__336);
  Py_CLEAR(clear_module_state->__pyx_tuple__339);
  Py_CLEAR(clear_module_state->__pyx_tuple__341);
  Py_CLEAR(clear_module_state->__pyx_tuple__342);
  Py_CLEAR(clear_module_state->__pyx_tuple__347);
  Py_CLEAR(clear_module_state->__pyx_tuple__349);
  Py_CLEAR(clear_module_state->__pyx_tuple__351);
  Py_CLEAR(clear_module_state->__pyx_tuple__353);
  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__367);
  Py_CLEAR(clear_module_state->__pyx_tuple__369);
  Py_CLEAR(clear_module_state->__pyx_tuple__378);
  Py_CLEAR(clear_module_state->__pyx_tuple__380);
  Py_CLEAR(clear_module_state->__pyx_tuple__382);
  Py_CLEAR(clear_module_state->__pyx_tuple__385);
  Py_CLEAR(clear_module_state->__pyx_tuple__387);
  Py_CLEAR(clear_module_state->__pyx_tuple__389);
  Py_CLEAR(clear_module_state->__pyx_tuple__391);
  Py_CLEAR(clear_module_state->__pyx_tuple__393);
  Py_CLEAR(clear_module_state->__pyx_tuple__396);
  Py_CLEAR(clear_module_state->__pyx_tuple__401);
  Py_CLEAR(clear_module_state->__pyx_tuple__403);
  Py_CLEAR(clear_module_state->__pyx_tuple__405);
  Py_CLEAR(clear_module_state->__pyx_tuple__407);
  Py_CLEAR(clear_module_state->__pyx_tuple__409);
  Py_CLEAR(clear_module_state->__pyx_tuple__411);
  Py_CLEAR(clear_module_state->__pyx_tuple__412);
  Py_CLEAR(clear_module_state->__pyx_tuple__414);
  Py_CLEAR(clear_module_state->__pyx_tuple__416);
  Py_CLEAR(clear_module_state->__pyx_tuple__418);
  Py_CLEAR(clear_module_state->__pyx_tuple__420);
  Py_CLEAR(clear_module_state->__pyx_tuple__421);
  Py_CLEAR(clear_module_state->__pyx_tuple__423);
  Py_CLEAR(clear_module_state->__pyx_tuple__431);
  Py_CLEAR(clear_module_state->__pyx_tuple__433);
  Py_CLEAR(clear_module_state->__pyx_tuple__435);
  Py_CLEAR(clear_module_state->__pyx_tuple__441);
  Py_CLEAR(clear_module_state->__pyx_tuple__443);
  Py_CLEAR(clear_module_state->__pyx_tuple__449);
  Py_CLEAR(clear_module_state->__pyx_tuple__451);
  Py_CLEAR(clear_module_state->__pyx_tuple__453);
  Py_CLEAR(clear_module_state->__pyx_tuple__458);
  Py_CLEAR(clear_module_state->__pyx_tuple__460);
  Py_CLEAR(clear_module_state->__pyx_tuple__477);
  Py_CLEAR(clear_module_state->__pyx_tuple__481);
  Py_CLEAR(clear_module_state->__pyx_tuple__520);
  Py_CLEAR(clear_module_state->__pyx_tuple__522);
  Py_CLEAR(clear_module_state->__pyx_tuple__539);
  Py_CLEAR(clear_module_state->__pyx_tuple__543);
  Py_CLEAR(clear_module_state->__pyx_tuple__612);
  Py_CLEAR(clear_module_state->__pyx_tuple__614);
  Py_CLEAR(clear_module_state->__pyx_tuple__615);
  Py_CLEAR(clear_module_state->__pyx_tuple__617);
  Py_CLEAR(clear_module_state->__pyx_tuple__626);
  Py_CLEAR(clear_module_state->__pyx_tuple__630);
  Py_CLEAR(clear_module_state->__pyx_tuple__632);
  Py_CLEAR(clear_module_state->__pyx_tuple__636);
  Py_CLEAR(clear_module_state->__pyx_tuple__697);
  Py_CLEAR(clear_module_state->__pyx_tuple__746);
  Py_CLEAR(clear_module_state->__pyx_tuple__779);
  Py_CLEAR(clear_module_state->__pyx_tuple__864);
  Py_CLEAR(clear_module_state->__pyx_tuple__992);
  Py_CLEAR(clear_module_state->__pyx_tuple__996);
  Py_CLEAR(clear_module_state->__pyx_codeobj__14);
  Py_CLEAR(clear_module_state->__pyx_codeobj__16);
  Py_CLEAR(clear_module_state->__pyx_codeobj__18);
  Py_CLEAR(clear_module_state->__pyx_codeobj__20);
  Py_CLEAR(clear_module_state->__pyx_codeobj__22);
  Py_CLEAR(clear_module_state->__pyx_codeobj__23);
  Py_CLEAR(clear_module_state->__pyx_codeobj__25);
  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__33);
  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__37);
  Py_CLEAR(clear_module_state->__pyx_codeobj__38);
  Py_CLEAR(clear_module_state->__pyx_codeobj__39);
  Py_CLEAR(clear_module_state->__pyx_codeobj__40);
  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__59);
  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__63);
  Py_CLEAR(clear_module_state->__pyx_codeobj__64);
  Py_CLEAR(clear_module_state->__pyx_codeobj__65);
  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__86);
  Py_CLEAR(clear_module_state->__pyx_codeobj__87);
  Py_CLEAR(clear_module_state->__pyx_codeobj__88);
  Py_CLEAR(clear_module_state->__pyx_tuple__1004);
  Py_CLEAR(clear_module_state->__pyx_tuple__1006);
  Py_CLEAR(clear_module_state->__pyx_tuple__1023);
  Py_CLEAR(clear_module_state->__pyx_tuple__1047);
  Py_CLEAR(clear_module_state->__pyx_tuple__1056);
  Py_CLEAR(clear_module_state->__pyx_tuple__1094);
  Py_CLEAR(clear_module_state->__pyx_tuple__1107);
  Py_CLEAR(clear_module_state->__pyx_tuple__1109);
  Py_CLEAR(clear_module_state->__pyx_tuple__1111);
  Py_CLEAR(clear_module_state->__pyx_tuple__1118);
  Py_CLEAR(clear_module_state->__pyx_tuple__1133);
  Py_CLEAR(clear_module_state->__pyx_tuple__1135);
  Py_CLEAR(clear_module_state->__pyx_tuple__1166);
  Py_CLEAR(clear_module_state->__pyx_tuple__1168);
  Py_CLEAR(clear_module_state->__pyx_tuple__1216);
  Py_CLEAR(clear_module_state->__pyx_tuple__1218);
  Py_CLEAR(clear_module_state->__pyx_tuple__1225);
  Py_CLEAR(clear_module_state->__pyx_tuple__1228);
  Py_CLEAR(clear_module_state->__pyx_tuple__1230);
  Py_CLEAR(clear_module_state->__pyx_tuple__1232);
  Py_CLEAR(clear_module_state->__pyx_tuple__1234);
  Py_CLEAR(clear_module_state->__pyx_tuple__1236);
  Py_CLEAR(clear_module_state->__pyx_tuple__1239);
  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__116);
  Py_CLEAR(clear_module_state->__pyx_codeobj__118);
  Py_CLEAR(clear_module_state->__pyx_codeobj__120);
  Py_CLEAR(clear_module_state->__pyx_codeobj__123);
  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__129);
  Py_CLEAR(clear_module_state->__pyx_codeobj__131);
  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__138);
  Py_CLEAR(clear_module_state->__pyx_codeobj__142);
  Py_CLEAR(clear_module_state->__pyx_codeobj__143);
  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__153);
  Py_CLEAR(clear_module_state->__pyx_codeobj__156);
  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__165);
  Py_CLEAR(clear_module_state->__pyx_codeobj__167);
  Py_CLEAR(clear_module_state->__pyx_codeobj__170);
  Py_CLEAR(clear_module_state->__pyx_codeobj__173);
  Py_CLEAR(clear_module_state->__pyx_codeobj__175);
  Py_CLEAR(clear_module_state->__pyx_codeobj__176);
  Py_CLEAR(clear_module_state->__pyx_codeobj__178);
  Py_CLEAR(clear_module_state->__pyx_codeobj__180);
  Py_CLEAR(clear_module_state->__pyx_codeobj__181);
  Py_CLEAR(clear_module_state->__pyx_codeobj__183);
  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__194);
  Py_CLEAR(clear_module_state->__pyx_codeobj__195);
  Py_CLEAR(clear_module_state->__pyx_codeobj__196);
  Py_CLEAR(clear_module_state->__pyx_codeobj__197);
  Py_CLEAR(clear_module_state->__pyx_codeobj__198);
  Py_CLEAR(clear_module_state->__pyx_codeobj__199);
  Py_CLEAR(clear_module_state->__pyx_codeobj__200);
  Py_CLEAR(clear_module_state->__pyx_codeobj__202);
  Py_CLEAR(clear_module_state->__pyx_codeobj__204);
  Py_CLEAR(clear_module_state->__pyx_codeobj__206);
  Py_CLEAR(clear_module_state->__pyx_codeobj__207);
  Py_CLEAR(clear_module_state->__pyx_codeobj__208);
  Py_CLEAR(clear_module_state->__pyx_codeobj__210);
  Py_CLEAR(clear_module_state->__pyx_codeobj__211);
  Py_CLEAR(clear_module_state->__pyx_codeobj__212);
  Py_CLEAR(clear_module_state->__pyx_codeobj__213);
  Py_CLEAR(clear_module_state->__pyx_codeobj__214);
  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__218);
  Py_CLEAR(clear_module_state->__pyx_codeobj__219);
  Py_CLEAR(clear_module_state->__pyx_codeobj__220);
  Py_CLEAR(clear_module_state->__pyx_codeobj__221);
  Py_CLEAR(clear_module_state->__pyx_codeobj__222);
  Py_CLEAR(clear_module_state->__pyx_codeobj__223);
  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__228);
  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__233);
  Py_CLEAR(clear_module_state->__pyx_codeobj__234);
  Py_CLEAR(clear_module_state->__pyx_codeobj__235);
  Py_CLEAR(clear_module_state->__pyx_codeobj__236);
  Py_CLEAR(clear_module_state->__pyx_codeobj__237);
  Py_CLEAR(clear_module_state->__pyx_codeobj__238);
  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__252);
  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__258);
  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__262);
  Py_CLEAR(clear_module_state->__pyx_codeobj__263);
  Py_CLEAR(clear_module_state->__pyx_codeobj__264);
  Py_CLEAR(clear_module_state->__pyx_codeobj__265);
  Py_CLEAR(clear_module_state->__pyx_codeobj__266);
  Py_CLEAR(clear_module_state->__pyx_codeobj__267);
  Py_CLEAR(clear_module_state->__pyx_codeobj__268);
  Py_CLEAR(clear_module_state->__pyx_codeobj__269);
  Py_CLEAR(clear_module_state->__pyx_codeobj__270);
  Py_CLEAR(clear_module_state->__pyx_codeobj__271);
  Py_CLEAR(clear_module_state->__pyx_codeobj__272);
  Py_CLEAR(clear_module_state->__pyx_codeobj__273);
  Py_CLEAR(clear_module_state->__pyx_codeobj__274);
  Py_CLEAR(clear_module_state->__pyx_codeobj__275);
  Py_CLEAR(clear_module_state->__pyx_codeobj__276);
  Py_CLEAR(clear_module_state->__pyx_codeobj__277);
  Py_CLEAR(clear_module_state->__pyx_codeobj__278);
  Py_CLEAR(clear_module_state->__pyx_codeobj__279);
  Py_CLEAR(clear_module_state->__pyx_codeobj__280);
  Py_CLEAR(clear_module_state->__pyx_codeobj__281);
  Py_CLEAR(clear_module_state->__pyx_codeobj__282);
  Py_CLEAR(clear_module_state->__pyx_codeobj__283);
  Py_CLEAR(clear_module_state->__pyx_codeobj__284);
  Py_CLEAR(clear_module_state->__pyx_codeobj__285);
  Py_CLEAR(clear_module_state->__pyx_codeobj__286);
  Py_CLEAR(clear_module_state->__pyx_codeobj__287);
  Py_CLEAR(clear_module_state->__pyx_codeobj__288);
  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__297);
  Py_CLEAR(clear_module_state->__pyx_codeobj__299);
  Py_CLEAR(clear_module_state->__pyx_codeobj__300);
  Py_CLEAR(clear_module_state->__pyx_codeobj__302);
  Py_CLEAR(clear_module_state->__pyx_codeobj__305);
  Py_CLEAR(clear_module_state->__pyx_codeobj__307);
  Py_CLEAR(clear_module_state->__pyx_codeobj__309);
  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__315);
  Py_CLEAR(clear_module_state->__pyx_codeobj__317);
  Py_CLEAR(clear_module_state->__pyx_codeobj__318);
  Py_CLEAR(clear_module_state->__pyx_codeobj__320);
  Py_CLEAR(clear_module_state->__pyx_codeobj__321);
  Py_CLEAR(clear_module_state->__pyx_codeobj__323);
  Py_CLEAR(clear_module_state->__pyx_codeobj__325);
  Py_CLEAR(clear_module_state->__pyx_codeobj__327);
  Py_CLEAR(clear_module_state->__pyx_codeobj__329);
  Py_CLEAR(clear_module_state->__pyx_codeobj__331);
  Py_CLEAR(clear_module_state->__pyx_codeobj__332);
  Py_CLEAR(clear_module_state->__pyx_codeobj__334);
  Py_CLEAR(clear_module_state->__pyx_codeobj__337);
  Py_CLEAR(clear_module_state->__pyx_codeobj__338);
  Py_CLEAR(clear_module_state->__pyx_codeobj__340);
  Py_CLEAR(clear_module_state->__pyx_codeobj__343);
  Py_CLEAR(clear_module_state->__pyx_codeobj__344);
  Py_CLEAR(clear_module_state->__pyx_codeobj__345);
  Py_CLEAR(clear_module_state->__pyx_codeobj__346);
  Py_CLEAR(clear_module_state->__pyx_codeobj__348);
  Py_CLEAR(clear_module_state->__pyx_codeobj__350);
  Py_CLEAR(clear_module_state->__pyx_codeobj__352);
  Py_CLEAR(clear_module_state->__pyx_codeobj__354);
  Py_CLEAR(clear_module_state->__pyx_codeobj__355);
  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__365);
  Py_CLEAR(clear_module_state->__pyx_codeobj__366);
  Py_CLEAR(clear_module_state->__pyx_codeobj__368);
  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__379);
  Py_CLEAR(clear_module_state->__pyx_codeobj__381);
  Py_CLEAR(clear_module_state->__pyx_codeobj__383);
  Py_CLEAR(clear_module_state->__pyx_codeobj__384);
  Py_CLEAR(clear_module_state->__pyx_codeobj__386);
  Py_CLEAR(clear_module_state->__pyx_codeobj__388);
  Py_CLEAR(clear_module_state->__pyx_codeobj__390);
  Py_CLEAR(clear_module_state->__pyx_codeobj__392);
  Py_CLEAR(clear_module_state->__pyx_codeobj__394);
  Py_CLEAR(clear_module_state->__pyx_codeobj__395);
  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__402);
  Py_CLEAR(clear_module_state->__pyx_codeobj__404);
  Py_CLEAR(clear_module_state->__pyx_codeobj__406);
  Py_CLEAR(clear_module_state->__pyx_codeobj__408);
  Py_CLEAR(clear_module_state->__pyx_codeobj__410);
  Py_CLEAR(clear_module_state->__pyx_codeobj__413);
  Py_CLEAR(clear_module_state->__pyx_codeobj__415);
  Py_CLEAR(clear_module_state->__pyx_codeobj__417);
  Py_CLEAR(clear_module_state->__pyx_codeobj__419);
  Py_CLEAR(clear_module_state->__pyx_codeobj__422);
  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__432);
  Py_CLEAR(clear_module_state->__pyx_codeobj__434);
  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__442);
  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__450);
  Py_CLEAR(clear_module_state->__pyx_codeobj__452);
  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__459);
  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__478);
  Py_CLEAR(clear_module_state->__pyx_codeobj__479);
  Py_CLEAR(clear_module_state->__pyx_codeobj__480);
  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__493);
  Py_CLEAR(clear_module_state->__pyx_codeobj__494);
  Py_CLEAR(clear_module_state->__pyx_codeobj__495);
  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__500);
  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__521);
  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__536);
  Py_CLEAR(clear_module_state->__pyx_codeobj__537);
  Py_CLEAR(clear_module_state->__pyx_codeobj__538);
  Py_CLEAR(clear_module_state->__pyx_codeobj__540);
  Py_CLEAR(clear_module_state->__pyx_codeobj__541);
  Py_CLEAR(clear_module_state->__pyx_codeobj__542);
  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__549);
  Py_CLEAR(clear_module_state->__pyx_codeobj__550);
  Py_CLEAR(clear_module_state->__pyx_codeobj__551);
  Py_CLEAR(clear_module_state->__pyx_codeobj__552);
  Py_CLEAR(clear_module_state->__pyx_codeobj__553);
  Py_CLEAR(clear_module_state->__pyx_codeobj__554);
  Py_CLEAR(clear_module_state->__pyx_codeobj__555);
  Py_CLEAR(clear_module_state->__pyx_codeobj__556);
  Py_CLEAR(clear_module_state->__pyx_codeobj__557);
  Py_CLEAR(clear_module_state->__pyx_codeobj__558);
  Py_CLEAR(clear_module_state->__pyx_codeobj__559);
  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__574);
  Py_CLEAR(clear_module_state->__pyx_codeobj__575);
  Py_CLEAR(clear_module_state->__pyx_codeobj__576);
  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__581);
  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__594);
  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__613);
  Py_CLEAR(clear_module_state->__pyx_codeobj__616);
  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__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__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__658);
  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__662);
  Py_CLEAR(clear_module_state->__pyx_codeobj__663);
  Py_CLEAR(clear_module_state->__pyx_codeobj__664);
  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__673);
  Py_CLEAR(clear_module_state->__pyx_codeobj__674);
  Py_CLEAR(clear_module_state->__pyx_codeobj__675);
  Py_CLEAR(clear_module_state->__pyx_codeobj__676);
  Py_CLEAR(clear_module_state->__pyx_codeobj__677);
  Py_CLEAR(clear_module_state->__pyx_codeobj__678);
  Py_CLEAR(clear_module_state->__pyx_codeobj__679);
  Py_CLEAR(clear_module_state->__pyx_codeobj__680);
  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__687);
  Py_CLEAR(clear_module_state->__pyx_codeobj__688);
  Py_CLEAR(clear_module_state->__pyx_codeobj__689);
  Py_CLEAR(clear_module_state->__pyx_codeobj__690);
  Py_CLEAR(clear_module_state->__pyx_codeobj__691);
  Py_CLEAR(clear_module_state->__pyx_codeobj__692);
  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__699);
  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__704);
  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__718);
  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__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__761);
  Py_CLEAR(clear_module_state->__pyx_codeobj__762);
  Py_CLEAR(clear_module_state->__pyx_codeobj__763);
  Py_CLEAR(clear_module_state->__pyx_codeobj__764);
  Py_CLEAR(clear_module_state->__pyx_codeobj__765);
  Py_CLEAR(clear_module_state->__pyx_codeobj__766);
  Py_CLEAR(clear_module_state->__pyx_codeobj__767);
  Py_CLEAR(clear_module_state->__pyx_codeobj__768);
  Py_CLEAR(clear_module_state->__pyx_codeobj__769);
  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__774);
  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__780);
  Py_CLEAR(clear_module_state->__pyx_codeobj__781);
  Py_CLEAR(clear_module_state->__pyx_codeobj__782);
  Py_CLEAR(clear_module_state->__pyx_codeobj__783);
  Py_CLEAR(clear_module_state->__pyx_codeobj__784);
  Py_CLEAR(clear_module_state->__pyx_codeobj__785);
  Py_CLEAR(clear_module_state->__pyx_codeobj__786);
  Py_CLEAR(clear_module_state->__pyx_codeobj__787);
  Py_CLEAR(clear_module_state->__pyx_codeobj__788);
  Py_CLEAR(clear_module_state->__pyx_codeobj__789);
  Py_CLEAR(clear_module_state->__pyx_codeobj__790);
  Py_CLEAR(clear_module_state->__pyx_codeobj__791);
  Py_CLEAR(clear_module_state->__pyx_codeobj__792);
  Py_CLEAR(clear_module_state->__pyx_codeobj__793);
  Py_CLEAR(clear_module_state->__pyx_codeobj__794);
  Py_CLEAR(clear_module_state->__pyx_codeobj__795);
  Py_CLEAR(clear_module_state->__pyx_codeobj__796);
  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__800);
  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__805);
  Py_CLEAR(clear_module_state->__pyx_codeobj__806);
  Py_CLEAR(clear_module_state->__pyx_codeobj__807);
  Py_CLEAR(clear_module_state->__pyx_codeobj__808);
  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__826);
  Py_CLEAR(clear_module_state->__pyx_codeobj__827);
  Py_CLEAR(clear_module_state->__pyx_codeobj__828);
  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__837);
  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__848);
  Py_CLEAR(clear_module_state->__pyx_codeobj__849);
  Py_CLEAR(clear_module_state->__pyx_codeobj__850);
  Py_CLEAR(clear_module_state->__pyx_codeobj__851);
  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__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__871);
  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__878);
  Py_CLEAR(clear_module_state->__pyx_codeobj__879);
  Py_CLEAR(clear_module_state->__pyx_codeobj__880);
  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__886);
  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__892);
  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__924);
  Py_CLEAR(clear_module_state->__pyx_codeobj__925);
  Py_CLEAR(clear_module_state->__pyx_codeobj__926);
  Py_CLEAR(clear_module_state->__pyx_codeobj__927);
  Py_CLEAR(clear_module_state->__pyx_codeobj__928);
  Py_CLEAR(clear_module_state->__pyx_codeobj__929);
  Py_CLEAR(clear_module_state->__pyx_codeobj__930);
  Py_CLEAR(clear_module_state->__pyx_codeobj__931);
  Py_CLEAR(clear_module_state->__pyx_codeobj__932);
  Py_CLEAR(clear_module_state->__pyx_codeobj__933);
  Py_CLEAR(clear_module_state->__pyx_codeobj__934);
  Py_CLEAR(clear_module_state->__pyx_codeobj__935);
  Py_CLEAR(clear_module_state->__pyx_codeobj__936);
  Py_CLEAR(clear_module_state->__pyx_codeobj__937);
  Py_CLEAR(clear_module_state->__pyx_codeobj__938);
  Py_CLEAR(clear_module_state->__pyx_codeobj__939);
  Py_CLEAR(clear_module_state->__pyx_codeobj__940);
  Py_CLEAR(clear_module_state->__pyx_codeobj__941);
  Py_CLEAR(clear_module_state->__pyx_codeobj__942);
  Py_CLEAR(clear_module_state->__pyx_codeobj__943);
  Py_CLEAR(clear_module_state->__pyx_codeobj__944);
  Py_CLEAR(clear_module_state->__pyx_codeobj__945);
  Py_CLEAR(clear_module_state->__pyx_codeobj__946);
  Py_CLEAR(clear_module_state->__pyx_codeobj__947);
  Py_CLEAR(clear_module_state->__pyx_codeobj__948);
  Py_CLEAR(clear_module_state->__pyx_codeobj__949);
  Py_CLEAR(clear_module_state->__pyx_codeobj__950);
  Py_CLEAR(clear_module_state->__pyx_codeobj__951);
  Py_CLEAR(clear_module_state->__pyx_codeobj__952);
  Py_CLEAR(clear_module_state->__pyx_codeobj__953);
  Py_CLEAR(clear_module_state->__pyx_codeobj__954);
  Py_CLEAR(clear_module_state->__pyx_codeobj__955);
  Py_CLEAR(clear_module_state->__pyx_codeobj__956);
  Py_CLEAR(clear_module_state->__pyx_codeobj__957);
  Py_CLEAR(clear_module_state->__pyx_codeobj__958);
  Py_CLEAR(clear_module_state->__pyx_codeobj__959);
  Py_CLEAR(clear_module_state->__pyx_codeobj__960);
  Py_CLEAR(clear_module_state->__pyx_codeobj__961);
  Py_CLEAR(clear_module_state->__pyx_codeobj__962);
  Py_CLEAR(clear_module_state->__pyx_codeobj__963);
  Py_CLEAR(clear_module_state->__pyx_codeobj__964);
  Py_CLEAR(clear_module_state->__pyx_codeobj__965);
  Py_CLEAR(clear_module_state->__pyx_codeobj__966);
  Py_CLEAR(clear_module_state->__pyx_codeobj__967);
  Py_CLEAR(clear_module_state->__pyx_codeobj__968);
  Py_CLEAR(clear_module_state->__pyx_codeobj__969);
  Py_CLEAR(clear_module_state->__pyx_codeobj__970);
  Py_CLEAR(clear_module_state->__pyx_codeobj__971);
  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__975);
  Py_CLEAR(clear_module_state->__pyx_codeobj__976);
  Py_CLEAR(clear_module_state->__pyx_codeobj__977);
  Py_CLEAR(clear_module_state->__pyx_codeobj__978);
  Py_CLEAR(clear_module_state->__pyx_codeobj__979);
  Py_CLEAR(clear_module_state->__pyx_codeobj__980);
  Py_CLEAR(clear_module_state->__pyx_codeobj__981);
  Py_CLEAR(clear_module_state->__pyx_codeobj__982);
  Py_CLEAR(clear_module_state->__pyx_codeobj__983);
  Py_CLEAR(clear_module_state->__pyx_codeobj__984);
  Py_CLEAR(clear_module_state->__pyx_codeobj__985);
  Py_CLEAR(clear_module_state->__pyx_codeobj__986);
  Py_CLEAR(clear_module_state->__pyx_codeobj__987);
  Py_CLEAR(clear_module_state->__pyx_codeobj__988);
  Py_CLEAR(clear_module_state->__pyx_codeobj__989);
  Py_CLEAR(clear_module_state->__pyx_codeobj__990);
  Py_CLEAR(clear_module_state->__pyx_codeobj__991);
  Py_CLEAR(clear_module_state->__pyx_codeobj__993);
  Py_CLEAR(clear_module_state->__pyx_codeobj__994);
  Py_CLEAR(clear_module_state->__pyx_codeobj__995);
  Py_CLEAR(clear_module_state->__pyx_codeobj__997);
  Py_CLEAR(clear_module_state->__pyx_codeobj__998);
  Py_CLEAR(clear_module_state->__pyx_codeobj__999);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1000);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1001);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1002);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1003);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1005);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1007);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1008);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1009);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1010);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1011);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1012);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1013);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1014);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1015);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1016);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1017);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1018);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1019);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1020);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1021);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1022);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1024);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1025);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1026);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1027);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1028);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1029);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1030);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1031);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1032);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1033);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1034);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1035);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1036);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1037);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1038);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1039);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1040);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1041);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1042);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1043);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1044);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1045);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1046);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1048);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1049);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1050);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1051);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1052);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1053);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1054);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1055);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1057);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1058);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1059);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1060);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1061);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1062);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1063);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1064);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1065);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1066);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1067);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1068);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1069);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1070);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1071);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1072);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1073);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1074);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1075);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1076);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1077);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1078);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1079);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1080);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1081);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1082);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1083);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1084);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1085);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1086);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1087);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1088);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1089);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1090);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1091);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1092);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1093);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1095);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1096);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1097);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1098);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1099);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1100);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1101);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1102);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1103);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1104);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1105);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1106);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1108);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1110);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1112);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1113);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1114);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1115);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1116);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1117);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1119);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1120);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1121);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1122);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1123);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1124);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1125);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1126);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1127);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1128);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1129);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1130);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1131);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1132);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1134);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1136);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1137);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1138);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1139);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1140);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1141);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1142);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1143);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1144);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1145);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1146);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1147);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1148);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1149);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1150);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1151);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1152);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1153);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1154);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1155);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1156);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1157);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1158);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1159);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1160);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1161);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1162);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1163);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1164);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1165);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1167);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1169);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1170);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1171);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1172);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1173);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1174);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1175);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1176);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1177);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1178);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1179);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1180);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1181);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1182);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1183);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1184);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1185);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1186);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1187);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1188);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1189);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1190);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1191);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1192);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1193);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1194);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1195);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1196);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1197);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1198);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1199);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1200);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1201);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1202);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1203);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1204);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1205);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1206);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1207);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1208);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1209);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1210);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1211);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1212);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1213);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1214);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1215);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1217);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1219);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1220);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1221);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1222);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1223);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1224);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1226);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1227);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1229);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1231);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1233);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1235);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1237);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1238);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1240);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1241);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1242);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1243);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1244);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1245);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1246);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1247);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1248);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1249);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1250);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1251);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1252);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1253);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1254);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1255);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1256);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1257);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1258);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1259);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1260);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1261);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1262);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1263);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1264);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1265);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1266);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1267);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1268);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1269);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1270);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1271);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1272);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1273);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1274);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1275);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1276);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1277);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1278);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1279);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1280);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1281);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1282);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1283);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1284);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1285);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1286);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1287);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1288);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1289);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1290);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1291);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1292);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1293);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1294);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1295);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1296);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1297);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1298);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1299);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1300);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1301);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1302);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1303);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1304);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1305);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1306);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1307);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1308);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1309);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1310);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1311);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1312);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1313);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1314);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1315);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1316);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1317);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1318);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1319);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1320);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1321);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1322);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1323);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1324);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1325);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1326);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1327);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1328);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1329);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1330);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1331);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1332);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1333);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1334);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1335);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1336);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1337);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1338);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1339);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1340);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1341);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1342);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1343);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1344);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1345);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1346);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1347);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1348);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1349);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1350);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1351);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1352);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1353);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1354);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1355);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1356);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1357);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1358);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1359);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1360);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1361);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1362);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1363);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1364);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1365);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1366);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1367);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1368);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1369);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1370);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1371);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1372);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1373);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1374);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1375);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1376);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1377);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1378);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1379);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1380);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1381);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1382);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1383);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1384);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1385);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1386);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1387);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1388);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1389);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1390);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1391);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1392);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1393);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1394);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1395);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1396);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1397);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1398);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1399);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1400);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1401);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1402);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1403);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1404);
  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_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_Dbn0D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Dbn0D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Estimate);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Estimate);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Estimate0D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Estimate0D);
  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_Axis);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Axis);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedEstimate1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedEstimate2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedEstimate3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedEstimate3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedHisto1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedHisto1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedHisto2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedHisto2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedHisto3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedHisto3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedProfile1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedProfile1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_BinnedProfile2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_BinnedProfile2D);
  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_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_Point4D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Point4D);
  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_Scatter4D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Scatter4D);
  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_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr);
  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_ptype_4yoda_4core___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_AO);
  Py_VISIT(traverse_module_state->__pyx_kp_s_A_bin_content_wrapper_in_1D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_A_bin_content_wrapper_in_2D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_A_bin_content_wrapper_in_3D);
  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_axisConfig);
  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_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_Axis);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis__init2_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_numBins);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Axis_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_Axis_width);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper___init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_dLen);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_setBinni);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_setIndic);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_width);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_locals_BinWrapper_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper___init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_dArea);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_setBinni);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_setIndic);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_width);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_locals_BinWrapper_yWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper___init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_setBinni);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_setIndic);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_width);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_yWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin3D_locals_BinWrapper_zWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinWrapper);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binned);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D___setstate_cyth);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__init2_locals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_areaUnderCurve);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_auc);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_covarianceMatri);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_deserializeCont);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_localToGlobalIn);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_serializeConten);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate1D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D___setstate_cyth);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__init2_locals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_areaUnderCurve);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_auc);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_covarianceMatri);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_deserializeCont);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_localToGlobalIn);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_serializeConten);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate2D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D___setstate_cyth);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__init2_locals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_areaUnderCurve);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_auc);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_covarianceMatri);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_deserializeCont);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_localToGlobalIn);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_numBinsZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinZBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_rebinZTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_serializeConten);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_zEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedEstimate3D_zWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__init2_locals_gen);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_localToGlobalIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_sumWA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto1D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__init2_locals_gen);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_localToGlobalIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_sumWA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto2D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__init2_locals_gen);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_localToGlobalIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_numBinsZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinZBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_rebinZTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_sumWA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedHisto3D_zWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D___setstate_cytho);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__init2_locals_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_deserializeConte);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_localToGlobalInd);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_mkHisto);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_sumWA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile1D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D___setstate_cytho);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__init2_locals_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D__set_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_deserializeConte);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_localToGlobalInd);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_mkHisto);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_sumWA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_BinnedProfile2D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning___init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_config_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Binning_width);
  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_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_deserializeMeta);
  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_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_mkEstimate);
  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_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_set);
  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_D);
  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_set);
  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_RMS);
  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_n_s_Dbn1D_mean);
  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_scale);
  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_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_stdErr);
  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_variance);
  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_RMS);
  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_crossTerm);
  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_scale);
  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_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_set);
  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_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_Dbn2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_RMS);
  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_crossTerm);
  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_scale);
  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_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_set);
  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_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWY2);
  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_Dbn3D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_zMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_zRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_zStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_zStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_zVariance);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Dynamic_ptr_cast_failed_Next);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_err);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errNegPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_errUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_hasSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_numErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_quadSum);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_quadSumNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_quadSumPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relErrDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relErrDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relTotalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relTotalErrNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_relTotalErrPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_rmErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_rmSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_setErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_setVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_totalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate0D_val);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Estimate0D_value_2e_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_deserializeSources);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_err);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errNegPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_errUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_hasSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_numErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_quadSum);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_quadSumAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_quadSumEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_quadSumNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_quadSumPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErrDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErrDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relTotalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relTotalErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relTotalErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relTotalErrNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_relTotalErrPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_rmErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_rmSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_serializeSources);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_setErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_setVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_totalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_totalErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_totalErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_totalErrNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_totalErrPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_val);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_valMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Estimate_valMin);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Estimate_value_2e);
  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_H3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo3D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Histograms_must_be_of_the_same_t);
  Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
  Py_VISIT(traverse_module_state->__pyx_n_s_IndexError);
  Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError);
  Py_VISIT(traverse_module_state->__pyx_n_s_N);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Null_pointer_referenced_perhaps);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Only_division_of_BinnedHisto_Bin);
  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_P3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_P4D);
  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___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D___init4);
  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__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D__init2_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_min);
  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_kp_s_Point1D_v1_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_val);
  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_xErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xErrs);
  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_n_s_Point2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___init4);
  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__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D__init2_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_scaleX);
  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_kp_s_Point2D_v1_g_v2_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_val);
  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_xErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_xErrPlus);
  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_n_s_Point2D_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrs);
  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___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D___init4);
  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__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D__init2_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_scaleX);
  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_kp_s_Point3D_v1_g_v2_g_v3_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_val);
  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_xErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_xErrPlus);
  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_n_s_Point3D_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yErrPlus);
  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_zErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zErrs);
  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_Point4D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D___init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D__init1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D__init2_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D_min);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point4D_val);
  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_scale);
  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_Profile2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_RMS);
  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_S4D);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___init_2);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__init_2);
  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_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_errAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_maxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_mins);
  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_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_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_scaleErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_scaleVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xErrs);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___init_2);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__init_2);
  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_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_errAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_maxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_mins);
  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_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_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_vals);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___init_2);
  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_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__init_2);
  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_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_errAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_maxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_mins);
  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_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleX);
  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_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xErrAvgs);
  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_yErrAvgs);
  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_zErrAvgs);
  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_Scatter4D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___init_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D__addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D__addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D__init_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D__init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_addPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_addPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_combineWith);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_errAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_maxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_mins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_numPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_rmPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_rmPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_scaleErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_scaleVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter4D_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Unknown_axis_combination_encount);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Unknown_edge_type_encountered);
  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
  Py_VISIT(traverse_module_state->__pyx_kp_s_WARNING_method_not_supported_for);
  Py_VISIT(traverse_module_state->__pyx_n_s__10);
  Py_VISIT(traverse_module_state->__pyx_kp_u__108);
  Py_VISIT(traverse_module_state->__pyx_n_s__1405);
  Py_VISIT(traverse_module_state->__pyx_kp_s__2);
  Py_VISIT(traverse_module_state->__pyx_kp_s__5);
  Py_VISIT(traverse_module_state->__pyx_kp_s__6);
  Py_VISIT(traverse_module_state->__pyx_kp_s__7);
  Py_VISIT(traverse_module_state->__pyx_n_s_a);
  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_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_append);
  Py_VISIT(traverse_module_state->__pyx_n_s_areaUnderCurve);
  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_asum);
  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
  Py_VISIT(traverse_module_state->__pyx_n_s_attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_attrgetter);
  Py_VISIT(traverse_module_state->__pyx_n_s_auc);
  Py_VISIT(traverse_module_state->__pyx_n_s_autostr);
  Py_VISIT(traverse_module_state->__pyx_n_s_axes);
  Py_VISIT(traverse_module_state->__pyx_n_s_axisConfig);
  Py_VISIT(traverse_module_state->__pyx_n_s_b);
  Py_VISIT(traverse_module_state->__pyx_n_s_base);
  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_binDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_binIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_bin_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_binedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_binning);
  Py_VISIT(traverse_module_state->__pyx_n_s_binning_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_bins);
  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_cdata);
  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_config);
  Py_VISIT(traverse_module_state->__pyx_n_s_cont);
  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_correlation);
  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_cpptype);
  Py_VISIT(traverse_module_state->__pyx_n_s_crossTerm);
  Py_VISIT(traverse_module_state->__pyx_n_s_d);
  Py_VISIT(traverse_module_state->__pyx_n_s_d2ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_dArea);
  Py_VISIT(traverse_module_state->__pyx_n_s_dLen);
  Py_VISIT(traverse_module_state->__pyx_n_s_dVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_da);
  Py_VISIT(traverse_module_state->__pyx_n_s_data);
  Py_VISIT(traverse_module_state->__pyx_n_s_dd);
  Py_VISIT(traverse_module_state->__pyx_n_s_ddd);
  Py_VISIT(traverse_module_state->__pyx_n_s_ddi);
  Py_VISIT(traverse_module_state->__pyx_n_s_dds);
  Py_VISIT(traverse_module_state->__pyx_n_s_default);
  Py_VISIT(traverse_module_state->__pyx_n_s_density);
  Py_VISIT(traverse_module_state->__pyx_n_s_densityError);
  Py_VISIT(traverse_module_state->__pyx_n_s_densitySum);
  Py_VISIT(traverse_module_state->__pyx_n_s_deserializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_deserializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_deserializeSources);
  Py_VISIT(traverse_module_state->__pyx_n_s_di);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict);
  Py_VISIT(traverse_module_state->__pyx_n_s_did);
  Py_VISIT(traverse_module_state->__pyx_n_s_dii);
  Py_VISIT(traverse_module_state->__pyx_n_s_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_dis);
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
  Py_VISIT(traverse_module_state->__pyx_n_s_divbyvol);
  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_ds);
  Py_VISIT(traverse_module_state->__pyx_n_s_dsd);
  Py_VISIT(traverse_module_state->__pyx_n_s_dsi);
  Py_VISIT(traverse_module_state->__pyx_n_s_dss);
  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_edgesA1);
  Py_VISIT(traverse_module_state->__pyx_n_s_edgesA2);
  Py_VISIT(traverse_module_state->__pyx_n_s_edgesA3);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges_d);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_efficiency);
  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_enumerate);
  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_errAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_errDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_errDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_errEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_errNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_errNegPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_errPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_errUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_errm);
  Py_VISIT(traverse_module_state->__pyx_n_s_errors1);
  Py_VISIT(traverse_module_state->__pyx_n_s_errors2);
  Py_VISIT(traverse_module_state->__pyx_n_s_errp);
  Py_VISIT(traverse_module_state->__pyx_n_s_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_errsdn);
  Py_VISIT(traverse_module_state->__pyx_n_s_errsup);
  Py_VISIT(traverse_module_state->__pyx_n_s_es);
  Py_VISIT(traverse_module_state->__pyx_n_s_estptr);
  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_factor);
  Py_VISIT(traverse_module_state->__pyx_n_s_file);
  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_fillDim);
  Py_VISIT(traverse_module_state->__pyx_n_s_find);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixed_length);
  Py_VISIT(traverse_module_state->__pyx_n_s_fn);
  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_global_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_idd);
  Py_VISIT(traverse_module_state->__pyx_n_s_idi);
  Py_VISIT(traverse_module_state->__pyx_n_s_ids);
  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_ii);
  Py_VISIT(traverse_module_state->__pyx_n_s_iid);
  Py_VISIT(traverse_module_state->__pyx_n_s_iii);
  Py_VISIT(traverse_module_state->__pyx_n_s_iis);
  Py_VISIT(traverse_module_state->__pyx_n_s_import);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeBinVol);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeMaskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeOverflows);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_AnalysisObject_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Binning_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_Estimate0D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Estimate_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Functions_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_IO_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Point_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Axis_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedEstimate);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedEstimate_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedEstimate_3);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedHisto1D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedHisto2D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedHisto3D);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedProfile1);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_BinnedProfile2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Dbn1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Dbn2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Dbn3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Point1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Point2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Point3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Point4D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Scatter1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Scatter2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Scatter3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Scatter4D_pyx);
  Py_VISIT(traverse_module_state->__pyx_n_s_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_indexArr);
  Py_VISIT(traverse_module_state->__pyx_n_s_indexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_index_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_index_between);
  Py_VISIT(traverse_module_state->__pyx_n_s_index_list);
  Py_VISIT(traverse_module_state->__pyx_n_s_indices);
  Py_VISIT(traverse_module_state->__pyx_n_s_indices_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_init1);
  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_init_1);
  Py_VISIT(traverse_module_state->__pyx_n_s_init_2);
  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_integralError);
  Py_VISIT(traverse_module_state->__pyx_n_s_is);
  Py_VISIT(traverse_module_state->__pyx_n_s_isMasked);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVisible);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
  Py_VISIT(traverse_module_state->__pyx_n_s_isd);
  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_isi);
  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_itertools);
  Py_VISIT(traverse_module_state->__pyx_n_s_j);
  Py_VISIT(traverse_module_state->__pyx_n_s_join);
  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_lengthContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_lengthMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_linspace);
  Py_VISIT(traverse_module_state->__pyx_n_s_localIndices);
  Py_VISIT(traverse_module_state->__pyx_n_s_localToGlobalIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_local_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_logspace);
  Py_VISIT(traverse_module_state->__pyx_n_s_lower);
  Py_VISIT(traverse_module_state->__pyx_n_s_lowerX);
  Py_VISIT(traverse_module_state->__pyx_n_s_lowerY);
  Py_VISIT(traverse_module_state->__pyx_n_s_lowerZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_main);
  Py_VISIT(traverse_module_state->__pyx_n_s_mapTypes);
  Py_VISIT(traverse_module_state->__pyx_n_s_maskBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_maskBinAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_maskBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_maskSlice);
  Py_VISIT(traverse_module_state->__pyx_n_s_masked);
  Py_VISIT(traverse_module_state->__pyx_n_s_maskedBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxDensity);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxsize);
  Py_VISIT(traverse_module_state->__pyx_n_s_mean);
  Py_VISIT(traverse_module_state->__pyx_n_s_metaclass);
  Py_VISIT(traverse_module_state->__pyx_n_s_mid);
  Py_VISIT(traverse_module_state->__pyx_n_s_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_mins);
  Py_VISIT(traverse_module_state->__pyx_n_s_mkEstimate);
  Py_VISIT(traverse_module_state->__pyx_n_s_mkHisto);
  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_mro_entries);
  Py_VISIT(traverse_module_state->__pyx_n_s_n);
  Py_VISIT(traverse_module_state->__pyx_n_s_naiveChi2);
  Py_VISIT(traverse_module_state->__pyx_n_s_naiveChi2reduced);
  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_nbinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_nbinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_nbinsZ);
  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_numBinsZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_numErrs);
  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_object);
  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_p);
  Py_VISIT(traverse_module_state->__pyx_n_s_parseyaml);
  Py_VISIT(traverse_module_state->__pyx_n_s_pat_match);
  Py_VISIT(traverse_module_state->__pyx_n_s_pat_uncorr);
  Py_VISIT(traverse_module_state->__pyx_n_s_path);
  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_pos);
  Py_VISIT(traverse_module_state->__pyx_n_s_precision);
  Py_VISIT(traverse_module_state->__pyx_n_s_prep_patterns);
  Py_VISIT(traverse_module_state->__pyx_n_s_prepare);
  Py_VISIT(traverse_module_state->__pyx_n_s_print);
  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_quadSum);
  Py_VISIT(traverse_module_state->__pyx_n_s_quadSumAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_quadSumEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_quadSumNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_quadSumPos);
  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_read);
  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_symmetric);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinX);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinXBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinXTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinY);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinYBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinYTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinZBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinZTo);
  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_relErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrDown);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrDownUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_relTotalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_relTotalErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_relTotalErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_relTotalErrNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_relTotalErrPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_repeat);
  Py_VISIT(traverse_module_state->__pyx_n_s_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_resetPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_resetTitle);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmErrs);
  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_rmSource);
  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_sW);
  Py_VISIT(traverse_module_state->__pyx_n_s_sW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sWcross);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_d_points);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_s_d_bins);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_sumw_0_2g_err_s);
  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_scaleErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleVal);
  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_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_sdd);
  Py_VISIT(traverse_module_state->__pyx_n_s_sdi);
  Py_VISIT(traverse_module_state->__pyx_n_s_sds);
  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_serializeContent);
  Py_VISIT(traverse_module_state->__pyx_n_s_serializeMeta);
  Py_VISIT(traverse_module_state->__pyx_n_s_serializeSources);
  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_setBinning);
  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_setIndices);
  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_config);
  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_si);
  Py_VISIT(traverse_module_state->__pyx_n_s_sid);
  Py_VISIT(traverse_module_state->__pyx_n_s_sii);
  Py_VISIT(traverse_module_state->__pyx_n_s_sis);
  Py_VISIT(traverse_module_state->__pyx_n_s_skipPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_skipTitle);
  Py_VISIT(traverse_module_state->__pyx_n_s_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
  Py_VISIT(traverse_module_state->__pyx_n_s_split);
  Py_VISIT(traverse_module_state->__pyx_n_s_ss);
  Py_VISIT(traverse_module_state->__pyx_n_s_ssd);
  Py_VISIT(traverse_module_state->__pyx_n_s_ssi);
  Py_VISIT(traverse_module_state->__pyx_n_s_sss);
  Py_VISIT(traverse_module_state->__pyx_n_s_st);
  Py_VISIT(traverse_module_state->__pyx_kp_s_stat_uncor);
  Py_VISIT(traverse_module_state->__pyx_n_s_status);
  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_to_file);
  Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
  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_sumWA);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWA2);
  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_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWY2);
  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_sumWcross);
  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_tmp);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalErrEnv);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalErrNeg);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalErrPos);
  Py_VISIT(traverse_module_state->__pyx_n_s_try_loop);
  Py_VISIT(traverse_module_state->__pyx_n_s_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_unpatterns);
  Py_VISIT(traverse_module_state->__pyx_n_s_upperX);
  Py_VISIT(traverse_module_state->__pyx_n_s_upperY);
  Py_VISIT(traverse_module_state->__pyx_n_s_upperZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_useFocus);
  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_valMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_valMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_value);
  Py_VISIT(traverse_module_state->__pyx_n_s_values);
  Py_VISIT(traverse_module_state->__pyx_n_s_variance);
  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_w);
  Py_VISIT(traverse_module_state->__pyx_n_s_weight);
  Py_VISIT(traverse_module_state->__pyx_n_s_weights);
  Py_VISIT(traverse_module_state->__pyx_n_s_width);
  Py_VISIT(traverse_module_state->__pyx_n_s_write);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeFLAT);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeYODA);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeYODA1);
  Py_VISIT(traverse_module_state->__pyx_n_s_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_xEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErr);
  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_xErrDn);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrs);
  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_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_xVal);
  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_xedges);
  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_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_yEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErr);
  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_yErrDn);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrs);
  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_yMid);
  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_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_yVal);
  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_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_zEdge);
  Py_VISIT(traverse_module_state->__pyx_n_s_zEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrDn);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrUp);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrs);
  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_zMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMid);
  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_zRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_zVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_zVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_zVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_zWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_zWidths);
  Py_VISIT(traverse_module_state->__pyx_float_2_);
  Py_VISIT(traverse_module_state->__pyx_float_0_0);
  Py_VISIT(traverse_module_state->__pyx_float_1_0);
  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_k__92);
  Py_VISIT(traverse_module_state->__pyx_k__93);
  Py_VISIT(traverse_module_state->__pyx_k__94);
  Py_VISIT(traverse_module_state->__pyx_k__95);
  Py_VISIT(traverse_module_state->__pyx_k__96);
  Py_VISIT(traverse_module_state->__pyx_k__97);
  Py_VISIT(traverse_module_state->__pyx_k__98);
  Py_VISIT(traverse_module_state->__pyx_k__99);
  Py_VISIT(traverse_module_state->__pyx_k__100);
  Py_VISIT(traverse_module_state->__pyx_k__101);
  Py_VISIT(traverse_module_state->__pyx_k__102);
  Py_VISIT(traverse_module_state->__pyx_k__103);
  Py_VISIT(traverse_module_state->__pyx_k__104);
  Py_VISIT(traverse_module_state->__pyx_k__105);
  Py_VISIT(traverse_module_state->__pyx_k__106);
  Py_VISIT(traverse_module_state->__pyx_tuple_);
  Py_VISIT(traverse_module_state->__pyx_tuple__3);
  Py_VISIT(traverse_module_state->__pyx_tuple__4);
  Py_VISIT(traverse_module_state->__pyx_tuple__8);
  Py_VISIT(traverse_module_state->__pyx_tuple__9);
  Py_VISIT(traverse_module_state->__pyx_tuple__11);
  Py_VISIT(traverse_module_state->__pyx_tuple__12);
  Py_VISIT(traverse_module_state->__pyx_tuple__13);
  Py_VISIT(traverse_module_state->__pyx_tuple__15);
  Py_VISIT(traverse_module_state->__pyx_tuple__17);
  Py_VISIT(traverse_module_state->__pyx_tuple__19);
  Py_VISIT(traverse_module_state->__pyx_tuple__21);
  Py_VISIT(traverse_module_state->__pyx_tuple__24);
  Py_VISIT(traverse_module_state->__pyx_tuple__26);
  Py_VISIT(traverse_module_state->__pyx_tuple__89);
  Py_VISIT(traverse_module_state->__pyx_tuple__90);
  Py_VISIT(traverse_module_state->__pyx_tuple__91);
  Py_VISIT(traverse_module_state->__pyx_tuple__107);
  Py_VISIT(traverse_module_state->__pyx_tuple__115);
  Py_VISIT(traverse_module_state->__pyx_tuple__117);
  Py_VISIT(traverse_module_state->__pyx_tuple__119);
  Py_VISIT(traverse_module_state->__pyx_tuple__121);
  Py_VISIT(traverse_module_state->__pyx_tuple__122);
  Py_VISIT(traverse_module_state->__pyx_tuple__124);
  Py_VISIT(traverse_module_state->__pyx_tuple__130);
  Py_VISIT(traverse_module_state->__pyx_tuple__133);
  Py_VISIT(traverse_module_state->__pyx_tuple__137);
  Py_VISIT(traverse_module_state->__pyx_tuple__139);
  Py_VISIT(traverse_module_state->__pyx_tuple__140);
  Py_VISIT(traverse_module_state->__pyx_tuple__141);
  Py_VISIT(traverse_module_state->__pyx_tuple__144);
  Py_VISIT(traverse_module_state->__pyx_tuple__152);
  Py_VISIT(traverse_module_state->__pyx_tuple__154);
  Py_VISIT(traverse_module_state->__pyx_tuple__155);
  Py_VISIT(traverse_module_state->__pyx_tuple__164);
  Py_VISIT(traverse_module_state->__pyx_tuple__166);
  Py_VISIT(traverse_module_state->__pyx_tuple__168);
  Py_VISIT(traverse_module_state->__pyx_tuple__169);
  Py_VISIT(traverse_module_state->__pyx_tuple__171);
  Py_VISIT(traverse_module_state->__pyx_tuple__172);
  Py_VISIT(traverse_module_state->__pyx_tuple__174);
  Py_VISIT(traverse_module_state->__pyx_tuple__177);
  Py_VISIT(traverse_module_state->__pyx_tuple__179);
  Py_VISIT(traverse_module_state->__pyx_tuple__182);
  Py_VISIT(traverse_module_state->__pyx_tuple__184);
  Py_VISIT(traverse_module_state->__pyx_tuple__201);
  Py_VISIT(traverse_module_state->__pyx_tuple__203);
  Py_VISIT(traverse_module_state->__pyx_tuple__205);
  Py_VISIT(traverse_module_state->__pyx_tuple__209);
  Py_VISIT(traverse_module_state->__pyx_tuple__227);
  Py_VISIT(traverse_module_state->__pyx_tuple__250);
  Py_VISIT(traverse_module_state->__pyx_tuple__290);
  Py_VISIT(traverse_module_state->__pyx_tuple__294);
  Py_VISIT(traverse_module_state->__pyx_tuple__296);
  Py_VISIT(traverse_module_state->__pyx_tuple__298);
  Py_VISIT(traverse_module_state->__pyx_tuple__301);
  Py_VISIT(traverse_module_state->__pyx_tuple__303);
  Py_VISIT(traverse_module_state->__pyx_tuple__304);
  Py_VISIT(traverse_module_state->__pyx_tuple__306);
  Py_VISIT(traverse_module_state->__pyx_tuple__308);
  Py_VISIT(traverse_module_state->__pyx_tuple__310);
  Py_VISIT(traverse_module_state->__pyx_tuple__316);
  Py_VISIT(traverse_module_state->__pyx_tuple__319);
  Py_VISIT(traverse_module_state->__pyx_tuple__322);
  Py_VISIT(traverse_module_state->__pyx_tuple__324);
  Py_VISIT(traverse_module_state->__pyx_tuple__326);
  Py_VISIT(traverse_module_state->__pyx_tuple__328);
  Py_VISIT(traverse_module_state->__pyx_tuple__330);
  Py_VISIT(traverse_module_state->__pyx_tuple__333);
  Py_VISIT(traverse_module_state->__pyx_tuple__335);
  Py_VISIT(traverse_module_state->__pyx_tuple__336);
  Py_VISIT(traverse_module_state->__pyx_tuple__339);
  Py_VISIT(traverse_module_state->__pyx_tuple__341);
  Py_VISIT(traverse_module_state->__pyx_tuple__342);
  Py_VISIT(traverse_module_state->__pyx_tuple__347);
  Py_VISIT(traverse_module_state->__pyx_tuple__349);
  Py_VISIT(traverse_module_state->__pyx_tuple__351);
  Py_VISIT(traverse_module_state->__pyx_tuple__353);
  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__367);
  Py_VISIT(traverse_module_state->__pyx_tuple__369);
  Py_VISIT(traverse_module_state->__pyx_tuple__378);
  Py_VISIT(traverse_module_state->__pyx_tuple__380);
  Py_VISIT(traverse_module_state->__pyx_tuple__382);
  Py_VISIT(traverse_module_state->__pyx_tuple__385);
  Py_VISIT(traverse_module_state->__pyx_tuple__387);
  Py_VISIT(traverse_module_state->__pyx_tuple__389);
  Py_VISIT(traverse_module_state->__pyx_tuple__391);
  Py_VISIT(traverse_module_state->__pyx_tuple__393);
  Py_VISIT(traverse_module_state->__pyx_tuple__396);
  Py_VISIT(traverse_module_state->__pyx_tuple__401);
  Py_VISIT(traverse_module_state->__pyx_tuple__403);
  Py_VISIT(traverse_module_state->__pyx_tuple__405);
  Py_VISIT(traverse_module_state->__pyx_tuple__407);
  Py_VISIT(traverse_module_state->__pyx_tuple__409);
  Py_VISIT(traverse_module_state->__pyx_tuple__411);
  Py_VISIT(traverse_module_state->__pyx_tuple__412);
  Py_VISIT(traverse_module_state->__pyx_tuple__414);
  Py_VISIT(traverse_module_state->__pyx_tuple__416);
  Py_VISIT(traverse_module_state->__pyx_tuple__418);
  Py_VISIT(traverse_module_state->__pyx_tuple__420);
  Py_VISIT(traverse_module_state->__pyx_tuple__421);
  Py_VISIT(traverse_module_state->__pyx_tuple__423);
  Py_VISIT(traverse_module_state->__pyx_tuple__431);
  Py_VISIT(traverse_module_state->__pyx_tuple__433);
  Py_VISIT(traverse_module_state->__pyx_tuple__435);
  Py_VISIT(traverse_module_state->__pyx_tuple__441);
  Py_VISIT(traverse_module_state->__pyx_tuple__443);
  Py_VISIT(traverse_module_state->__pyx_tuple__449);
  Py_VISIT(traverse_module_state->__pyx_tuple__451);
  Py_VISIT(traverse_module_state->__pyx_tuple__453);
  Py_VISIT(traverse_module_state->__pyx_tuple__458);
  Py_VISIT(traverse_module_state->__pyx_tuple__460);
  Py_VISIT(traverse_module_state->__pyx_tuple__477);
  Py_VISIT(traverse_module_state->__pyx_tuple__481);
  Py_VISIT(traverse_module_state->__pyx_tuple__520);
  Py_VISIT(traverse_module_state->__pyx_tuple__522);
  Py_VISIT(traverse_module_state->__pyx_tuple__539);
  Py_VISIT(traverse_module_state->__pyx_tuple__543);
  Py_VISIT(traverse_module_state->__pyx_tuple__612);
  Py_VISIT(traverse_module_state->__pyx_tuple__614);
  Py_VISIT(traverse_module_state->__pyx_tuple__615);
  Py_VISIT(traverse_module_state->__pyx_tuple__617);
  Py_VISIT(traverse_module_state->__pyx_tuple__626);
  Py_VISIT(traverse_module_state->__pyx_tuple__630);
  Py_VISIT(traverse_module_state->__pyx_tuple__632);
  Py_VISIT(traverse_module_state->__pyx_tuple__636);
  Py_VISIT(traverse_module_state->__pyx_tuple__697);
  Py_VISIT(traverse_module_state->__pyx_tuple__746);
  Py_VISIT(traverse_module_state->__pyx_tuple__779);
  Py_VISIT(traverse_module_state->__pyx_tuple__864);
  Py_VISIT(traverse_module_state->__pyx_tuple__992);
  Py_VISIT(traverse_module_state->__pyx_tuple__996);
  Py_VISIT(traverse_module_state->__pyx_codeobj__14);
  Py_VISIT(traverse_module_state->__pyx_codeobj__16);
  Py_VISIT(traverse_module_state->__pyx_codeobj__18);
  Py_VISIT(traverse_module_state->__pyx_codeobj__20);
  Py_VISIT(traverse_module_state->__pyx_codeobj__22);
  Py_VISIT(traverse_module_state->__pyx_codeobj__23);
  Py_VISIT(traverse_module_state->__pyx_codeobj__25);
  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__33);
  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__37);
  Py_VISIT(traverse_module_state->__pyx_codeobj__38);
  Py_VISIT(traverse_module_state->__pyx_codeobj__39);
  Py_VISIT(traverse_module_state->__pyx_codeobj__40);
  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__59);
  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__63);
  Py_VISIT(traverse_module_state->__pyx_codeobj__64);
  Py_VISIT(traverse_module_state->__pyx_codeobj__65);
  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__86);
  Py_VISIT(traverse_module_state->__pyx_codeobj__87);
  Py_VISIT(traverse_module_state->__pyx_codeobj__88);
  Py_VISIT(traverse_module_state->__pyx_tuple__1004);
  Py_VISIT(traverse_module_state->__pyx_tuple__1006);
  Py_VISIT(traverse_module_state->__pyx_tuple__1023);
  Py_VISIT(traverse_module_state->__pyx_tuple__1047);
  Py_VISIT(traverse_module_state->__pyx_tuple__1056);
  Py_VISIT(traverse_module_state->__pyx_tuple__1094);
  Py_VISIT(traverse_module_state->__pyx_tuple__1107);
  Py_VISIT(traverse_module_state->__pyx_tuple__1109);
  Py_VISIT(traverse_module_state->__pyx_tuple__1111);
  Py_VISIT(traverse_module_state->__pyx_tuple__1118);
  Py_VISIT(traverse_module_state->__pyx_tuple__1133);
  Py_VISIT(traverse_module_state->__pyx_tuple__1135);
  Py_VISIT(traverse_module_state->__pyx_tuple__1166);
  Py_VISIT(traverse_module_state->__pyx_tuple__1168);
  Py_VISIT(traverse_module_state->__pyx_tuple__1216);
  Py_VISIT(traverse_module_state->__pyx_tuple__1218);
  Py_VISIT(traverse_module_state->__pyx_tuple__1225);
  Py_VISIT(traverse_module_state->__pyx_tuple__1228);
  Py_VISIT(traverse_module_state->__pyx_tuple__1230);
  Py_VISIT(traverse_module_state->__pyx_tuple__1232);
  Py_VISIT(traverse_module_state->__pyx_tuple__1234);
  Py_VISIT(traverse_module_state->__pyx_tuple__1236);
  Py_VISIT(traverse_module_state->__pyx_tuple__1239);
  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__116);
  Py_VISIT(traverse_module_state->__pyx_codeobj__118);
  Py_VISIT(traverse_module_state->__pyx_codeobj__120);
  Py_VISIT(traverse_module_state->__pyx_codeobj__123);
  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__129);
  Py_VISIT(traverse_module_state->__pyx_codeobj__131);
  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__138);
  Py_VISIT(traverse_module_state->__pyx_codeobj__142);
  Py_VISIT(traverse_module_state->__pyx_codeobj__143);
  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__153);
  Py_VISIT(traverse_module_state->__pyx_codeobj__156);
  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__165);
  Py_VISIT(traverse_module_state->__pyx_codeobj__167);
  Py_VISIT(traverse_module_state->__pyx_codeobj__170);
  Py_VISIT(traverse_module_state->__pyx_codeobj__173);
  Py_VISIT(traverse_module_state->__pyx_codeobj__175);
  Py_VISIT(traverse_module_state->__pyx_codeobj__176);
  Py_VISIT(traverse_module_state->__pyx_codeobj__178);
  Py_VISIT(traverse_module_state->__pyx_codeobj__180);
  Py_VISIT(traverse_module_state->__pyx_codeobj__181);
  Py_VISIT(traverse_module_state->__pyx_codeobj__183);
  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__194);
  Py_VISIT(traverse_module_state->__pyx_codeobj__195);
  Py_VISIT(traverse_module_state->__pyx_codeobj__196);
  Py_VISIT(traverse_module_state->__pyx_codeobj__197);
  Py_VISIT(traverse_module_state->__pyx_codeobj__198);
  Py_VISIT(traverse_module_state->__pyx_codeobj__199);
  Py_VISIT(traverse_module_state->__pyx_codeobj__200);
  Py_VISIT(traverse_module_state->__pyx_codeobj__202);
  Py_VISIT(traverse_module_state->__pyx_codeobj__204);
  Py_VISIT(traverse_module_state->__pyx_codeobj__206);
  Py_VISIT(traverse_module_state->__pyx_codeobj__207);
  Py_VISIT(traverse_module_state->__pyx_codeobj__208);
  Py_VISIT(traverse_module_state->__pyx_codeobj__210);
  Py_VISIT(traverse_module_state->__pyx_codeobj__211);
  Py_VISIT(traverse_module_state->__pyx_codeobj__212);
  Py_VISIT(traverse_module_state->__pyx_codeobj__213);
  Py_VISIT(traverse_module_state->__pyx_codeobj__214);
  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__218);
  Py_VISIT(traverse_module_state->__pyx_codeobj__219);
  Py_VISIT(traverse_module_state->__pyx_codeobj__220);
  Py_VISIT(traverse_module_state->__pyx_codeobj__221);
  Py_VISIT(traverse_module_state->__pyx_codeobj__222);
  Py_VISIT(traverse_module_state->__pyx_codeobj__223);
  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__228);
  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__233);
  Py_VISIT(traverse_module_state->__pyx_codeobj__234);
  Py_VISIT(traverse_module_state->__pyx_codeobj__235);
  Py_VISIT(traverse_module_state->__pyx_codeobj__236);
  Py_VISIT(traverse_module_state->__pyx_codeobj__237);
  Py_VISIT(traverse_module_state->__pyx_codeobj__238);
  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__252);
  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__258);
  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__262);
  Py_VISIT(traverse_module_state->__pyx_codeobj__263);
  Py_VISIT(traverse_module_state->__pyx_codeobj__264);
  Py_VISIT(traverse_module_state->__pyx_codeobj__265);
  Py_VISIT(traverse_module_state->__pyx_codeobj__266);
  Py_VISIT(traverse_module_state->__pyx_codeobj__267);
  Py_VISIT(traverse_module_state->__pyx_codeobj__268);
  Py_VISIT(traverse_module_state->__pyx_codeobj__269);
  Py_VISIT(traverse_module_state->__pyx_codeobj__270);
  Py_VISIT(traverse_module_state->__pyx_codeobj__271);
  Py_VISIT(traverse_module_state->__pyx_codeobj__272);
  Py_VISIT(traverse_module_state->__pyx_codeobj__273);
  Py_VISIT(traverse_module_state->__pyx_codeobj__274);
  Py_VISIT(traverse_module_state->__pyx_codeobj__275);
  Py_VISIT(traverse_module_state->__pyx_codeobj__276);
  Py_VISIT(traverse_module_state->__pyx_codeobj__277);
  Py_VISIT(traverse_module_state->__pyx_codeobj__278);
  Py_VISIT(traverse_module_state->__pyx_codeobj__279);
  Py_VISIT(traverse_module_state->__pyx_codeobj__280);
  Py_VISIT(traverse_module_state->__pyx_codeobj__281);
  Py_VISIT(traverse_module_state->__pyx_codeobj__282);
  Py_VISIT(traverse_module_state->__pyx_codeobj__283);
  Py_VISIT(traverse_module_state->__pyx_codeobj__284);
  Py_VISIT(traverse_module_state->__pyx_codeobj__285);
  Py_VISIT(traverse_module_state->__pyx_codeobj__286);
  Py_VISIT(traverse_module_state->__pyx_codeobj__287);
  Py_VISIT(traverse_module_state->__pyx_codeobj__288);
  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__297);
  Py_VISIT(traverse_module_state->__pyx_codeobj__299);
  Py_VISIT(traverse_module_state->__pyx_codeobj__300);
  Py_VISIT(traverse_module_state->__pyx_codeobj__302);
  Py_VISIT(traverse_module_state->__pyx_codeobj__305);
  Py_VISIT(traverse_module_state->__pyx_codeobj__307);
  Py_VISIT(traverse_module_state->__pyx_codeobj__309);
  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__315);
  Py_VISIT(traverse_module_state->__pyx_codeobj__317);
  Py_VISIT(traverse_module_state->__pyx_codeobj__318);
  Py_VISIT(traverse_module_state->__pyx_codeobj__320);
  Py_VISIT(traverse_module_state->__pyx_codeobj__321);
  Py_VISIT(traverse_module_state->__pyx_codeobj__323);
  Py_VISIT(traverse_module_state->__pyx_codeobj__325);
  Py_VISIT(traverse_module_state->__pyx_codeobj__327);
  Py_VISIT(traverse_module_state->__pyx_codeobj__329);
  Py_VISIT(traverse_module_state->__pyx_codeobj__331);
  Py_VISIT(traverse_module_state->__pyx_codeobj__332);
  Py_VISIT(traverse_module_state->__pyx_codeobj__334);
  Py_VISIT(traverse_module_state->__pyx_codeobj__337);
  Py_VISIT(traverse_module_state->__pyx_codeobj__338);
  Py_VISIT(traverse_module_state->__pyx_codeobj__340);
  Py_VISIT(traverse_module_state->__pyx_codeobj__343);
  Py_VISIT(traverse_module_state->__pyx_codeobj__344);
  Py_VISIT(traverse_module_state->__pyx_codeobj__345);
  Py_VISIT(traverse_module_state->__pyx_codeobj__346);
  Py_VISIT(traverse_module_state->__pyx_codeobj__348);
  Py_VISIT(traverse_module_state->__pyx_codeobj__350);
  Py_VISIT(traverse_module_state->__pyx_codeobj__352);
  Py_VISIT(traverse_module_state->__pyx_codeobj__354);
  Py_VISIT(traverse_module_state->__pyx_codeobj__355);
  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__365);
  Py_VISIT(traverse_module_state->__pyx_codeobj__366);
  Py_VISIT(traverse_module_state->__pyx_codeobj__368);
  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__379);
  Py_VISIT(traverse_module_state->__pyx_codeobj__381);
  Py_VISIT(traverse_module_state->__pyx_codeobj__383);
  Py_VISIT(traverse_module_state->__pyx_codeobj__384);
  Py_VISIT(traverse_module_state->__pyx_codeobj__386);
  Py_VISIT(traverse_module_state->__pyx_codeobj__388);
  Py_VISIT(traverse_module_state->__pyx_codeobj__390);
  Py_VISIT(traverse_module_state->__pyx_codeobj__392);
  Py_VISIT(traverse_module_state->__pyx_codeobj__394);
  Py_VISIT(traverse_module_state->__pyx_codeobj__395);
  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__402);
  Py_VISIT(traverse_module_state->__pyx_codeobj__404);
  Py_VISIT(traverse_module_state->__pyx_codeobj__406);
  Py_VISIT(traverse_module_state->__pyx_codeobj__408);
  Py_VISIT(traverse_module_state->__pyx_codeobj__410);
  Py_VISIT(traverse_module_state->__pyx_codeobj__413);
  Py_VISIT(traverse_module_state->__pyx_codeobj__415);
  Py_VISIT(traverse_module_state->__pyx_codeobj__417);
  Py_VISIT(traverse_module_state->__pyx_codeobj__419);
  Py_VISIT(traverse_module_state->__pyx_codeobj__422);
  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__432);
  Py_VISIT(traverse_module_state->__pyx_codeobj__434);
  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__442);
  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__450);
  Py_VISIT(traverse_module_state->__pyx_codeobj__452);
  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__459);
  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__478);
  Py_VISIT(traverse_module_state->__pyx_codeobj__479);
  Py_VISIT(traverse_module_state->__pyx_codeobj__480);
  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__493);
  Py_VISIT(traverse_module_state->__pyx_codeobj__494);
  Py_VISIT(traverse_module_state->__pyx_codeobj__495);
  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__500);
  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__521);
  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__536);
  Py_VISIT(traverse_module_state->__pyx_codeobj__537);
  Py_VISIT(traverse_module_state->__pyx_codeobj__538);
  Py_VISIT(traverse_module_state->__pyx_codeobj__540);
  Py_VISIT(traverse_module_state->__pyx_codeobj__541);
  Py_VISIT(traverse_module_state->__pyx_codeobj__542);
  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__549);
  Py_VISIT(traverse_module_state->__pyx_codeobj__550);
  Py_VISIT(traverse_module_state->__pyx_codeobj__551);
  Py_VISIT(traverse_module_state->__pyx_codeobj__552);
  Py_VISIT(traverse_module_state->__pyx_codeobj__553);
  Py_VISIT(traverse_module_state->__pyx_codeobj__554);
  Py_VISIT(traverse_module_state->__pyx_codeobj__555);
  Py_VISIT(traverse_module_state->__pyx_codeobj__556);
  Py_VISIT(traverse_module_state->__pyx_codeobj__557);
  Py_VISIT(traverse_module_state->__pyx_codeobj__558);
  Py_VISIT(traverse_module_state->__pyx_codeobj__559);
  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__574);
  Py_VISIT(traverse_module_state->__pyx_codeobj__575);
  Py_VISIT(traverse_module_state->__pyx_codeobj__576);
  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__581);
  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__594);
  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__613);
  Py_VISIT(traverse_module_state->__pyx_codeobj__616);
  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__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__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__658);
  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__662);
  Py_VISIT(traverse_module_state->__pyx_codeobj__663);
  Py_VISIT(traverse_module_state->__pyx_codeobj__664);
  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__673);
  Py_VISIT(traverse_module_state->__pyx_codeobj__674);
  Py_VISIT(traverse_module_state->__pyx_codeobj__675);
  Py_VISIT(traverse_module_state->__pyx_codeobj__676);
  Py_VISIT(traverse_module_state->__pyx_codeobj__677);
  Py_VISIT(traverse_module_state->__pyx_codeobj__678);
  Py_VISIT(traverse_module_state->__pyx_codeobj__679);
  Py_VISIT(traverse_module_state->__pyx_codeobj__680);
  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__687);
  Py_VISIT(traverse_module_state->__pyx_codeobj__688);
  Py_VISIT(traverse_module_state->__pyx_codeobj__689);
  Py_VISIT(traverse_module_state->__pyx_codeobj__690);
  Py_VISIT(traverse_module_state->__pyx_codeobj__691);
  Py_VISIT(traverse_module_state->__pyx_codeobj__692);
  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__699);
  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__704);
  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__718);
  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__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__761);
  Py_VISIT(traverse_module_state->__pyx_codeobj__762);
  Py_VISIT(traverse_module_state->__pyx_codeobj__763);
  Py_VISIT(traverse_module_state->__pyx_codeobj__764);
  Py_VISIT(traverse_module_state->__pyx_codeobj__765);
  Py_VISIT(traverse_module_state->__pyx_codeobj__766);
  Py_VISIT(traverse_module_state->__pyx_codeobj__767);
  Py_VISIT(traverse_module_state->__pyx_codeobj__768);
  Py_VISIT(traverse_module_state->__pyx_codeobj__769);
  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__774);
  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__780);
  Py_VISIT(traverse_module_state->__pyx_codeobj__781);
  Py_VISIT(traverse_module_state->__pyx_codeobj__782);
  Py_VISIT(traverse_module_state->__pyx_codeobj__783);
  Py_VISIT(traverse_module_state->__pyx_codeobj__784);
  Py_VISIT(traverse_module_state->__pyx_codeobj__785);
  Py_VISIT(traverse_module_state->__pyx_codeobj__786);
  Py_VISIT(traverse_module_state->__pyx_codeobj__787);
  Py_VISIT(traverse_module_state->__pyx_codeobj__788);
  Py_VISIT(traverse_module_state->__pyx_codeobj__789);
  Py_VISIT(traverse_module_state->__pyx_codeobj__790);
  Py_VISIT(traverse_module_state->__pyx_codeobj__791);
  Py_VISIT(traverse_module_state->__pyx_codeobj__792);
  Py_VISIT(traverse_module_state->__pyx_codeobj__793);
  Py_VISIT(traverse_module_state->__pyx_codeobj__794);
  Py_VISIT(traverse_module_state->__pyx_codeobj__795);
  Py_VISIT(traverse_module_state->__pyx_codeobj__796);
  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__800);
  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__805);
  Py_VISIT(traverse_module_state->__pyx_codeobj__806);
  Py_VISIT(traverse_module_state->__pyx_codeobj__807);
  Py_VISIT(traverse_module_state->__pyx_codeobj__808);
  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__826);
  Py_VISIT(traverse_module_state->__pyx_codeobj__827);
  Py_VISIT(traverse_module_state->__pyx_codeobj__828);
  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__837);
  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__848);
  Py_VISIT(traverse_module_state->__pyx_codeobj__849);
  Py_VISIT(traverse_module_state->__pyx_codeobj__850);
  Py_VISIT(traverse_module_state->__pyx_codeobj__851);
  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__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__871);
  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__878);
  Py_VISIT(traverse_module_state->__pyx_codeobj__879);
  Py_VISIT(traverse_module_state->__pyx_codeobj__880);
  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__886);
  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__892);
  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__924);
  Py_VISIT(traverse_module_state->__pyx_codeobj__925);
  Py_VISIT(traverse_module_state->__pyx_codeobj__926);
  Py_VISIT(traverse_module_state->__pyx_codeobj__927);
  Py_VISIT(traverse_module_state->__pyx_codeobj__928);
  Py_VISIT(traverse_module_state->__pyx_codeobj__929);
  Py_VISIT(traverse_module_state->__pyx_codeobj__930);
  Py_VISIT(traverse_module_state->__pyx_codeobj__931);
  Py_VISIT(traverse_module_state->__pyx_codeobj__932);
  Py_VISIT(traverse_module_state->__pyx_codeobj__933);
  Py_VISIT(traverse_module_state->__pyx_codeobj__934);
  Py_VISIT(traverse_module_state->__pyx_codeobj__935);
  Py_VISIT(traverse_module_state->__pyx_codeobj__936);
  Py_VISIT(traverse_module_state->__pyx_codeobj__937);
  Py_VISIT(traverse_module_state->__pyx_codeobj__938);
  Py_VISIT(traverse_module_state->__pyx_codeobj__939);
  Py_VISIT(traverse_module_state->__pyx_codeobj__940);
  Py_VISIT(traverse_module_state->__pyx_codeobj__941);
  Py_VISIT(traverse_module_state->__pyx_codeobj__942);
  Py_VISIT(traverse_module_state->__pyx_codeobj__943);
  Py_VISIT(traverse_module_state->__pyx_codeobj__944);
  Py_VISIT(traverse_module_state->__pyx_codeobj__945);
  Py_VISIT(traverse_module_state->__pyx_codeobj__946);
  Py_VISIT(traverse_module_state->__pyx_codeobj__947);
  Py_VISIT(traverse_module_state->__pyx_codeobj__948);
  Py_VISIT(traverse_module_state->__pyx_codeobj__949);
  Py_VISIT(traverse_module_state->__pyx_codeobj__950);
  Py_VISIT(traverse_module_state->__pyx_codeobj__951);
  Py_VISIT(traverse_module_state->__pyx_codeobj__952);
  Py_VISIT(traverse_module_state->__pyx_codeobj__953);
  Py_VISIT(traverse_module_state->__pyx_codeobj__954);
  Py_VISIT(traverse_module_state->__pyx_codeobj__955);
  Py_VISIT(traverse_module_state->__pyx_codeobj__956);
  Py_VISIT(traverse_module_state->__pyx_codeobj__957);
  Py_VISIT(traverse_module_state->__pyx_codeobj__958);
  Py_VISIT(traverse_module_state->__pyx_codeobj__959);
  Py_VISIT(traverse_module_state->__pyx_codeobj__960);
  Py_VISIT(traverse_module_state->__pyx_codeobj__961);
  Py_VISIT(traverse_module_state->__pyx_codeobj__962);
  Py_VISIT(traverse_module_state->__pyx_codeobj__963);
  Py_VISIT(traverse_module_state->__pyx_codeobj__964);
  Py_VISIT(traverse_module_state->__pyx_codeobj__965);
  Py_VISIT(traverse_module_state->__pyx_codeobj__966);
  Py_VISIT(traverse_module_state->__pyx_codeobj__967);
  Py_VISIT(traverse_module_state->__pyx_codeobj__968);
  Py_VISIT(traverse_module_state->__pyx_codeobj__969);
  Py_VISIT(traverse_module_state->__pyx_codeobj__970);
  Py_VISIT(traverse_module_state->__pyx_codeobj__971);
  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__975);
  Py_VISIT(traverse_module_state->__pyx_codeobj__976);
  Py_VISIT(traverse_module_state->__pyx_codeobj__977);
  Py_VISIT(traverse_module_state->__pyx_codeobj__978);
  Py_VISIT(traverse_module_state->__pyx_codeobj__979);
  Py_VISIT(traverse_module_state->__pyx_codeobj__980);
  Py_VISIT(traverse_module_state->__pyx_codeobj__981);
  Py_VISIT(traverse_module_state->__pyx_codeobj__982);
  Py_VISIT(traverse_module_state->__pyx_codeobj__983);
  Py_VISIT(traverse_module_state->__pyx_codeobj__984);
  Py_VISIT(traverse_module_state->__pyx_codeobj__985);
  Py_VISIT(traverse_module_state->__pyx_codeobj__986);
  Py_VISIT(traverse_module_state->__pyx_codeobj__987);
  Py_VISIT(traverse_module_state->__pyx_codeobj__988);
  Py_VISIT(traverse_module_state->__pyx_codeobj__989);
  Py_VISIT(traverse_module_state->__pyx_codeobj__990);
  Py_VISIT(traverse_module_state->__pyx_codeobj__991);
  Py_VISIT(traverse_module_state->__pyx_codeobj__993);
  Py_VISIT(traverse_module_state->__pyx_codeobj__994);
  Py_VISIT(traverse_module_state->__pyx_codeobj__995);
  Py_VISIT(traverse_module_state->__pyx_codeobj__997);
  Py_VISIT(traverse_module_state->__pyx_codeobj__998);
  Py_VISIT(traverse_module_state->__pyx_codeobj__999);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1000);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1001);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1002);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1003);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1005);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1007);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1008);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1009);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1010);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1011);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1012);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1013);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1014);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1015);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1016);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1017);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1018);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1019);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1020);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1021);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1022);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1024);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1025);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1026);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1027);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1028);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1029);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1030);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1031);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1032);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1033);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1034);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1035);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1036);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1037);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1038);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1039);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1040);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1041);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1042);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1043);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1044);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1045);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1046);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1048);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1049);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1050);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1051);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1052);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1053);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1054);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1055);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1057);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1058);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1059);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1060);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1061);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1062);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1063);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1064);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1065);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1066);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1067);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1068);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1069);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1070);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1071);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1072);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1073);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1074);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1075);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1076);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1077);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1078);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1079);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1080);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1081);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1082);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1083);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1084);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1085);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1086);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1087);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1088);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1089);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1090);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1091);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1092);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1093);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1095);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1096);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1097);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1098);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1099);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1100);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1101);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1102);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1103);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1104);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1105);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1106);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1108);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1110);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1112);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1113);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1114);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1115);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1116);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1117);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1119);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1120);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1121);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1122);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1123);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1124);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1125);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1126);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1127);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1128);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1129);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1130);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1131);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1132);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1134);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1136);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1137);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1138);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1139);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1140);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1141);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1142);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1143);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1144);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1145);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1146);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1147);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1148);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1149);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1150);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1151);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1152);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1153);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1154);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1155);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1156);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1157);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1158);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1159);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1160);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1161);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1162);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1163);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1164);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1165);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1167);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1169);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1170);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1171);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1172);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1173);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1174);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1175);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1176);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1177);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1178);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1179);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1180);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1181);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1182);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1183);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1184);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1185);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1186);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1187);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1188);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1189);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1190);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1191);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1192);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1193);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1194);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1195);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1196);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1197);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1198);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1199);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1200);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1201);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1202);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1203);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1204);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1205);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1206);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1207);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1208);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1209);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1210);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1211);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1212);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1213);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1214);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1215);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1217);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1219);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1220);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1221);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1222);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1223);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1224);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1226);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1227);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1229);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1231);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1233);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1235);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1237);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1238);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1240);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1241);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1242);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1243);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1244);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1245);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1246);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1247);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1248);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1249);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1250);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1251);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1252);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1253);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1254);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1255);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1256);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1257);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1258);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1259);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1260);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1261);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1262);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1263);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1264);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1265);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1266);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1267);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1268);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1269);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1270);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1271);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1272);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1273);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1274);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1275);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1276);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1277);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1278);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1279);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1280);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1281);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1282);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1283);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1284);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1285);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1286);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1287);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1288);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1289);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1290);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1291);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1292);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1293);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1294);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1295);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1296);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1297);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1298);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1299);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1300);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1301);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1302);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1303);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1304);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1305);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1306);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1307);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1308);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1309);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1310);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1311);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1312);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1313);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1314);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1315);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1316);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1317);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1318);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1319);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1320);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1321);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1322);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1323);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1324);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1325);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1326);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1327);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1328);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1329);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1330);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1331);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1332);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1333);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1334);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1335);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1336);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1337);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1338);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1339);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1340);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1341);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1342);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1343);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1344);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1345);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1346);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1347);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1348);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1349);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1350);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1351);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1352);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1353);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1354);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1355);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1356);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1357);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1358);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1359);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1360);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1361);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1362);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1363);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1364);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1365);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1366);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1367);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1368);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1369);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1370);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1371);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1372);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1373);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1374);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1375);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1376);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1377);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1378);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1379);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1380);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1381);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1382);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1383);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1384);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1385);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1386);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1387);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1388);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1389);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1390);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1391);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1392);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1393);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1394);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1395);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1396);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1397);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1398);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1399);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1400);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1401);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1402);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1403);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1404);
  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_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_Dbn0D __pyx_mstate_global->__pyx_type_4yoda_4core_Dbn0D
#define __pyx_type_4yoda_4core_Estimate __pyx_mstate_global->__pyx_type_4yoda_4core_Estimate
#define __pyx_type_4yoda_4core_Estimate0D __pyx_mstate_global->__pyx_type_4yoda_4core_Estimate0D
#define __pyx_type_4yoda_4core_Point __pyx_mstate_global->__pyx_type_4yoda_4core_Point
#define __pyx_type_4yoda_4core_Axis __pyx_mstate_global->__pyx_type_4yoda_4core_Axis
#define __pyx_type_4yoda_4core_BinnedEstimate1D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedEstimate1D
#define __pyx_type_4yoda_4core_BinnedEstimate2D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedEstimate2D
#define __pyx_type_4yoda_4core_BinnedEstimate3D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedEstimate3D
#define __pyx_type_4yoda_4core_BinnedHisto1D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedHisto1D
#define __pyx_type_4yoda_4core_BinnedHisto2D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedHisto2D
#define __pyx_type_4yoda_4core_BinnedHisto3D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedHisto3D
#define __pyx_type_4yoda_4core_BinnedProfile1D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedProfile1D
#define __pyx_type_4yoda_4core_BinnedProfile2D __pyx_mstate_global->__pyx_type_4yoda_4core_BinnedProfile2D
#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_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_Point4D __pyx_mstate_global->__pyx_type_4yoda_4core_Point4D
#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_Scatter4D __pyx_mstate_global->__pyx_type_4yoda_4core_Scatter4D
#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_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr
#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
#define __pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr
#endif
#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_Dbn0D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Dbn0D
#define __pyx_ptype_4yoda_4core_Estimate __pyx_mstate_global->__pyx_ptype_4yoda_4core_Estimate
#define __pyx_ptype_4yoda_4core_Estimate0D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Estimate0D
#define __pyx_ptype_4yoda_4core_Point __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point
#define __pyx_ptype_4yoda_4core_Axis __pyx_mstate_global->__pyx_ptype_4yoda_4core_Axis
#define __pyx_ptype_4yoda_4core_BinnedEstimate1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedEstimate1D
#define __pyx_ptype_4yoda_4core_BinnedEstimate2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedEstimate2D
#define __pyx_ptype_4yoda_4core_BinnedEstimate3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedEstimate3D
#define __pyx_ptype_4yoda_4core_BinnedHisto1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedHisto1D
#define __pyx_ptype_4yoda_4core_BinnedHisto2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedHisto2D
#define __pyx_ptype_4yoda_4core_BinnedHisto3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedHisto3D
#define __pyx_ptype_4yoda_4core_BinnedProfile1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedProfile1D
#define __pyx_ptype_4yoda_4core_BinnedProfile2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_BinnedProfile2D
#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_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_Point4D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point4D
#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_Scatter4D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Scatter4D
#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_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr
#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_ptype_4yoda_4core___pyx_scope_struct_8_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr
#define __pyx_n_s_AO __pyx_mstate_global->__pyx_n_s_AO
#define __pyx_kp_s_A_bin_content_wrapper_in_1D __pyx_mstate_global->__pyx_kp_s_A_bin_content_wrapper_in_1D
#define __pyx_kp_s_A_bin_content_wrapper_in_2D __pyx_mstate_global->__pyx_kp_s_A_bin_content_wrapper_in_2D
#define __pyx_kp_s_A_bin_content_wrapper_in_3D __pyx_mstate_global->__pyx_kp_s_A_bin_content_wrapper_in_3D
#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_axisConfig __pyx_mstate_global->__pyx_n_s_AnalysisObject_axisConfig
#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_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_Axis __pyx_mstate_global->__pyx_n_s_Axis
#define __pyx_n_s_Axis___init1 __pyx_mstate_global->__pyx_n_s_Axis___init1
#define __pyx_n_s_Axis___init2 __pyx_mstate_global->__pyx_n_s_Axis___init2
#define __pyx_n_s_Axis___reduce_cython __pyx_mstate_global->__pyx_n_s_Axis___reduce_cython
#define __pyx_n_s_Axis___setstate_cython __pyx_mstate_global->__pyx_n_s_Axis___setstate_cython
#define __pyx_n_s_Axis__init1 __pyx_mstate_global->__pyx_n_s_Axis__init1
#define __pyx_n_s_Axis__init2 __pyx_mstate_global->__pyx_n_s_Axis__init2
#define __pyx_n_s_Axis__init2_locals_genexpr __pyx_mstate_global->__pyx_n_s_Axis__init2_locals_genexpr
#define __pyx_n_s_Axis_edge __pyx_mstate_global->__pyx_n_s_Axis_edge
#define __pyx_n_s_Axis_index __pyx_mstate_global->__pyx_n_s_Axis_index
#define __pyx_n_s_Axis_max __pyx_mstate_global->__pyx_n_s_Axis_max
#define __pyx_n_s_Axis_mid __pyx_mstate_global->__pyx_n_s_Axis_mid
#define __pyx_n_s_Axis_min __pyx_mstate_global->__pyx_n_s_Axis_min
#define __pyx_n_s_Axis_numBins __pyx_mstate_global->__pyx_n_s_Axis_numBins
#define __pyx_kp_s_Axis_s __pyx_mstate_global->__pyx_kp_s_Axis_s
#define __pyx_n_s_Axis_type __pyx_mstate_global->__pyx_n_s_Axis_type
#define __pyx_n_s_Axis_width __pyx_mstate_global->__pyx_n_s_Axis_width
#define __pyx_n_s_Bin1D_locals_BinWrapper __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper
#define __pyx_n_s_Bin1D_locals_BinWrapper___init __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper___init
#define __pyx_n_s_Bin1D_locals_BinWrapper_attach __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_attach
#define __pyx_n_s_Bin1D_locals_BinWrapper_dLen __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_dLen
#define __pyx_n_s_Bin1D_locals_BinWrapper_dVol __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_dVol
#define __pyx_n_s_Bin1D_locals_BinWrapper_edge __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_edge
#define __pyx_n_s_Bin1D_locals_BinWrapper_index __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_index
#define __pyx_n_s_Bin1D_locals_BinWrapper_isMasked __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_isMasked
#define __pyx_n_s_Bin1D_locals_BinWrapper_max __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_max
#define __pyx_n_s_Bin1D_locals_BinWrapper_mid __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_mid
#define __pyx_n_s_Bin1D_locals_BinWrapper_min __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_min
#define __pyx_n_s_Bin1D_locals_BinWrapper_setBinni __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_setBinni
#define __pyx_n_s_Bin1D_locals_BinWrapper_setIndic __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_setIndic
#define __pyx_n_s_Bin1D_locals_BinWrapper_width __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_width
#define __pyx_n_s_Bin1D_locals_BinWrapper_xEdge __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_xEdge
#define __pyx_n_s_Bin1D_locals_BinWrapper_xMax __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_xMax
#define __pyx_n_s_Bin1D_locals_BinWrapper_xMid __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_xMid
#define __pyx_n_s_Bin1D_locals_BinWrapper_xMin __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_xMin
#define __pyx_n_s_Bin1D_locals_BinWrapper_xWidth __pyx_mstate_global->__pyx_n_s_Bin1D_locals_BinWrapper_xWidth
#define __pyx_n_s_Bin2D_locals_BinWrapper __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper
#define __pyx_n_s_Bin2D_locals_BinWrapper___init __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper___init
#define __pyx_n_s_Bin2D_locals_BinWrapper_attach __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_attach
#define __pyx_n_s_Bin2D_locals_BinWrapper_dArea __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_dArea
#define __pyx_n_s_Bin2D_locals_BinWrapper_dVol __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_dVol
#define __pyx_n_s_Bin2D_locals_BinWrapper_edge __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_edge
#define __pyx_n_s_Bin2D_locals_BinWrapper_index __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_index
#define __pyx_n_s_Bin2D_locals_BinWrapper_isMasked __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_isMasked
#define __pyx_n_s_Bin2D_locals_BinWrapper_max __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_max
#define __pyx_n_s_Bin2D_locals_BinWrapper_mid __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_mid
#define __pyx_n_s_Bin2D_locals_BinWrapper_min __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_min
#define __pyx_n_s_Bin2D_locals_BinWrapper_setBinni __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_setBinni
#define __pyx_n_s_Bin2D_locals_BinWrapper_setIndic __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_setIndic
#define __pyx_n_s_Bin2D_locals_BinWrapper_width __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_width
#define __pyx_n_s_Bin2D_locals_BinWrapper_xEdge __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_xEdge
#define __pyx_n_s_Bin2D_locals_BinWrapper_xMax __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_xMax
#define __pyx_n_s_Bin2D_locals_BinWrapper_xMid __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_xMid
#define __pyx_n_s_Bin2D_locals_BinWrapper_xMin __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_xMin
#define __pyx_n_s_Bin2D_locals_BinWrapper_xWidth __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_xWidth
#define __pyx_n_s_Bin2D_locals_BinWrapper_yEdge __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_yEdge
#define __pyx_n_s_Bin2D_locals_BinWrapper_yMax __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_yMax
#define __pyx_n_s_Bin2D_locals_BinWrapper_yMid __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_yMid
#define __pyx_n_s_Bin2D_locals_BinWrapper_yMin __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_yMin
#define __pyx_n_s_Bin2D_locals_BinWrapper_yWidth __pyx_mstate_global->__pyx_n_s_Bin2D_locals_BinWrapper_yWidth
#define __pyx_n_s_Bin3D_locals_BinWrapper __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper
#define __pyx_n_s_Bin3D_locals_BinWrapper___init __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper___init
#define __pyx_n_s_Bin3D_locals_BinWrapper_attach __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_attach
#define __pyx_n_s_Bin3D_locals_BinWrapper_dVol __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_dVol
#define __pyx_n_s_Bin3D_locals_BinWrapper_edge __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_edge
#define __pyx_n_s_Bin3D_locals_BinWrapper_index __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_index
#define __pyx_n_s_Bin3D_locals_BinWrapper_isMasked __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_isMasked
#define __pyx_n_s_Bin3D_locals_BinWrapper_max __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_max
#define __pyx_n_s_Bin3D_locals_BinWrapper_mid __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_mid
#define __pyx_n_s_Bin3D_locals_BinWrapper_min __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_min
#define __pyx_n_s_Bin3D_locals_BinWrapper_setBinni __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_setBinni
#define __pyx_n_s_Bin3D_locals_BinWrapper_setIndic __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_setIndic
#define __pyx_n_s_Bin3D_locals_BinWrapper_width __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_width
#define __pyx_n_s_Bin3D_locals_BinWrapper_xEdge __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_xEdge
#define __pyx_n_s_Bin3D_locals_BinWrapper_xMax __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_xMax
#define __pyx_n_s_Bin3D_locals_BinWrapper_xMid __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_xMid
#define __pyx_n_s_Bin3D_locals_BinWrapper_xMin __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_xMin
#define __pyx_n_s_Bin3D_locals_BinWrapper_xWidth __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_xWidth
#define __pyx_n_s_Bin3D_locals_BinWrapper_yEdge __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_yEdge
#define __pyx_n_s_Bin3D_locals_BinWrapper_yMax __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_yMax
#define __pyx_n_s_Bin3D_locals_BinWrapper_yMid __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_yMid
#define __pyx_n_s_Bin3D_locals_BinWrapper_yMin __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_yMin
#define __pyx_n_s_Bin3D_locals_BinWrapper_yWidth __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_yWidth
#define __pyx_n_s_Bin3D_locals_BinWrapper_zEdge __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_zEdge
#define __pyx_n_s_Bin3D_locals_BinWrapper_zMax __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_zMax
#define __pyx_n_s_Bin3D_locals_BinWrapper_zMid __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_zMid
#define __pyx_n_s_Bin3D_locals_BinWrapper_zMin __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_zMin
#define __pyx_n_s_Bin3D_locals_BinWrapper_zWidth __pyx_mstate_global->__pyx_n_s_Bin3D_locals_BinWrapper_zWidth
#define __pyx_n_s_BinWrapper __pyx_mstate_global->__pyx_n_s_BinWrapper
#define __pyx_n_s_Binned __pyx_mstate_global->__pyx_n_s_Binned
#define __pyx_n_s_BinnedEstimate1D __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D
#define __pyx_n_s_BinnedEstimate1D___init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___init1
#define __pyx_n_s_BinnedEstimate1D___init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___init2
#define __pyx_n_s_BinnedEstimate1D___init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___init3
#define __pyx_n_s_BinnedEstimate1D___init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___init4
#define __pyx_n_s_BinnedEstimate1D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___reduce_cython
#define __pyx_n_s_BinnedEstimate1D___setstate_cyth __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D___setstate_cyth
#define __pyx_n_s_BinnedEstimate1D__bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__bin
#define __pyx_n_s_BinnedEstimate1D__global_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__global_set
#define __pyx_n_s_BinnedEstimate1D__init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__init1
#define __pyx_n_s_BinnedEstimate1D__init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__init2
#define __pyx_n_s_BinnedEstimate1D__init2_locals __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__init2_locals
#define __pyx_n_s_BinnedEstimate1D__init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__init3
#define __pyx_n_s_BinnedEstimate1D__init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__init4
#define __pyx_n_s_BinnedEstimate1D__local_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__local_set
#define __pyx_n_s_BinnedEstimate1D__mknp __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__mknp
#define __pyx_n_s_BinnedEstimate1D__set_config __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D__set_config
#define __pyx_n_s_BinnedEstimate1D_areaUnderCurve __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_areaUnderCurve
#define __pyx_n_s_BinnedEstimate1D_auc __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_auc
#define __pyx_n_s_BinnedEstimate1D_bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_bin
#define __pyx_n_s_BinnedEstimate1D_binAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_binAt
#define __pyx_n_s_BinnedEstimate1D_binDim __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_binDim
#define __pyx_n_s_BinnedEstimate1D_bins __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_bins
#define __pyx_n_s_BinnedEstimate1D_clone __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_clone
#define __pyx_n_s_BinnedEstimate1D_covarianceMatri __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_covarianceMatri
#define __pyx_n_s_BinnedEstimate1D_deserializeCont __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_deserializeCont
#define __pyx_n_s_BinnedEstimate1D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_deserializeMeta
#define __pyx_n_s_BinnedEstimate1D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_divideBy
#define __pyx_n_s_BinnedEstimate1D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_indexAt
#define __pyx_n_s_BinnedEstimate1D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_isMasked
#define __pyx_n_s_BinnedEstimate1D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_isVisible
#define __pyx_n_s_BinnedEstimate1D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_lengthContent
#define __pyx_n_s_BinnedEstimate1D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_lengthMeta
#define __pyx_n_s_BinnedEstimate1D_localToGlobalIn __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_localToGlobalIn
#define __pyx_n_s_BinnedEstimate1D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_maskBin
#define __pyx_n_s_BinnedEstimate1D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_maskBinAt
#define __pyx_n_s_BinnedEstimate1D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_maskBins
#define __pyx_n_s_BinnedEstimate1D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_maskSlice
#define __pyx_n_s_BinnedEstimate1D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_maskedBins
#define __pyx_n_s_BinnedEstimate1D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_mkScatter
#define __pyx_n_s_BinnedEstimate1D_numBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_numBins
#define __pyx_n_s_BinnedEstimate1D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_numBinsX
#define __pyx_n_s_BinnedEstimate1D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_rebinX
#define __pyx_n_s_BinnedEstimate1D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_rebinXBy
#define __pyx_n_s_BinnedEstimate1D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_rebinXTo
#define __pyx_n_s_BinnedEstimate1D_reset __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_reset
#define __pyx_n_s_BinnedEstimate1D_scale __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_scale
#define __pyx_n_s_BinnedEstimate1D_serializeConten __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_serializeConten
#define __pyx_n_s_BinnedEstimate1D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_serializeMeta
#define __pyx_n_s_BinnedEstimate1D_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_set
#define __pyx_n_s_BinnedEstimate1D_sources __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_sources
#define __pyx_n_s_BinnedEstimate1D_vals __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_vals
#define __pyx_n_s_BinnedEstimate1D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_xEdges
#define __pyx_n_s_BinnedEstimate1D_xMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_xMax
#define __pyx_n_s_BinnedEstimate1D_xMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_xMin
#define __pyx_n_s_BinnedEstimate1D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate1D_xWidths
#define __pyx_n_s_BinnedEstimate2D __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D
#define __pyx_n_s_BinnedEstimate2D___init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___init1
#define __pyx_n_s_BinnedEstimate2D___init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___init2
#define __pyx_n_s_BinnedEstimate2D___init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___init3
#define __pyx_n_s_BinnedEstimate2D___init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___init4
#define __pyx_n_s_BinnedEstimate2D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___reduce_cython
#define __pyx_n_s_BinnedEstimate2D___setstate_cyth __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D___setstate_cyth
#define __pyx_n_s_BinnedEstimate2D__bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__bin
#define __pyx_n_s_BinnedEstimate2D__global_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__global_set
#define __pyx_n_s_BinnedEstimate2D__init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__init1
#define __pyx_n_s_BinnedEstimate2D__init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__init2
#define __pyx_n_s_BinnedEstimate2D__init2_locals __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__init2_locals
#define __pyx_n_s_BinnedEstimate2D__init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__init3
#define __pyx_n_s_BinnedEstimate2D__init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__init4
#define __pyx_n_s_BinnedEstimate2D__local_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__local_set
#define __pyx_n_s_BinnedEstimate2D__mknp __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__mknp
#define __pyx_n_s_BinnedEstimate2D__set_config __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D__set_config
#define __pyx_n_s_BinnedEstimate2D_areaUnderCurve __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_areaUnderCurve
#define __pyx_n_s_BinnedEstimate2D_auc __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_auc
#define __pyx_n_s_BinnedEstimate2D_bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_bin
#define __pyx_n_s_BinnedEstimate2D_binAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_binAt
#define __pyx_n_s_BinnedEstimate2D_binDim __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_binDim
#define __pyx_n_s_BinnedEstimate2D_bins __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_bins
#define __pyx_n_s_BinnedEstimate2D_clone __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_clone
#define __pyx_n_s_BinnedEstimate2D_covarianceMatri __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_covarianceMatri
#define __pyx_n_s_BinnedEstimate2D_deserializeCont __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_deserializeCont
#define __pyx_n_s_BinnedEstimate2D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_deserializeMeta
#define __pyx_n_s_BinnedEstimate2D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_divideBy
#define __pyx_n_s_BinnedEstimate2D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_indexAt
#define __pyx_n_s_BinnedEstimate2D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_isMasked
#define __pyx_n_s_BinnedEstimate2D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_isVisible
#define __pyx_n_s_BinnedEstimate2D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_lengthContent
#define __pyx_n_s_BinnedEstimate2D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_lengthMeta
#define __pyx_n_s_BinnedEstimate2D_localToGlobalIn __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_localToGlobalIn
#define __pyx_n_s_BinnedEstimate2D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_maskBin
#define __pyx_n_s_BinnedEstimate2D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_maskBinAt
#define __pyx_n_s_BinnedEstimate2D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_maskBins
#define __pyx_n_s_BinnedEstimate2D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_maskSlice
#define __pyx_n_s_BinnedEstimate2D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_maskedBins
#define __pyx_n_s_BinnedEstimate2D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_mkScatter
#define __pyx_n_s_BinnedEstimate2D_numBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_numBins
#define __pyx_n_s_BinnedEstimate2D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_numBinsX
#define __pyx_n_s_BinnedEstimate2D_numBinsY __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_numBinsY
#define __pyx_n_s_BinnedEstimate2D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinX
#define __pyx_n_s_BinnedEstimate2D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinXBy
#define __pyx_n_s_BinnedEstimate2D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinXTo
#define __pyx_n_s_BinnedEstimate2D_rebinY __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinY
#define __pyx_n_s_BinnedEstimate2D_rebinYBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinYBy
#define __pyx_n_s_BinnedEstimate2D_rebinYTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_rebinYTo
#define __pyx_n_s_BinnedEstimate2D_reset __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_reset
#define __pyx_n_s_BinnedEstimate2D_scale __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_scale
#define __pyx_n_s_BinnedEstimate2D_serializeConten __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_serializeConten
#define __pyx_n_s_BinnedEstimate2D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_serializeMeta
#define __pyx_n_s_BinnedEstimate2D_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_set
#define __pyx_n_s_BinnedEstimate2D_sources __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_sources
#define __pyx_n_s_BinnedEstimate2D_vals __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_vals
#define __pyx_n_s_BinnedEstimate2D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_xEdges
#define __pyx_n_s_BinnedEstimate2D_xMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_xMax
#define __pyx_n_s_BinnedEstimate2D_xMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_xMin
#define __pyx_n_s_BinnedEstimate2D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_xWidths
#define __pyx_n_s_BinnedEstimate2D_yEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_yEdges
#define __pyx_n_s_BinnedEstimate2D_yMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_yMax
#define __pyx_n_s_BinnedEstimate2D_yMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_yMin
#define __pyx_n_s_BinnedEstimate2D_yWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate2D_yWidths
#define __pyx_n_s_BinnedEstimate3D __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D
#define __pyx_n_s_BinnedEstimate3D___init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___init1
#define __pyx_n_s_BinnedEstimate3D___init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___init2
#define __pyx_n_s_BinnedEstimate3D___init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___init3
#define __pyx_n_s_BinnedEstimate3D___init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___init4
#define __pyx_n_s_BinnedEstimate3D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___reduce_cython
#define __pyx_n_s_BinnedEstimate3D___setstate_cyth __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D___setstate_cyth
#define __pyx_n_s_BinnedEstimate3D__bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__bin
#define __pyx_n_s_BinnedEstimate3D__global_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__global_set
#define __pyx_n_s_BinnedEstimate3D__init1 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__init1
#define __pyx_n_s_BinnedEstimate3D__init2 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__init2
#define __pyx_n_s_BinnedEstimate3D__init2_locals __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__init2_locals
#define __pyx_n_s_BinnedEstimate3D__init3 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__init3
#define __pyx_n_s_BinnedEstimate3D__init4 __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__init4
#define __pyx_n_s_BinnedEstimate3D__local_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__local_set
#define __pyx_n_s_BinnedEstimate3D__mknp __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__mknp
#define __pyx_n_s_BinnedEstimate3D__set_config __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D__set_config
#define __pyx_n_s_BinnedEstimate3D_areaUnderCurve __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_areaUnderCurve
#define __pyx_n_s_BinnedEstimate3D_auc __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_auc
#define __pyx_n_s_BinnedEstimate3D_bin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_bin
#define __pyx_n_s_BinnedEstimate3D_binAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_binAt
#define __pyx_n_s_BinnedEstimate3D_binDim __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_binDim
#define __pyx_n_s_BinnedEstimate3D_bins __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_bins
#define __pyx_n_s_BinnedEstimate3D_clone __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_clone
#define __pyx_n_s_BinnedEstimate3D_covarianceMatri __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_covarianceMatri
#define __pyx_n_s_BinnedEstimate3D_deserializeCont __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_deserializeCont
#define __pyx_n_s_BinnedEstimate3D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_deserializeMeta
#define __pyx_n_s_BinnedEstimate3D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_divideBy
#define __pyx_n_s_BinnedEstimate3D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_indexAt
#define __pyx_n_s_BinnedEstimate3D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_isMasked
#define __pyx_n_s_BinnedEstimate3D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_isVisible
#define __pyx_n_s_BinnedEstimate3D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_lengthContent
#define __pyx_n_s_BinnedEstimate3D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_lengthMeta
#define __pyx_n_s_BinnedEstimate3D_localToGlobalIn __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_localToGlobalIn
#define __pyx_n_s_BinnedEstimate3D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_maskBin
#define __pyx_n_s_BinnedEstimate3D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_maskBinAt
#define __pyx_n_s_BinnedEstimate3D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_maskBins
#define __pyx_n_s_BinnedEstimate3D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_maskSlice
#define __pyx_n_s_BinnedEstimate3D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_maskedBins
#define __pyx_n_s_BinnedEstimate3D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_mkScatter
#define __pyx_n_s_BinnedEstimate3D_numBins __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_numBins
#define __pyx_n_s_BinnedEstimate3D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_numBinsX
#define __pyx_n_s_BinnedEstimate3D_numBinsY __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_numBinsY
#define __pyx_n_s_BinnedEstimate3D_numBinsZ __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_numBinsZ
#define __pyx_n_s_BinnedEstimate3D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinX
#define __pyx_n_s_BinnedEstimate3D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinXBy
#define __pyx_n_s_BinnedEstimate3D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinXTo
#define __pyx_n_s_BinnedEstimate3D_rebinY __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinY
#define __pyx_n_s_BinnedEstimate3D_rebinYBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinYBy
#define __pyx_n_s_BinnedEstimate3D_rebinYTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinYTo
#define __pyx_n_s_BinnedEstimate3D_rebinZ __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinZ
#define __pyx_n_s_BinnedEstimate3D_rebinZBy __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinZBy
#define __pyx_n_s_BinnedEstimate3D_rebinZTo __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_rebinZTo
#define __pyx_n_s_BinnedEstimate3D_reset __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_reset
#define __pyx_n_s_BinnedEstimate3D_scale __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_scale
#define __pyx_n_s_BinnedEstimate3D_serializeConten __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_serializeConten
#define __pyx_n_s_BinnedEstimate3D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_serializeMeta
#define __pyx_n_s_BinnedEstimate3D_set __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_set
#define __pyx_n_s_BinnedEstimate3D_sources __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_sources
#define __pyx_n_s_BinnedEstimate3D_vals __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_vals
#define __pyx_n_s_BinnedEstimate3D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_xEdges
#define __pyx_n_s_BinnedEstimate3D_xMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_xMax
#define __pyx_n_s_BinnedEstimate3D_xMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_xMin
#define __pyx_n_s_BinnedEstimate3D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_xWidths
#define __pyx_n_s_BinnedEstimate3D_yEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_yEdges
#define __pyx_n_s_BinnedEstimate3D_yMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_yMax
#define __pyx_n_s_BinnedEstimate3D_yMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_yMin
#define __pyx_n_s_BinnedEstimate3D_yWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_yWidths
#define __pyx_n_s_BinnedEstimate3D_zEdges __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_zEdges
#define __pyx_n_s_BinnedEstimate3D_zMax __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_zMax
#define __pyx_n_s_BinnedEstimate3D_zMin __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_zMin
#define __pyx_n_s_BinnedEstimate3D_zWidths __pyx_mstate_global->__pyx_n_s_BinnedEstimate3D_zWidths
#define __pyx_n_s_BinnedHisto1D __pyx_mstate_global->__pyx_n_s_BinnedHisto1D
#define __pyx_n_s_BinnedHisto1D___init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___init1
#define __pyx_n_s_BinnedHisto1D___init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___init2
#define __pyx_n_s_BinnedHisto1D___init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___init3
#define __pyx_n_s_BinnedHisto1D___init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___init4
#define __pyx_n_s_BinnedHisto1D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___reduce_cython
#define __pyx_n_s_BinnedHisto1D___setstate_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto1D___setstate_cython
#define __pyx_n_s_BinnedHisto1D__bin __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__bin
#define __pyx_n_s_BinnedHisto1D__global_set __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__global_set
#define __pyx_n_s_BinnedHisto1D__init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__init1
#define __pyx_n_s_BinnedHisto1D__init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__init2
#define __pyx_n_s_BinnedHisto1D__init2_locals_gen __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__init2_locals_gen
#define __pyx_n_s_BinnedHisto1D__init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__init3
#define __pyx_n_s_BinnedHisto1D__init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__init4
#define __pyx_n_s_BinnedHisto1D__local_set __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__local_set
#define __pyx_n_s_BinnedHisto1D__mknp __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__mknp
#define __pyx_n_s_BinnedHisto1D__set_config __pyx_mstate_global->__pyx_n_s_BinnedHisto1D__set_config
#define __pyx_n_s_BinnedHisto1D_bin __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_bin
#define __pyx_n_s_BinnedHisto1D_binAt __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_binAt
#define __pyx_n_s_BinnedHisto1D_binDim __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_binDim
#define __pyx_n_s_BinnedHisto1D_bins __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_bins
#define __pyx_n_s_BinnedHisto1D_clone __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_clone
#define __pyx_n_s_BinnedHisto1D_dVol __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_dVol
#define __pyx_n_s_BinnedHisto1D_density __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_density
#define __pyx_n_s_BinnedHisto1D_densityError __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_densityError
#define __pyx_n_s_BinnedHisto1D_densitySum __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_densitySum
#define __pyx_n_s_BinnedHisto1D_deserializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_deserializeContent
#define __pyx_n_s_BinnedHisto1D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_deserializeMeta
#define __pyx_n_s_BinnedHisto1D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_divideBy
#define __pyx_n_s_BinnedHisto1D_effNumEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_effNumEntries
#define __pyx_n_s_BinnedHisto1D_fill __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_fill
#define __pyx_n_s_BinnedHisto1D_fillDim __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_fillDim
#define __pyx_n_s_BinnedHisto1D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_indexAt
#define __pyx_n_s_BinnedHisto1D_integral __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_integral
#define __pyx_n_s_BinnedHisto1D_integralError __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_integralError
#define __pyx_n_s_BinnedHisto1D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_isMasked
#define __pyx_n_s_BinnedHisto1D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_isVisible
#define __pyx_n_s_BinnedHisto1D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_lengthContent
#define __pyx_n_s_BinnedHisto1D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_lengthMeta
#define __pyx_n_s_BinnedHisto1D_localToGlobalIndex __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_localToGlobalIndex
#define __pyx_n_s_BinnedHisto1D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maskBin
#define __pyx_n_s_BinnedHisto1D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maskBinAt
#define __pyx_n_s_BinnedHisto1D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maskBins
#define __pyx_n_s_BinnedHisto1D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maskSlice
#define __pyx_n_s_BinnedHisto1D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maskedBins
#define __pyx_n_s_BinnedHisto1D_maxDensity __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_maxDensity
#define __pyx_n_s_BinnedHisto1D_mkEstimate __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_mkEstimate
#define __pyx_n_s_BinnedHisto1D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_mkScatter
#define __pyx_n_s_BinnedHisto1D_normalize __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_normalize
#define __pyx_n_s_BinnedHisto1D_numBins __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_numBins
#define __pyx_n_s_BinnedHisto1D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_numBinsX
#define __pyx_n_s_BinnedHisto1D_numEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_numEntries
#define __pyx_n_s_BinnedHisto1D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_rebinX
#define __pyx_n_s_BinnedHisto1D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_rebinXBy
#define __pyx_n_s_BinnedHisto1D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_rebinXTo
#define __pyx_n_s_BinnedHisto1D_reset __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_reset
#define __pyx_n_s_BinnedHisto1D_scaleW __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_scaleW
#define __pyx_n_s_BinnedHisto1D_serializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_serializeContent
#define __pyx_n_s_BinnedHisto1D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_serializeMeta
#define __pyx_n_s_BinnedHisto1D_set __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_set
#define __pyx_n_s_BinnedHisto1D_sumW __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_sumW
#define __pyx_n_s_BinnedHisto1D_sumW2 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_sumW2
#define __pyx_n_s_BinnedHisto1D_sumWA __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_sumWA
#define __pyx_n_s_BinnedHisto1D_sumWA2 __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_sumWA2
#define __pyx_n_s_BinnedHisto1D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xEdges
#define __pyx_n_s_BinnedHisto1D_xMax __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xMax
#define __pyx_n_s_BinnedHisto1D_xMean __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xMean
#define __pyx_n_s_BinnedHisto1D_xMin __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xMin
#define __pyx_n_s_BinnedHisto1D_xRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xRMS
#define __pyx_n_s_BinnedHisto1D_xStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xStdDev
#define __pyx_n_s_BinnedHisto1D_xStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xStdErr
#define __pyx_n_s_BinnedHisto1D_xVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xVariance
#define __pyx_n_s_BinnedHisto1D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto1D_xWidths
#define __pyx_n_s_BinnedHisto2D __pyx_mstate_global->__pyx_n_s_BinnedHisto2D
#define __pyx_n_s_BinnedHisto2D___init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___init1
#define __pyx_n_s_BinnedHisto2D___init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___init2
#define __pyx_n_s_BinnedHisto2D___init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___init3
#define __pyx_n_s_BinnedHisto2D___init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___init4
#define __pyx_n_s_BinnedHisto2D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___reduce_cython
#define __pyx_n_s_BinnedHisto2D___setstate_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto2D___setstate_cython
#define __pyx_n_s_BinnedHisto2D__bin __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__bin
#define __pyx_n_s_BinnedHisto2D__global_set __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__global_set
#define __pyx_n_s_BinnedHisto2D__init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__init1
#define __pyx_n_s_BinnedHisto2D__init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__init2
#define __pyx_n_s_BinnedHisto2D__init2_locals_gen __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__init2_locals_gen
#define __pyx_n_s_BinnedHisto2D__init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__init3
#define __pyx_n_s_BinnedHisto2D__init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__init4
#define __pyx_n_s_BinnedHisto2D__local_set __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__local_set
#define __pyx_n_s_BinnedHisto2D__mknp __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__mknp
#define __pyx_n_s_BinnedHisto2D__set_config __pyx_mstate_global->__pyx_n_s_BinnedHisto2D__set_config
#define __pyx_n_s_BinnedHisto2D_bin __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_bin
#define __pyx_n_s_BinnedHisto2D_binAt __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_binAt
#define __pyx_n_s_BinnedHisto2D_binDim __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_binDim
#define __pyx_n_s_BinnedHisto2D_bins __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_bins
#define __pyx_n_s_BinnedHisto2D_clone __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_clone
#define __pyx_n_s_BinnedHisto2D_dVol __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_dVol
#define __pyx_n_s_BinnedHisto2D_density __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_density
#define __pyx_n_s_BinnedHisto2D_densityError __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_densityError
#define __pyx_n_s_BinnedHisto2D_densitySum __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_densitySum
#define __pyx_n_s_BinnedHisto2D_deserializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_deserializeContent
#define __pyx_n_s_BinnedHisto2D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_deserializeMeta
#define __pyx_n_s_BinnedHisto2D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_divideBy
#define __pyx_n_s_BinnedHisto2D_effNumEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_effNumEntries
#define __pyx_n_s_BinnedHisto2D_fill __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_fill
#define __pyx_n_s_BinnedHisto2D_fillDim __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_fillDim
#define __pyx_n_s_BinnedHisto2D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_indexAt
#define __pyx_n_s_BinnedHisto2D_integral __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_integral
#define __pyx_n_s_BinnedHisto2D_integralError __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_integralError
#define __pyx_n_s_BinnedHisto2D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_isMasked
#define __pyx_n_s_BinnedHisto2D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_isVisible
#define __pyx_n_s_BinnedHisto2D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_lengthContent
#define __pyx_n_s_BinnedHisto2D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_lengthMeta
#define __pyx_n_s_BinnedHisto2D_localToGlobalIndex __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_localToGlobalIndex
#define __pyx_n_s_BinnedHisto2D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maskBin
#define __pyx_n_s_BinnedHisto2D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maskBinAt
#define __pyx_n_s_BinnedHisto2D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maskBins
#define __pyx_n_s_BinnedHisto2D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maskSlice
#define __pyx_n_s_BinnedHisto2D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maskedBins
#define __pyx_n_s_BinnedHisto2D_maxDensity __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_maxDensity
#define __pyx_n_s_BinnedHisto2D_mkEstimate __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_mkEstimate
#define __pyx_n_s_BinnedHisto2D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_mkScatter
#define __pyx_n_s_BinnedHisto2D_normalize __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_normalize
#define __pyx_n_s_BinnedHisto2D_numBins __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_numBins
#define __pyx_n_s_BinnedHisto2D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_numBinsX
#define __pyx_n_s_BinnedHisto2D_numBinsY __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_numBinsY
#define __pyx_n_s_BinnedHisto2D_numEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_numEntries
#define __pyx_n_s_BinnedHisto2D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinX
#define __pyx_n_s_BinnedHisto2D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinXBy
#define __pyx_n_s_BinnedHisto2D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinXTo
#define __pyx_n_s_BinnedHisto2D_rebinY __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinY
#define __pyx_n_s_BinnedHisto2D_rebinYBy __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinYBy
#define __pyx_n_s_BinnedHisto2D_rebinYTo __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_rebinYTo
#define __pyx_n_s_BinnedHisto2D_reset __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_reset
#define __pyx_n_s_BinnedHisto2D_scaleW __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_scaleW
#define __pyx_n_s_BinnedHisto2D_serializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_serializeContent
#define __pyx_n_s_BinnedHisto2D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_serializeMeta
#define __pyx_n_s_BinnedHisto2D_set __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_set
#define __pyx_n_s_BinnedHisto2D_sumW __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_sumW
#define __pyx_n_s_BinnedHisto2D_sumW2 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_sumW2
#define __pyx_n_s_BinnedHisto2D_sumWA __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_sumWA
#define __pyx_n_s_BinnedHisto2D_sumWA2 __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_sumWA2
#define __pyx_n_s_BinnedHisto2D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xEdges
#define __pyx_n_s_BinnedHisto2D_xMax __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xMax
#define __pyx_n_s_BinnedHisto2D_xMean __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xMean
#define __pyx_n_s_BinnedHisto2D_xMin __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xMin
#define __pyx_n_s_BinnedHisto2D_xRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xRMS
#define __pyx_n_s_BinnedHisto2D_xStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xStdDev
#define __pyx_n_s_BinnedHisto2D_xStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xStdErr
#define __pyx_n_s_BinnedHisto2D_xVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xVariance
#define __pyx_n_s_BinnedHisto2D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_xWidths
#define __pyx_n_s_BinnedHisto2D_yEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yEdges
#define __pyx_n_s_BinnedHisto2D_yMax __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yMax
#define __pyx_n_s_BinnedHisto2D_yMean __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yMean
#define __pyx_n_s_BinnedHisto2D_yMin __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yMin
#define __pyx_n_s_BinnedHisto2D_yRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yRMS
#define __pyx_n_s_BinnedHisto2D_yStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yStdDev
#define __pyx_n_s_BinnedHisto2D_yStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yStdErr
#define __pyx_n_s_BinnedHisto2D_yVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yVariance
#define __pyx_n_s_BinnedHisto2D_yWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto2D_yWidths
#define __pyx_n_s_BinnedHisto3D __pyx_mstate_global->__pyx_n_s_BinnedHisto3D
#define __pyx_n_s_BinnedHisto3D___init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___init1
#define __pyx_n_s_BinnedHisto3D___init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___init2
#define __pyx_n_s_BinnedHisto3D___init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___init3
#define __pyx_n_s_BinnedHisto3D___init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___init4
#define __pyx_n_s_BinnedHisto3D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___reduce_cython
#define __pyx_n_s_BinnedHisto3D___setstate_cython __pyx_mstate_global->__pyx_n_s_BinnedHisto3D___setstate_cython
#define __pyx_n_s_BinnedHisto3D__bin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__bin
#define __pyx_n_s_BinnedHisto3D__global_set __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__global_set
#define __pyx_n_s_BinnedHisto3D__init1 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__init1
#define __pyx_n_s_BinnedHisto3D__init2 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__init2
#define __pyx_n_s_BinnedHisto3D__init2_locals_gen __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__init2_locals_gen
#define __pyx_n_s_BinnedHisto3D__init3 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__init3
#define __pyx_n_s_BinnedHisto3D__init4 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__init4
#define __pyx_n_s_BinnedHisto3D__local_set __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__local_set
#define __pyx_n_s_BinnedHisto3D__mknp __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__mknp
#define __pyx_n_s_BinnedHisto3D__set_config __pyx_mstate_global->__pyx_n_s_BinnedHisto3D__set_config
#define __pyx_n_s_BinnedHisto3D_bin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_bin
#define __pyx_n_s_BinnedHisto3D_binAt __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_binAt
#define __pyx_n_s_BinnedHisto3D_binDim __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_binDim
#define __pyx_n_s_BinnedHisto3D_bins __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_bins
#define __pyx_n_s_BinnedHisto3D_clone __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_clone
#define __pyx_n_s_BinnedHisto3D_dVol __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_dVol
#define __pyx_n_s_BinnedHisto3D_density __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_density
#define __pyx_n_s_BinnedHisto3D_densityError __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_densityError
#define __pyx_n_s_BinnedHisto3D_densitySum __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_densitySum
#define __pyx_n_s_BinnedHisto3D_deserializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_deserializeContent
#define __pyx_n_s_BinnedHisto3D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_deserializeMeta
#define __pyx_n_s_BinnedHisto3D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_divideBy
#define __pyx_n_s_BinnedHisto3D_effNumEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_effNumEntries
#define __pyx_n_s_BinnedHisto3D_fill __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_fill
#define __pyx_n_s_BinnedHisto3D_fillDim __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_fillDim
#define __pyx_n_s_BinnedHisto3D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_indexAt
#define __pyx_n_s_BinnedHisto3D_integral __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_integral
#define __pyx_n_s_BinnedHisto3D_integralError __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_integralError
#define __pyx_n_s_BinnedHisto3D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_isMasked
#define __pyx_n_s_BinnedHisto3D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_isVisible
#define __pyx_n_s_BinnedHisto3D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_lengthContent
#define __pyx_n_s_BinnedHisto3D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_lengthMeta
#define __pyx_n_s_BinnedHisto3D_localToGlobalIndex __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_localToGlobalIndex
#define __pyx_n_s_BinnedHisto3D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maskBin
#define __pyx_n_s_BinnedHisto3D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maskBinAt
#define __pyx_n_s_BinnedHisto3D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maskBins
#define __pyx_n_s_BinnedHisto3D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maskSlice
#define __pyx_n_s_BinnedHisto3D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maskedBins
#define __pyx_n_s_BinnedHisto3D_maxDensity __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_maxDensity
#define __pyx_n_s_BinnedHisto3D_mkEstimate __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_mkEstimate
#define __pyx_n_s_BinnedHisto3D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_mkScatter
#define __pyx_n_s_BinnedHisto3D_normalize __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_normalize
#define __pyx_n_s_BinnedHisto3D_numBins __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_numBins
#define __pyx_n_s_BinnedHisto3D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_numBinsX
#define __pyx_n_s_BinnedHisto3D_numBinsY __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_numBinsY
#define __pyx_n_s_BinnedHisto3D_numBinsZ __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_numBinsZ
#define __pyx_n_s_BinnedHisto3D_numEntries __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_numEntries
#define __pyx_n_s_BinnedHisto3D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinX
#define __pyx_n_s_BinnedHisto3D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinXBy
#define __pyx_n_s_BinnedHisto3D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinXTo
#define __pyx_n_s_BinnedHisto3D_rebinY __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinY
#define __pyx_n_s_BinnedHisto3D_rebinYBy __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinYBy
#define __pyx_n_s_BinnedHisto3D_rebinYTo __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinYTo
#define __pyx_n_s_BinnedHisto3D_rebinZ __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinZ
#define __pyx_n_s_BinnedHisto3D_rebinZBy __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinZBy
#define __pyx_n_s_BinnedHisto3D_rebinZTo __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_rebinZTo
#define __pyx_n_s_BinnedHisto3D_reset __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_reset
#define __pyx_n_s_BinnedHisto3D_scaleW __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_scaleW
#define __pyx_n_s_BinnedHisto3D_serializeContent __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_serializeContent
#define __pyx_n_s_BinnedHisto3D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_serializeMeta
#define __pyx_n_s_BinnedHisto3D_set __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_set
#define __pyx_n_s_BinnedHisto3D_sumW __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_sumW
#define __pyx_n_s_BinnedHisto3D_sumW2 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_sumW2
#define __pyx_n_s_BinnedHisto3D_sumWA __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_sumWA
#define __pyx_n_s_BinnedHisto3D_sumWA2 __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_sumWA2
#define __pyx_n_s_BinnedHisto3D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xEdges
#define __pyx_n_s_BinnedHisto3D_xMax __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xMax
#define __pyx_n_s_BinnedHisto3D_xMean __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xMean
#define __pyx_n_s_BinnedHisto3D_xMin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xMin
#define __pyx_n_s_BinnedHisto3D_xRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xRMS
#define __pyx_n_s_BinnedHisto3D_xStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xStdDev
#define __pyx_n_s_BinnedHisto3D_xStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xStdErr
#define __pyx_n_s_BinnedHisto3D_xVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xVariance
#define __pyx_n_s_BinnedHisto3D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_xWidths
#define __pyx_n_s_BinnedHisto3D_yEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yEdges
#define __pyx_n_s_BinnedHisto3D_yMax __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yMax
#define __pyx_n_s_BinnedHisto3D_yMean __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yMean
#define __pyx_n_s_BinnedHisto3D_yMin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yMin
#define __pyx_n_s_BinnedHisto3D_yRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yRMS
#define __pyx_n_s_BinnedHisto3D_yStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yStdDev
#define __pyx_n_s_BinnedHisto3D_yStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yStdErr
#define __pyx_n_s_BinnedHisto3D_yVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yVariance
#define __pyx_n_s_BinnedHisto3D_yWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_yWidths
#define __pyx_n_s_BinnedHisto3D_zEdges __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zEdges
#define __pyx_n_s_BinnedHisto3D_zMax __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zMax
#define __pyx_n_s_BinnedHisto3D_zMean __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zMean
#define __pyx_n_s_BinnedHisto3D_zMin __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zMin
#define __pyx_n_s_BinnedHisto3D_zRMS __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zRMS
#define __pyx_n_s_BinnedHisto3D_zStdDev __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zStdDev
#define __pyx_n_s_BinnedHisto3D_zStdErr __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zStdErr
#define __pyx_n_s_BinnedHisto3D_zVariance __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zVariance
#define __pyx_n_s_BinnedHisto3D_zWidths __pyx_mstate_global->__pyx_n_s_BinnedHisto3D_zWidths
#define __pyx_n_s_BinnedProfile1D __pyx_mstate_global->__pyx_n_s_BinnedProfile1D
#define __pyx_n_s_BinnedProfile1D___init1 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___init1
#define __pyx_n_s_BinnedProfile1D___init2 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___init2
#define __pyx_n_s_BinnedProfile1D___init3 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___init3
#define __pyx_n_s_BinnedProfile1D___init4 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___init4
#define __pyx_n_s_BinnedProfile1D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___reduce_cython
#define __pyx_n_s_BinnedProfile1D___setstate_cytho __pyx_mstate_global->__pyx_n_s_BinnedProfile1D___setstate_cytho
#define __pyx_n_s_BinnedProfile1D__bin __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__bin
#define __pyx_n_s_BinnedProfile1D__global_set __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__global_set
#define __pyx_n_s_BinnedProfile1D__init1 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__init1
#define __pyx_n_s_BinnedProfile1D__init2 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__init2
#define __pyx_n_s_BinnedProfile1D__init2_locals_g __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__init2_locals_g
#define __pyx_n_s_BinnedProfile1D__init3 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__init3
#define __pyx_n_s_BinnedProfile1D__init4 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__init4
#define __pyx_n_s_BinnedProfile1D__local_set __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__local_set
#define __pyx_n_s_BinnedProfile1D__mknp __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__mknp
#define __pyx_n_s_BinnedProfile1D__set_config __pyx_mstate_global->__pyx_n_s_BinnedProfile1D__set_config
#define __pyx_n_s_BinnedProfile1D_bin __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_bin
#define __pyx_n_s_BinnedProfile1D_binAt __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_binAt
#define __pyx_n_s_BinnedProfile1D_binDim __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_binDim
#define __pyx_n_s_BinnedProfile1D_bins __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_bins
#define __pyx_n_s_BinnedProfile1D_clone __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_clone
#define __pyx_n_s_BinnedProfile1D_dVol __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_dVol
#define __pyx_n_s_BinnedProfile1D_density __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_density
#define __pyx_n_s_BinnedProfile1D_densityError __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_densityError
#define __pyx_n_s_BinnedProfile1D_densitySum __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_densitySum
#define __pyx_n_s_BinnedProfile1D_deserializeConte __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_deserializeConte
#define __pyx_n_s_BinnedProfile1D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_deserializeMeta
#define __pyx_n_s_BinnedProfile1D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_divideBy
#define __pyx_n_s_BinnedProfile1D_effNumEntries __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_effNumEntries
#define __pyx_n_s_BinnedProfile1D_fill __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_fill
#define __pyx_n_s_BinnedProfile1D_fillDim __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_fillDim
#define __pyx_n_s_BinnedProfile1D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_indexAt
#define __pyx_n_s_BinnedProfile1D_integral __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_integral
#define __pyx_n_s_BinnedProfile1D_integralError __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_integralError
#define __pyx_n_s_BinnedProfile1D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_isMasked
#define __pyx_n_s_BinnedProfile1D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_isVisible
#define __pyx_n_s_BinnedProfile1D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_lengthContent
#define __pyx_n_s_BinnedProfile1D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_lengthMeta
#define __pyx_n_s_BinnedProfile1D_localToGlobalInd __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_localToGlobalInd
#define __pyx_n_s_BinnedProfile1D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maskBin
#define __pyx_n_s_BinnedProfile1D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maskBinAt
#define __pyx_n_s_BinnedProfile1D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maskBins
#define __pyx_n_s_BinnedProfile1D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maskSlice
#define __pyx_n_s_BinnedProfile1D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maskedBins
#define __pyx_n_s_BinnedProfile1D_maxDensity __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_maxDensity
#define __pyx_n_s_BinnedProfile1D_mkEstimate __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_mkEstimate
#define __pyx_n_s_BinnedProfile1D_mkHisto __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_mkHisto
#define __pyx_n_s_BinnedProfile1D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_mkScatter
#define __pyx_n_s_BinnedProfile1D_normalize __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_normalize
#define __pyx_n_s_BinnedProfile1D_numBins __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_numBins
#define __pyx_n_s_BinnedProfile1D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_numBinsX
#define __pyx_n_s_BinnedProfile1D_numEntries __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_numEntries
#define __pyx_n_s_BinnedProfile1D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_rebinX
#define __pyx_n_s_BinnedProfile1D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_rebinXBy
#define __pyx_n_s_BinnedProfile1D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_rebinXTo
#define __pyx_n_s_BinnedProfile1D_reset __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_reset
#define __pyx_n_s_BinnedProfile1D_scaleW __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_scaleW
#define __pyx_n_s_BinnedProfile1D_serializeContent __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_serializeContent
#define __pyx_n_s_BinnedProfile1D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_serializeMeta
#define __pyx_n_s_BinnedProfile1D_set __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_set
#define __pyx_n_s_BinnedProfile1D_sumW __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_sumW
#define __pyx_n_s_BinnedProfile1D_sumW2 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_sumW2
#define __pyx_n_s_BinnedProfile1D_sumWA __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_sumWA
#define __pyx_n_s_BinnedProfile1D_sumWA2 __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_sumWA2
#define __pyx_n_s_BinnedProfile1D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xEdges
#define __pyx_n_s_BinnedProfile1D_xMax __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xMax
#define __pyx_n_s_BinnedProfile1D_xMean __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xMean
#define __pyx_n_s_BinnedProfile1D_xMin __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xMin
#define __pyx_n_s_BinnedProfile1D_xRMS __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xRMS
#define __pyx_n_s_BinnedProfile1D_xStdDev __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xStdDev
#define __pyx_n_s_BinnedProfile1D_xStdErr __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xStdErr
#define __pyx_n_s_BinnedProfile1D_xVariance __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xVariance
#define __pyx_n_s_BinnedProfile1D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedProfile1D_xWidths
#define __pyx_n_s_BinnedProfile2D __pyx_mstate_global->__pyx_n_s_BinnedProfile2D
#define __pyx_n_s_BinnedProfile2D___init1 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___init1
#define __pyx_n_s_BinnedProfile2D___init2 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___init2
#define __pyx_n_s_BinnedProfile2D___init3 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___init3
#define __pyx_n_s_BinnedProfile2D___init4 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___init4
#define __pyx_n_s_BinnedProfile2D___reduce_cython __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___reduce_cython
#define __pyx_n_s_BinnedProfile2D___setstate_cytho __pyx_mstate_global->__pyx_n_s_BinnedProfile2D___setstate_cytho
#define __pyx_n_s_BinnedProfile2D__bin __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__bin
#define __pyx_n_s_BinnedProfile2D__global_set __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__global_set
#define __pyx_n_s_BinnedProfile2D__init1 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__init1
#define __pyx_n_s_BinnedProfile2D__init2 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__init2
#define __pyx_n_s_BinnedProfile2D__init2_locals_g __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__init2_locals_g
#define __pyx_n_s_BinnedProfile2D__init3 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__init3
#define __pyx_n_s_BinnedProfile2D__init4 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__init4
#define __pyx_n_s_BinnedProfile2D__local_set __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__local_set
#define __pyx_n_s_BinnedProfile2D__mknp __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__mknp
#define __pyx_n_s_BinnedProfile2D__set_config __pyx_mstate_global->__pyx_n_s_BinnedProfile2D__set_config
#define __pyx_n_s_BinnedProfile2D_bin __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_bin
#define __pyx_n_s_BinnedProfile2D_binAt __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_binAt
#define __pyx_n_s_BinnedProfile2D_binDim __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_binDim
#define __pyx_n_s_BinnedProfile2D_bins __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_bins
#define __pyx_n_s_BinnedProfile2D_clone __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_clone
#define __pyx_n_s_BinnedProfile2D_dVol __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_dVol
#define __pyx_n_s_BinnedProfile2D_density __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_density
#define __pyx_n_s_BinnedProfile2D_densityError __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_densityError
#define __pyx_n_s_BinnedProfile2D_densitySum __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_densitySum
#define __pyx_n_s_BinnedProfile2D_deserializeConte __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_deserializeConte
#define __pyx_n_s_BinnedProfile2D_deserializeMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_deserializeMeta
#define __pyx_n_s_BinnedProfile2D_divideBy __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_divideBy
#define __pyx_n_s_BinnedProfile2D_effNumEntries __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_effNumEntries
#define __pyx_n_s_BinnedProfile2D_fill __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_fill
#define __pyx_n_s_BinnedProfile2D_fillDim __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_fillDim
#define __pyx_n_s_BinnedProfile2D_indexAt __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_indexAt
#define __pyx_n_s_BinnedProfile2D_integral __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_integral
#define __pyx_n_s_BinnedProfile2D_integralError __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_integralError
#define __pyx_n_s_BinnedProfile2D_isMasked __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_isMasked
#define __pyx_n_s_BinnedProfile2D_isVisible __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_isVisible
#define __pyx_n_s_BinnedProfile2D_lengthContent __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_lengthContent
#define __pyx_n_s_BinnedProfile2D_lengthMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_lengthMeta
#define __pyx_n_s_BinnedProfile2D_localToGlobalInd __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_localToGlobalInd
#define __pyx_n_s_BinnedProfile2D_maskBin __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maskBin
#define __pyx_n_s_BinnedProfile2D_maskBinAt __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maskBinAt
#define __pyx_n_s_BinnedProfile2D_maskBins __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maskBins
#define __pyx_n_s_BinnedProfile2D_maskSlice __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maskSlice
#define __pyx_n_s_BinnedProfile2D_maskedBins __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maskedBins
#define __pyx_n_s_BinnedProfile2D_maxDensity __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_maxDensity
#define __pyx_n_s_BinnedProfile2D_mkEstimate __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_mkEstimate
#define __pyx_n_s_BinnedProfile2D_mkHisto __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_mkHisto
#define __pyx_n_s_BinnedProfile2D_mkScatter __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_mkScatter
#define __pyx_n_s_BinnedProfile2D_normalize __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_normalize
#define __pyx_n_s_BinnedProfile2D_numBins __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_numBins
#define __pyx_n_s_BinnedProfile2D_numBinsX __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_numBinsX
#define __pyx_n_s_BinnedProfile2D_numBinsY __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_numBinsY
#define __pyx_n_s_BinnedProfile2D_numEntries __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_numEntries
#define __pyx_n_s_BinnedProfile2D_rebinX __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinX
#define __pyx_n_s_BinnedProfile2D_rebinXBy __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinXBy
#define __pyx_n_s_BinnedProfile2D_rebinXTo __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinXTo
#define __pyx_n_s_BinnedProfile2D_rebinY __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinY
#define __pyx_n_s_BinnedProfile2D_rebinYBy __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinYBy
#define __pyx_n_s_BinnedProfile2D_rebinYTo __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_rebinYTo
#define __pyx_n_s_BinnedProfile2D_reset __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_reset
#define __pyx_n_s_BinnedProfile2D_scaleW __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_scaleW
#define __pyx_n_s_BinnedProfile2D_serializeContent __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_serializeContent
#define __pyx_n_s_BinnedProfile2D_serializeMeta __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_serializeMeta
#define __pyx_n_s_BinnedProfile2D_set __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_set
#define __pyx_n_s_BinnedProfile2D_sumW __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_sumW
#define __pyx_n_s_BinnedProfile2D_sumW2 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_sumW2
#define __pyx_n_s_BinnedProfile2D_sumWA __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_sumWA
#define __pyx_n_s_BinnedProfile2D_sumWA2 __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_sumWA2
#define __pyx_n_s_BinnedProfile2D_xEdges __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xEdges
#define __pyx_n_s_BinnedProfile2D_xMax __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xMax
#define __pyx_n_s_BinnedProfile2D_xMean __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xMean
#define __pyx_n_s_BinnedProfile2D_xMin __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xMin
#define __pyx_n_s_BinnedProfile2D_xRMS __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xRMS
#define __pyx_n_s_BinnedProfile2D_xStdDev __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xStdDev
#define __pyx_n_s_BinnedProfile2D_xStdErr __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xStdErr
#define __pyx_n_s_BinnedProfile2D_xVariance __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xVariance
#define __pyx_n_s_BinnedProfile2D_xWidths __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_xWidths
#define __pyx_n_s_BinnedProfile2D_yEdges __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yEdges
#define __pyx_n_s_BinnedProfile2D_yMax __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yMax
#define __pyx_n_s_BinnedProfile2D_yMean __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yMean
#define __pyx_n_s_BinnedProfile2D_yMin __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yMin
#define __pyx_n_s_BinnedProfile2D_yRMS __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yRMS
#define __pyx_n_s_BinnedProfile2D_yStdDev __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yStdDev
#define __pyx_n_s_BinnedProfile2D_yStdErr __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yStdErr
#define __pyx_n_s_BinnedProfile2D_yVariance __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yVariance
#define __pyx_n_s_BinnedProfile2D_yWidths __pyx_mstate_global->__pyx_n_s_BinnedProfile2D_yWidths
#define __pyx_n_s_Binning __pyx_mstate_global->__pyx_n_s_Binning
#define __pyx_n_s_Binning___init __pyx_mstate_global->__pyx_n_s_Binning___init
#define __pyx_n_s_Binning_config __pyx_mstate_global->__pyx_n_s_Binning_config
#define __pyx_n_s_Binning_config_locals_genexpr __pyx_mstate_global->__pyx_n_s_Binning_config_locals_genexpr
#define __pyx_n_s_Binning_edge __pyx_mstate_global->__pyx_n_s_Binning_edge
#define __pyx_n_s_Binning_max __pyx_mstate_global->__pyx_n_s_Binning_max
#define __pyx_n_s_Binning_mid __pyx_mstate_global->__pyx_n_s_Binning_mid
#define __pyx_n_s_Binning_min __pyx_mstate_global->__pyx_n_s_Binning_min
#define __pyx_n_s_Binning_width __pyx_mstate_global->__pyx_n_s_Binning_width
#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_deserializeContent __pyx_mstate_global->__pyx_n_s_Counter_deserializeContent
#define __pyx_n_s_Counter_deserializeMeta __pyx_mstate_global->__pyx_n_s_Counter_deserializeMeta
#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_lengthContent __pyx_mstate_global->__pyx_n_s_Counter_lengthContent
#define __pyx_n_s_Counter_lengthMeta __pyx_mstate_global->__pyx_n_s_Counter_lengthMeta
#define __pyx_n_s_Counter_mkEstimate __pyx_mstate_global->__pyx_n_s_Counter_mkEstimate
#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_serializeContent __pyx_mstate_global->__pyx_n_s_Counter_serializeContent
#define __pyx_n_s_Counter_serializeMeta __pyx_mstate_global->__pyx_n_s_Counter_serializeMeta
#define __pyx_n_s_Counter_set __pyx_mstate_global->__pyx_n_s_Counter_set
#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_D __pyx_mstate_global->__pyx_n_s_D
#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_set __pyx_mstate_global->__pyx_n_s_Dbn0D_set
#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_RMS __pyx_mstate_global->__pyx_n_s_Dbn1D_RMS
#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_n_s_Dbn1D_mean __pyx_mstate_global->__pyx_n_s_Dbn1D_mean
#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_scale __pyx_mstate_global->__pyx_n_s_Dbn1D_scale
#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_set __pyx_mstate_global->__pyx_n_s_Dbn1D_set
#define __pyx_n_s_Dbn1D_stdDev __pyx_mstate_global->__pyx_n_s_Dbn1D_stdDev
#define __pyx_n_s_Dbn1D_stdErr __pyx_mstate_global->__pyx_n_s_Dbn1D_stdErr
#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_variance __pyx_mstate_global->__pyx_n_s_Dbn1D_variance
#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_RMS __pyx_mstate_global->__pyx_n_s_Dbn2D_RMS
#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_crossTerm __pyx_mstate_global->__pyx_n_s_Dbn2D_crossTerm
#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_scale __pyx_mstate_global->__pyx_n_s_Dbn2D_scale
#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_scaleY __pyx_mstate_global->__pyx_n_s_Dbn2D_scaleY
#define __pyx_n_s_Dbn2D_set __pyx_mstate_global->__pyx_n_s_Dbn2D_set
#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_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_Dbn2D_xMean __pyx_mstate_global->__pyx_n_s_Dbn2D_xMean
#define __pyx_n_s_Dbn2D_xRMS __pyx_mstate_global->__pyx_n_s_Dbn2D_xRMS
#define __pyx_n_s_Dbn2D_xStdDev __pyx_mstate_global->__pyx_n_s_Dbn2D_xStdDev
#define __pyx_n_s_Dbn2D_xStdErr __pyx_mstate_global->__pyx_n_s_Dbn2D_xStdErr
#define __pyx_n_s_Dbn2D_xVariance __pyx_mstate_global->__pyx_n_s_Dbn2D_xVariance
#define __pyx_n_s_Dbn2D_yMean __pyx_mstate_global->__pyx_n_s_Dbn2D_yMean
#define __pyx_n_s_Dbn2D_yRMS __pyx_mstate_global->__pyx_n_s_Dbn2D_yRMS
#define __pyx_n_s_Dbn2D_yStdDev __pyx_mstate_global->__pyx_n_s_Dbn2D_yStdDev
#define __pyx_n_s_Dbn2D_yStdErr __pyx_mstate_global->__pyx_n_s_Dbn2D_yStdErr
#define __pyx_n_s_Dbn2D_yVariance __pyx_mstate_global->__pyx_n_s_Dbn2D_yVariance
#define __pyx_n_s_Dbn3D __pyx_mstate_global->__pyx_n_s_Dbn3D
#define __pyx_n_s_Dbn3D_RMS __pyx_mstate_global->__pyx_n_s_Dbn3D_RMS
#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_crossTerm __pyx_mstate_global->__pyx_n_s_Dbn3D_crossTerm
#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_scale __pyx_mstate_global->__pyx_n_s_Dbn3D_scale
#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_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_set __pyx_mstate_global->__pyx_n_s_Dbn3D_set
#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_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_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_Dbn3D_xMean __pyx_mstate_global->__pyx_n_s_Dbn3D_xMean
#define __pyx_n_s_Dbn3D_xRMS __pyx_mstate_global->__pyx_n_s_Dbn3D_xRMS
#define __pyx_n_s_Dbn3D_xStdDev __pyx_mstate_global->__pyx_n_s_Dbn3D_xStdDev
#define __pyx_n_s_Dbn3D_xStdErr __pyx_mstate_global->__pyx_n_s_Dbn3D_xStdErr
#define __pyx_n_s_Dbn3D_xVariance __pyx_mstate_global->__pyx_n_s_Dbn3D_xVariance
#define __pyx_n_s_Dbn3D_yMean __pyx_mstate_global->__pyx_n_s_Dbn3D_yMean
#define __pyx_n_s_Dbn3D_yRMS __pyx_mstate_global->__pyx_n_s_Dbn3D_yRMS
#define __pyx_n_s_Dbn3D_yStdDev __pyx_mstate_global->__pyx_n_s_Dbn3D_yStdDev
#define __pyx_n_s_Dbn3D_yStdErr __pyx_mstate_global->__pyx_n_s_Dbn3D_yStdErr
#define __pyx_n_s_Dbn3D_yVariance __pyx_mstate_global->__pyx_n_s_Dbn3D_yVariance
#define __pyx_n_s_Dbn3D_zMean __pyx_mstate_global->__pyx_n_s_Dbn3D_zMean
#define __pyx_n_s_Dbn3D_zRMS __pyx_mstate_global->__pyx_n_s_Dbn3D_zRMS
#define __pyx_n_s_Dbn3D_zStdDev __pyx_mstate_global->__pyx_n_s_Dbn3D_zStdDev
#define __pyx_n_s_Dbn3D_zStdErr __pyx_mstate_global->__pyx_n_s_Dbn3D_zStdErr
#define __pyx_n_s_Dbn3D_zVariance __pyx_mstate_global->__pyx_n_s_Dbn3D_zVariance
#define __pyx_kp_s_Dynamic_ptr_cast_failed_Next __pyx_mstate_global->__pyx_kp_s_Dynamic_ptr_cast_failed_Next
#define __pyx_n_s_Estimate __pyx_mstate_global->__pyx_n_s_Estimate
#define __pyx_n_s_Estimate0D __pyx_mstate_global->__pyx_n_s_Estimate0D
#define __pyx_n_s_Estimate0D___reduce_cython __pyx_mstate_global->__pyx_n_s_Estimate0D___reduce_cython
#define __pyx_n_s_Estimate0D___setstate_cython __pyx_mstate_global->__pyx_n_s_Estimate0D___setstate_cython
#define __pyx_n_s_Estimate0D_clone __pyx_mstate_global->__pyx_n_s_Estimate0D_clone
#define __pyx_n_s_Estimate0D_deserializeContent __pyx_mstate_global->__pyx_n_s_Estimate0D_deserializeContent
#define __pyx_n_s_Estimate0D_deserializeMeta __pyx_mstate_global->__pyx_n_s_Estimate0D_deserializeMeta
#define __pyx_n_s_Estimate0D_err __pyx_mstate_global->__pyx_n_s_Estimate0D_err
#define __pyx_n_s_Estimate0D_errDown __pyx_mstate_global->__pyx_n_s_Estimate0D_errDown
#define __pyx_n_s_Estimate0D_errDownUp __pyx_mstate_global->__pyx_n_s_Estimate0D_errDownUp
#define __pyx_n_s_Estimate0D_errNeg __pyx_mstate_global->__pyx_n_s_Estimate0D_errNeg
#define __pyx_n_s_Estimate0D_errNegPos __pyx_mstate_global->__pyx_n_s_Estimate0D_errNegPos
#define __pyx_n_s_Estimate0D_errPos __pyx_mstate_global->__pyx_n_s_Estimate0D_errPos
#define __pyx_n_s_Estimate0D_errUp __pyx_mstate_global->__pyx_n_s_Estimate0D_errUp
#define __pyx_n_s_Estimate0D_hasSource __pyx_mstate_global->__pyx_n_s_Estimate0D_hasSource
#define __pyx_n_s_Estimate0D_lengthContent __pyx_mstate_global->__pyx_n_s_Estimate0D_lengthContent
#define __pyx_n_s_Estimate0D_lengthMeta __pyx_mstate_global->__pyx_n_s_Estimate0D_lengthMeta
#define __pyx_n_s_Estimate0D_mkScatter __pyx_mstate_global->__pyx_n_s_Estimate0D_mkScatter
#define __pyx_n_s_Estimate0D_numErrs __pyx_mstate_global->__pyx_n_s_Estimate0D_numErrs
#define __pyx_n_s_Estimate0D_quadSum __pyx_mstate_global->__pyx_n_s_Estimate0D_quadSum
#define __pyx_n_s_Estimate0D_quadSumNeg __pyx_mstate_global->__pyx_n_s_Estimate0D_quadSumNeg
#define __pyx_n_s_Estimate0D_quadSumPos __pyx_mstate_global->__pyx_n_s_Estimate0D_quadSumPos
#define __pyx_n_s_Estimate0D_relErr __pyx_mstate_global->__pyx_n_s_Estimate0D_relErr
#define __pyx_n_s_Estimate0D_relErrDown __pyx_mstate_global->__pyx_n_s_Estimate0D_relErrDown
#define __pyx_n_s_Estimate0D_relErrDownUp __pyx_mstate_global->__pyx_n_s_Estimate0D_relErrDownUp
#define __pyx_n_s_Estimate0D_relErrUp __pyx_mstate_global->__pyx_n_s_Estimate0D_relErrUp
#define __pyx_n_s_Estimate0D_relTotalErr __pyx_mstate_global->__pyx_n_s_Estimate0D_relTotalErr
#define __pyx_n_s_Estimate0D_relTotalErrNeg __pyx_mstate_global->__pyx_n_s_Estimate0D_relTotalErrNeg
#define __pyx_n_s_Estimate0D_relTotalErrPos __pyx_mstate_global->__pyx_n_s_Estimate0D_relTotalErrPos
#define __pyx_n_s_Estimate0D_reset __pyx_mstate_global->__pyx_n_s_Estimate0D_reset
#define __pyx_n_s_Estimate0D_rmErrs __pyx_mstate_global->__pyx_n_s_Estimate0D_rmErrs
#define __pyx_n_s_Estimate0D_rmSource __pyx_mstate_global->__pyx_n_s_Estimate0D_rmSource
#define __pyx_n_s_Estimate0D_scale __pyx_mstate_global->__pyx_n_s_Estimate0D_scale
#define __pyx_n_s_Estimate0D_serializeContent __pyx_mstate_global->__pyx_n_s_Estimate0D_serializeContent
#define __pyx_n_s_Estimate0D_serializeMeta __pyx_mstate_global->__pyx_n_s_Estimate0D_serializeMeta
#define __pyx_n_s_Estimate0D_set __pyx_mstate_global->__pyx_n_s_Estimate0D_set
#define __pyx_n_s_Estimate0D_setErr __pyx_mstate_global->__pyx_n_s_Estimate0D_setErr
#define __pyx_n_s_Estimate0D_setVal __pyx_mstate_global->__pyx_n_s_Estimate0D_setVal
#define __pyx_n_s_Estimate0D_sources __pyx_mstate_global->__pyx_n_s_Estimate0D_sources
#define __pyx_n_s_Estimate0D_totalErr __pyx_mstate_global->__pyx_n_s_Estimate0D_totalErr
#define __pyx_n_s_Estimate0D_val __pyx_mstate_global->__pyx_n_s_Estimate0D_val
#define __pyx_kp_s_Estimate0D_value_2e_s __pyx_mstate_global->__pyx_kp_s_Estimate0D_value_2e_s
#define __pyx_n_s_Estimate1D __pyx_mstate_global->__pyx_n_s_Estimate1D
#define __pyx_n_s_Estimate2D __pyx_mstate_global->__pyx_n_s_Estimate2D
#define __pyx_n_s_Estimate3D __pyx_mstate_global->__pyx_n_s_Estimate3D
#define __pyx_n_s_Estimate___reduce_cython __pyx_mstate_global->__pyx_n_s_Estimate___reduce_cython
#define __pyx_n_s_Estimate___setstate_cython __pyx_mstate_global->__pyx_n_s_Estimate___setstate_cython
#define __pyx_n_s_Estimate_copy __pyx_mstate_global->__pyx_n_s_Estimate_copy
#define __pyx_n_s_Estimate_deserializeSources __pyx_mstate_global->__pyx_n_s_Estimate_deserializeSources
#define __pyx_n_s_Estimate_err __pyx_mstate_global->__pyx_n_s_Estimate_err
#define __pyx_n_s_Estimate_errAvg __pyx_mstate_global->__pyx_n_s_Estimate_errAvg
#define __pyx_n_s_Estimate_errDown __pyx_mstate_global->__pyx_n_s_Estimate_errDown
#define __pyx_n_s_Estimate_errDownUp __pyx_mstate_global->__pyx_n_s_Estimate_errDownUp
#define __pyx_n_s_Estimate_errEnv __pyx_mstate_global->__pyx_n_s_Estimate_errEnv
#define __pyx_n_s_Estimate_errNeg __pyx_mstate_global->__pyx_n_s_Estimate_errNeg
#define __pyx_n_s_Estimate_errNegPos __pyx_mstate_global->__pyx_n_s_Estimate_errNegPos
#define __pyx_n_s_Estimate_errPos __pyx_mstate_global->__pyx_n_s_Estimate_errPos
#define __pyx_n_s_Estimate_errUp __pyx_mstate_global->__pyx_n_s_Estimate_errUp
#define __pyx_n_s_Estimate_hasSource __pyx_mstate_global->__pyx_n_s_Estimate_hasSource
#define __pyx_n_s_Estimate_numErrs __pyx_mstate_global->__pyx_n_s_Estimate_numErrs
#define __pyx_n_s_Estimate_quadSum __pyx_mstate_global->__pyx_n_s_Estimate_quadSum
#define __pyx_n_s_Estimate_quadSumAvg __pyx_mstate_global->__pyx_n_s_Estimate_quadSumAvg
#define __pyx_n_s_Estimate_quadSumEnv __pyx_mstate_global->__pyx_n_s_Estimate_quadSumEnv
#define __pyx_n_s_Estimate_quadSumNeg __pyx_mstate_global->__pyx_n_s_Estimate_quadSumNeg
#define __pyx_n_s_Estimate_quadSumPos __pyx_mstate_global->__pyx_n_s_Estimate_quadSumPos
#define __pyx_n_s_Estimate_relErr __pyx_mstate_global->__pyx_n_s_Estimate_relErr
#define __pyx_n_s_Estimate_relErrAvg __pyx_mstate_global->__pyx_n_s_Estimate_relErrAvg
#define __pyx_n_s_Estimate_relErrDown __pyx_mstate_global->__pyx_n_s_Estimate_relErrDown
#define __pyx_n_s_Estimate_relErrDownUp __pyx_mstate_global->__pyx_n_s_Estimate_relErrDownUp
#define __pyx_n_s_Estimate_relErrEnv __pyx_mstate_global->__pyx_n_s_Estimate_relErrEnv
#define __pyx_n_s_Estimate_relErrUp __pyx_mstate_global->__pyx_n_s_Estimate_relErrUp
#define __pyx_n_s_Estimate_relTotalErr __pyx_mstate_global->__pyx_n_s_Estimate_relTotalErr
#define __pyx_n_s_Estimate_relTotalErrAvg __pyx_mstate_global->__pyx_n_s_Estimate_relTotalErrAvg
#define __pyx_n_s_Estimate_relTotalErrEnv __pyx_mstate_global->__pyx_n_s_Estimate_relTotalErrEnv
#define __pyx_n_s_Estimate_relTotalErrNeg __pyx_mstate_global->__pyx_n_s_Estimate_relTotalErrNeg
#define __pyx_n_s_Estimate_relTotalErrPos __pyx_mstate_global->__pyx_n_s_Estimate_relTotalErrPos
#define __pyx_n_s_Estimate_reset __pyx_mstate_global->__pyx_n_s_Estimate_reset
#define __pyx_n_s_Estimate_rmErrs __pyx_mstate_global->__pyx_n_s_Estimate_rmErrs
#define __pyx_n_s_Estimate_rmSource __pyx_mstate_global->__pyx_n_s_Estimate_rmSource
#define __pyx_n_s_Estimate_scale __pyx_mstate_global->__pyx_n_s_Estimate_scale
#define __pyx_n_s_Estimate_serializeSources __pyx_mstate_global->__pyx_n_s_Estimate_serializeSources
#define __pyx_n_s_Estimate_set __pyx_mstate_global->__pyx_n_s_Estimate_set
#define __pyx_n_s_Estimate_setErr __pyx_mstate_global->__pyx_n_s_Estimate_setErr
#define __pyx_n_s_Estimate_setVal __pyx_mstate_global->__pyx_n_s_Estimate_setVal
#define __pyx_n_s_Estimate_sources __pyx_mstate_global->__pyx_n_s_Estimate_sources
#define __pyx_n_s_Estimate_totalErr __pyx_mstate_global->__pyx_n_s_Estimate_totalErr
#define __pyx_n_s_Estimate_totalErrAvg __pyx_mstate_global->__pyx_n_s_Estimate_totalErrAvg
#define __pyx_n_s_Estimate_totalErrEnv __pyx_mstate_global->__pyx_n_s_Estimate_totalErrEnv
#define __pyx_n_s_Estimate_totalErrNeg __pyx_mstate_global->__pyx_n_s_Estimate_totalErrNeg
#define __pyx_n_s_Estimate_totalErrPos __pyx_mstate_global->__pyx_n_s_Estimate_totalErrPos
#define __pyx_n_s_Estimate_val __pyx_mstate_global->__pyx_n_s_Estimate_val
#define __pyx_n_s_Estimate_valMax __pyx_mstate_global->__pyx_n_s_Estimate_valMax
#define __pyx_n_s_Estimate_valMin __pyx_mstate_global->__pyx_n_s_Estimate_valMin
#define __pyx_kp_s_Estimate_value_2e __pyx_mstate_global->__pyx_kp_s_Estimate_value_2e
#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_H3D __pyx_mstate_global->__pyx_n_s_H3D
#define __pyx_n_s_Histo1D __pyx_mstate_global->__pyx_n_s_Histo1D
#define __pyx_n_s_Histo2D __pyx_mstate_global->__pyx_n_s_Histo2D
#define __pyx_n_s_Histo3D __pyx_mstate_global->__pyx_n_s_Histo3D
#define __pyx_kp_s_Histograms_must_be_of_the_same_t __pyx_mstate_global->__pyx_kp_s_Histograms_must_be_of_the_same_t
#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
#define __pyx_n_s_N __pyx_mstate_global->__pyx_n_s_N
#define __pyx_kp_s_Null_pointer_referenced_perhaps __pyx_mstate_global->__pyx_kp_s_Null_pointer_referenced_perhaps
#define __pyx_kp_s_Only_division_of_BinnedHisto_Bin __pyx_mstate_global->__pyx_kp_s_Only_division_of_BinnedHisto_Bin
#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_P3D __pyx_mstate_global->__pyx_n_s_P3D
#define __pyx_n_s_P4D __pyx_mstate_global->__pyx_n_s_P4D
#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___init1 __pyx_mstate_global->__pyx_n_s_Point1D___init1
#define __pyx_n_s_Point1D___init2 __pyx_mstate_global->__pyx_n_s_Point1D___init2
#define __pyx_n_s_Point1D___init3 __pyx_mstate_global->__pyx_n_s_Point1D___init3
#define __pyx_n_s_Point1D___init4 __pyx_mstate_global->__pyx_n_s_Point1D___init4
#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__init1 __pyx_mstate_global->__pyx_n_s_Point1D__init1
#define __pyx_n_s_Point1D__init2 __pyx_mstate_global->__pyx_n_s_Point1D__init2
#define __pyx_n_s_Point1D__init2_locals_genexpr __pyx_mstate_global->__pyx_n_s_Point1D__init2_locals_genexpr
#define __pyx_n_s_Point1D__init3 __pyx_mstate_global->__pyx_n_s_Point1D__init3
#define __pyx_n_s_Point1D__init4 __pyx_mstate_global->__pyx_n_s_Point1D__init4
#define __pyx_n_s_Point1D_copy __pyx_mstate_global->__pyx_n_s_Point1D_copy
#define __pyx_n_s_Point1D_errs __pyx_mstate_global->__pyx_n_s_Point1D_errs
#define __pyx_n_s_Point1D_max __pyx_mstate_global->__pyx_n_s_Point1D_max
#define __pyx_n_s_Point1D_min __pyx_mstate_global->__pyx_n_s_Point1D_min
#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_kp_s_Point1D_v1_g __pyx_mstate_global->__pyx_kp_s_Point1D_v1_g
#define __pyx_n_s_Point1D_val __pyx_mstate_global->__pyx_n_s_Point1D_val
#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_xErrMinus __pyx_mstate_global->__pyx_n_s_Point1D_xErrMinus
#define __pyx_n_s_Point1D_xErrPlus __pyx_mstate_global->__pyx_n_s_Point1D_xErrPlus
#define __pyx_n_s_Point1D_xErrs __pyx_mstate_global->__pyx_n_s_Point1D_xErrs
#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_n_s_Point2D __pyx_mstate_global->__pyx_n_s_Point2D
#define __pyx_n_s_Point2D___init1 __pyx_mstate_global->__pyx_n_s_Point2D___init1
#define __pyx_n_s_Point2D___init2 __pyx_mstate_global->__pyx_n_s_Point2D___init2
#define __pyx_n_s_Point2D___init3 __pyx_mstate_global->__pyx_n_s_Point2D___init3
#define __pyx_n_s_Point2D___init4 __pyx_mstate_global->__pyx_n_s_Point2D___init4
#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__init1 __pyx_mstate_global->__pyx_n_s_Point2D__init1
#define __pyx_n_s_Point2D__init2 __pyx_mstate_global->__pyx_n_s_Point2D__init2
#define __pyx_n_s_Point2D__init2_locals_genexpr __pyx_mstate_global->__pyx_n_s_Point2D__init2_locals_genexpr
#define __pyx_n_s_Point2D__init3 __pyx_mstate_global->__pyx_n_s_Point2D__init3
#define __pyx_n_s_Point2D__init4 __pyx_mstate_global->__pyx_n_s_Point2D__init4
#define __pyx_n_s_Point2D_copy __pyx_mstate_global->__pyx_n_s_Point2D_copy
#define __pyx_n_s_Point2D_errs __pyx_mstate_global->__pyx_n_s_Point2D_errs
#define __pyx_n_s_Point2D_max __pyx_mstate_global->__pyx_n_s_Point2D_max
#define __pyx_n_s_Point2D_min __pyx_mstate_global->__pyx_n_s_Point2D_min
#define __pyx_n_s_Point2D_scaleX __pyx_mstate_global->__pyx_n_s_Point2D_scaleX
#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_kp_s_Point2D_v1_g_v2_g __pyx_mstate_global->__pyx_kp_s_Point2D_v1_g_v2_g
#define __pyx_n_s_Point2D_val __pyx_mstate_global->__pyx_n_s_Point2D_val
#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_xErrMinus __pyx_mstate_global->__pyx_n_s_Point2D_xErrMinus
#define __pyx_n_s_Point2D_xErrPlus __pyx_mstate_global->__pyx_n_s_Point2D_xErrPlus
#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_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_yErrMinus __pyx_mstate_global->__pyx_n_s_Point2D_yErrMinus
#define __pyx_n_s_Point2D_yErrPlus __pyx_mstate_global->__pyx_n_s_Point2D_yErrPlus
#define __pyx_n_s_Point2D_yErrs __pyx_mstate_global->__pyx_n_s_Point2D_yErrs
#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___init1 __pyx_mstate_global->__pyx_n_s_Point3D___init1
#define __pyx_n_s_Point3D___init2 __pyx_mstate_global->__pyx_n_s_Point3D___init2
#define __pyx_n_s_Point3D___init3 __pyx_mstate_global->__pyx_n_s_Point3D___init3
#define __pyx_n_s_Point3D___init4 __pyx_mstate_global->__pyx_n_s_Point3D___init4
#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__init1 __pyx_mstate_global->__pyx_n_s_Point3D__init1
#define __pyx_n_s_Point3D__init2 __pyx_mstate_global->__pyx_n_s_Point3D__init2
#define __pyx_n_s_Point3D__init2_locals_genexpr __pyx_mstate_global->__pyx_n_s_Point3D__init2_locals_genexpr
#define __pyx_n_s_Point3D__init3 __pyx_mstate_global->__pyx_n_s_Point3D__init3
#define __pyx_n_s_Point3D__init4 __pyx_mstate_global->__pyx_n_s_Point3D__init4
#define __pyx_n_s_Point3D_copy __pyx_mstate_global->__pyx_n_s_Point3D_copy
#define __pyx_n_s_Point3D_errs __pyx_mstate_global->__pyx_n_s_Point3D_errs
#define __pyx_n_s_Point3D_max __pyx_mstate_global->__pyx_n_s_Point3D_max
#define __pyx_n_s_Point3D_min __pyx_mstate_global->__pyx_n_s_Point3D_min
#define __pyx_n_s_Point3D_scaleX __pyx_mstate_global->__pyx_n_s_Point3D_scaleX
#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_kp_s_Point3D_v1_g_v2_g_v3_g __pyx_mstate_global->__pyx_kp_s_Point3D_v1_g_v2_g_v3_g
#define __pyx_n_s_Point3D_val __pyx_mstate_global->__pyx_n_s_Point3D_val
#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_xErrMinus __pyx_mstate_global->__pyx_n_s_Point3D_xErrMinus
#define __pyx_n_s_Point3D_xErrPlus __pyx_mstate_global->__pyx_n_s_Point3D_xErrPlus
#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_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_yErrMinus __pyx_mstate_global->__pyx_n_s_Point3D_yErrMinus
#define __pyx_n_s_Point3D_yErrPlus __pyx_mstate_global->__pyx_n_s_Point3D_yErrPlus
#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_zErrMinus __pyx_mstate_global->__pyx_n_s_Point3D_zErrMinus
#define __pyx_n_s_Point3D_zErrPlus __pyx_mstate_global->__pyx_n_s_Point3D_zErrPlus
#define __pyx_n_s_Point3D_zErrs __pyx_mstate_global->__pyx_n_s_Point3D_zErrs
#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_Point4D __pyx_mstate_global->__pyx_n_s_Point4D
#define __pyx_n_s_Point4D___init1 __pyx_mstate_global->__pyx_n_s_Point4D___init1
#define __pyx_n_s_Point4D___init2 __pyx_mstate_global->__pyx_n_s_Point4D___init2
#define __pyx_n_s_Point4D___reduce_cython __pyx_mstate_global->__pyx_n_s_Point4D___reduce_cython
#define __pyx_n_s_Point4D___setstate_cython __pyx_mstate_global->__pyx_n_s_Point4D___setstate_cython
#define __pyx_n_s_Point4D__init1 __pyx_mstate_global->__pyx_n_s_Point4D__init1
#define __pyx_n_s_Point4D__init2 __pyx_mstate_global->__pyx_n_s_Point4D__init2
#define __pyx_n_s_Point4D__init2_locals_genexpr __pyx_mstate_global->__pyx_n_s_Point4D__init2_locals_genexpr
#define __pyx_n_s_Point4D_copy __pyx_mstate_global->__pyx_n_s_Point4D_copy
#define __pyx_n_s_Point4D_errs __pyx_mstate_global->__pyx_n_s_Point4D_errs
#define __pyx_n_s_Point4D_max __pyx_mstate_global->__pyx_n_s_Point4D_max
#define __pyx_n_s_Point4D_min __pyx_mstate_global->__pyx_n_s_Point4D_min
#define __pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g __pyx_mstate_global->__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g
#define __pyx_n_s_Point4D_val __pyx_mstate_global->__pyx_n_s_Point4D_val
#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_scale __pyx_mstate_global->__pyx_n_s_Point_scale
#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_Profile2D __pyx_mstate_global->__pyx_n_s_Profile2D
#define __pyx_n_s_RMS __pyx_mstate_global->__pyx_n_s_RMS
#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_S4D __pyx_mstate_global->__pyx_n_s_S4D
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter1D___init_1
#define __pyx_n_s_Scatter1D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter1D___init_2
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter1D__init_1
#define __pyx_n_s_Scatter1D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter1D__init_2
#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_deserializeContent __pyx_mstate_global->__pyx_n_s_Scatter1D_deserializeContent
#define __pyx_n_s_Scatter1D_deserializeMeta __pyx_mstate_global->__pyx_n_s_Scatter1D_deserializeMeta
#define __pyx_n_s_Scatter1D_edges __pyx_mstate_global->__pyx_n_s_Scatter1D_edges
#define __pyx_n_s_Scatter1D_errAvgs __pyx_mstate_global->__pyx_n_s_Scatter1D_errAvgs
#define __pyx_n_s_Scatter1D_errs __pyx_mstate_global->__pyx_n_s_Scatter1D_errs
#define __pyx_n_s_Scatter1D_lengthContent __pyx_mstate_global->__pyx_n_s_Scatter1D_lengthContent
#define __pyx_n_s_Scatter1D_lengthMeta __pyx_mstate_global->__pyx_n_s_Scatter1D_lengthMeta
#define __pyx_n_s_Scatter1D_maxs __pyx_mstate_global->__pyx_n_s_Scatter1D_maxs
#define __pyx_n_s_Scatter1D_mins __pyx_mstate_global->__pyx_n_s_Scatter1D_mins
#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_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_scale __pyx_mstate_global->__pyx_n_s_Scatter1D_scale
#define __pyx_n_s_Scatter1D_scaleErr __pyx_mstate_global->__pyx_n_s_Scatter1D_scaleErr
#define __pyx_n_s_Scatter1D_scaleVal __pyx_mstate_global->__pyx_n_s_Scatter1D_scaleVal
#define __pyx_n_s_Scatter1D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter1D_scaleX
#define __pyx_n_s_Scatter1D_serializeContent __pyx_mstate_global->__pyx_n_s_Scatter1D_serializeContent
#define __pyx_n_s_Scatter1D_serializeMeta __pyx_mstate_global->__pyx_n_s_Scatter1D_serializeMeta
#define __pyx_n_s_Scatter1D_vals __pyx_mstate_global->__pyx_n_s_Scatter1D_vals
#define __pyx_n_s_Scatter1D_xErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter1D_xErrAvgs
#define __pyx_n_s_Scatter1D_xErrs __pyx_mstate_global->__pyx_n_s_Scatter1D_xErrs
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter2D___init_1
#define __pyx_n_s_Scatter2D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter2D___init_2
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter2D__init_1
#define __pyx_n_s_Scatter2D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter2D__init_2
#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_deserializeContent __pyx_mstate_global->__pyx_n_s_Scatter2D_deserializeContent
#define __pyx_n_s_Scatter2D_deserializeMeta __pyx_mstate_global->__pyx_n_s_Scatter2D_deserializeMeta
#define __pyx_n_s_Scatter2D_edges __pyx_mstate_global->__pyx_n_s_Scatter2D_edges
#define __pyx_n_s_Scatter2D_errAvgs __pyx_mstate_global->__pyx_n_s_Scatter2D_errAvgs
#define __pyx_n_s_Scatter2D_errs __pyx_mstate_global->__pyx_n_s_Scatter2D_errs
#define __pyx_n_s_Scatter2D_lengthContent __pyx_mstate_global->__pyx_n_s_Scatter2D_lengthContent
#define __pyx_n_s_Scatter2D_lengthMeta __pyx_mstate_global->__pyx_n_s_Scatter2D_lengthMeta
#define __pyx_n_s_Scatter2D_maxs __pyx_mstate_global->__pyx_n_s_Scatter2D_maxs
#define __pyx_n_s_Scatter2D_mins __pyx_mstate_global->__pyx_n_s_Scatter2D_mins
#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_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_scale __pyx_mstate_global->__pyx_n_s_Scatter2D_scale
#define __pyx_n_s_Scatter2D_scaleErr __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleErr
#define __pyx_n_s_Scatter2D_scaleVal __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleVal
#define __pyx_n_s_Scatter2D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleX
#define __pyx_n_s_Scatter2D_scaleY __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleY
#define __pyx_n_s_Scatter2D_serializeContent __pyx_mstate_global->__pyx_n_s_Scatter2D_serializeContent
#define __pyx_n_s_Scatter2D_serializeMeta __pyx_mstate_global->__pyx_n_s_Scatter2D_serializeMeta
#define __pyx_n_s_Scatter2D_vals __pyx_mstate_global->__pyx_n_s_Scatter2D_vals
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter3D___init_1
#define __pyx_n_s_Scatter3D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter3D___init_2
#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_1 __pyx_mstate_global->__pyx_n_s_Scatter3D__init_1
#define __pyx_n_s_Scatter3D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter3D__init_2
#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_deserializeContent __pyx_mstate_global->__pyx_n_s_Scatter3D_deserializeContent
#define __pyx_n_s_Scatter3D_deserializeMeta __pyx_mstate_global->__pyx_n_s_Scatter3D_deserializeMeta
#define __pyx_n_s_Scatter3D_edges __pyx_mstate_global->__pyx_n_s_Scatter3D_edges
#define __pyx_n_s_Scatter3D_errAvgs __pyx_mstate_global->__pyx_n_s_Scatter3D_errAvgs
#define __pyx_n_s_Scatter3D_errs __pyx_mstate_global->__pyx_n_s_Scatter3D_errs
#define __pyx_n_s_Scatter3D_lengthContent __pyx_mstate_global->__pyx_n_s_Scatter3D_lengthContent
#define __pyx_n_s_Scatter3D_lengthMeta __pyx_mstate_global->__pyx_n_s_Scatter3D_lengthMeta
#define __pyx_n_s_Scatter3D_maxs __pyx_mstate_global->__pyx_n_s_Scatter3D_maxs
#define __pyx_n_s_Scatter3D_mins __pyx_mstate_global->__pyx_n_s_Scatter3D_mins
#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_scale __pyx_mstate_global->__pyx_n_s_Scatter3D_scale
#define __pyx_n_s_Scatter3D_scaleErr __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleErr
#define __pyx_n_s_Scatter3D_scaleVal __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleVal
#define __pyx_n_s_Scatter3D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleX
#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_serializeContent __pyx_mstate_global->__pyx_n_s_Scatter3D_serializeContent
#define __pyx_n_s_Scatter3D_serializeMeta __pyx_mstate_global->__pyx_n_s_Scatter3D_serializeMeta
#define __pyx_n_s_Scatter3D_vals __pyx_mstate_global->__pyx_n_s_Scatter3D_vals
#define __pyx_n_s_Scatter3D_xErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter3D_xErrAvgs
#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_yErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter3D_yErrAvgs
#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_zErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter3D_zErrAvgs
#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_Scatter4D __pyx_mstate_global->__pyx_n_s_Scatter4D
#define __pyx_n_s_Scatter4D___addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter4D___addPoint_explicit
#define __pyx_n_s_Scatter4D___addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter4D___addPoint_point
#define __pyx_n_s_Scatter4D___init_1 __pyx_mstate_global->__pyx_n_s_Scatter4D___init_1
#define __pyx_n_s_Scatter4D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter4D___init_2
#define __pyx_n_s_Scatter4D___reduce_cython __pyx_mstate_global->__pyx_n_s_Scatter4D___reduce_cython
#define __pyx_n_s_Scatter4D___setstate_cython __pyx_mstate_global->__pyx_n_s_Scatter4D___setstate_cython
#define __pyx_n_s_Scatter4D__addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter4D__addPoint_explicit
#define __pyx_n_s_Scatter4D__addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter4D__addPoint_point
#define __pyx_n_s_Scatter4D__init_1 __pyx_mstate_global->__pyx_n_s_Scatter4D__init_1
#define __pyx_n_s_Scatter4D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter4D__init_2
#define __pyx_n_s_Scatter4D__mknp __pyx_mstate_global->__pyx_n_s_Scatter4D__mknp
#define __pyx_n_s_Scatter4D_addPoint __pyx_mstate_global->__pyx_n_s_Scatter4D_addPoint
#define __pyx_n_s_Scatter4D_addPoints __pyx_mstate_global->__pyx_n_s_Scatter4D_addPoints
#define __pyx_n_s_Scatter4D_clone __pyx_mstate_global->__pyx_n_s_Scatter4D_clone
#define __pyx_n_s_Scatter4D_combineWith __pyx_mstate_global->__pyx_n_s_Scatter4D_combineWith
#define __pyx_n_s_Scatter4D_deserializeContent __pyx_mstate_global->__pyx_n_s_Scatter4D_deserializeContent
#define __pyx_n_s_Scatter4D_deserializeMeta __pyx_mstate_global->__pyx_n_s_Scatter4D_deserializeMeta
#define __pyx_n_s_Scatter4D_edges __pyx_mstate_global->__pyx_n_s_Scatter4D_edges
#define __pyx_n_s_Scatter4D_errAvgs __pyx_mstate_global->__pyx_n_s_Scatter4D_errAvgs
#define __pyx_n_s_Scatter4D_errs __pyx_mstate_global->__pyx_n_s_Scatter4D_errs
#define __pyx_n_s_Scatter4D_lengthContent __pyx_mstate_global->__pyx_n_s_Scatter4D_lengthContent
#define __pyx_n_s_Scatter4D_lengthMeta __pyx_mstate_global->__pyx_n_s_Scatter4D_lengthMeta
#define __pyx_n_s_Scatter4D_maxs __pyx_mstate_global->__pyx_n_s_Scatter4D_maxs
#define __pyx_n_s_Scatter4D_mins __pyx_mstate_global->__pyx_n_s_Scatter4D_mins
#define __pyx_n_s_Scatter4D_mkScatter __pyx_mstate_global->__pyx_n_s_Scatter4D_mkScatter
#define __pyx_n_s_Scatter4D_numPoints __pyx_mstate_global->__pyx_n_s_Scatter4D_numPoints
#define __pyx_n_s_Scatter4D_point __pyx_mstate_global->__pyx_n_s_Scatter4D_point
#define __pyx_n_s_Scatter4D_points __pyx_mstate_global->__pyx_n_s_Scatter4D_points
#define __pyx_n_s_Scatter4D_reset __pyx_mstate_global->__pyx_n_s_Scatter4D_reset
#define __pyx_n_s_Scatter4D_rmPoint __pyx_mstate_global->__pyx_n_s_Scatter4D_rmPoint
#define __pyx_n_s_Scatter4D_rmPoints __pyx_mstate_global->__pyx_n_s_Scatter4D_rmPoints
#define __pyx_n_s_Scatter4D_scale __pyx_mstate_global->__pyx_n_s_Scatter4D_scale
#define __pyx_n_s_Scatter4D_scaleErr __pyx_mstate_global->__pyx_n_s_Scatter4D_scaleErr
#define __pyx_n_s_Scatter4D_scaleVal __pyx_mstate_global->__pyx_n_s_Scatter4D_scaleVal
#define __pyx_n_s_Scatter4D_serializeContent __pyx_mstate_global->__pyx_n_s_Scatter4D_serializeContent
#define __pyx_n_s_Scatter4D_serializeMeta __pyx_mstate_global->__pyx_n_s_Scatter4D_serializeMeta
#define __pyx_n_s_Scatter4D_vals __pyx_mstate_global->__pyx_n_s_Scatter4D_vals
#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
#define __pyx_kp_s_Unknown_axis_combination_encount __pyx_mstate_global->__pyx_kp_s_Unknown_axis_combination_encount
#define __pyx_kp_s_Unknown_edge_type_encountered __pyx_mstate_global->__pyx_kp_s_Unknown_edge_type_encountered
#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
#define __pyx_kp_s_WARNING_method_not_supported_for __pyx_mstate_global->__pyx_kp_s_WARNING_method_not_supported_for
#define __pyx_n_s__10 __pyx_mstate_global->__pyx_n_s__10
#define __pyx_kp_u__108 __pyx_mstate_global->__pyx_kp_u__108
#define __pyx_n_s__1405 __pyx_mstate_global->__pyx_n_s__1405
#define __pyx_kp_s__2 __pyx_mstate_global->__pyx_kp_s__2
#define __pyx_kp_s__5 __pyx_mstate_global->__pyx_kp_s__5
#define __pyx_kp_s__6 __pyx_mstate_global->__pyx_kp_s__6
#define __pyx_kp_s__7 __pyx_mstate_global->__pyx_kp_s__7
#define __pyx_n_s_a __pyx_mstate_global->__pyx_n_s_a
#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_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_append __pyx_mstate_global->__pyx_n_s_append
#define __pyx_n_s_areaUnderCurve __pyx_mstate_global->__pyx_n_s_areaUnderCurve
#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_asum __pyx_mstate_global->__pyx_n_s_asum
#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
#define __pyx_n_s_attach __pyx_mstate_global->__pyx_n_s_attach
#define __pyx_n_s_attrgetter __pyx_mstate_global->__pyx_n_s_attrgetter
#define __pyx_n_s_auc __pyx_mstate_global->__pyx_n_s_auc
#define __pyx_n_s_autostr __pyx_mstate_global->__pyx_n_s_autostr
#define __pyx_n_s_axes __pyx_mstate_global->__pyx_n_s_axes
#define __pyx_n_s_axisConfig __pyx_mstate_global->__pyx_n_s_axisConfig
#define __pyx_n_s_b __pyx_mstate_global->__pyx_n_s_b
#define __pyx_n_s_base __pyx_mstate_global->__pyx_n_s_base
#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_binDim __pyx_mstate_global->__pyx_n_s_binDim
#define __pyx_n_s_binIndex __pyx_mstate_global->__pyx_n_s_binIndex
#define __pyx_n_s_bin_2 __pyx_mstate_global->__pyx_n_s_bin_2
#define __pyx_n_s_binedges __pyx_mstate_global->__pyx_n_s_binedges
#define __pyx_n_s_binning __pyx_mstate_global->__pyx_n_s_binning
#define __pyx_n_s_binning_2 __pyx_mstate_global->__pyx_n_s_binning_2
#define __pyx_n_s_bins __pyx_mstate_global->__pyx_n_s_bins
#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_cdata __pyx_mstate_global->__pyx_n_s_cdata
#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_config __pyx_mstate_global->__pyx_n_s_config
#define __pyx_n_s_cont __pyx_mstate_global->__pyx_n_s_cont
#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_correlation __pyx_mstate_global->__pyx_n_s_correlation
#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_cpptype __pyx_mstate_global->__pyx_n_s_cpptype
#define __pyx_n_s_crossTerm __pyx_mstate_global->__pyx_n_s_crossTerm
#define __pyx_n_s_d __pyx_mstate_global->__pyx_n_s_d
#define __pyx_n_s_d2ptr __pyx_mstate_global->__pyx_n_s_d2ptr
#define __pyx_n_s_dArea __pyx_mstate_global->__pyx_n_s_dArea
#define __pyx_n_s_dLen __pyx_mstate_global->__pyx_n_s_dLen
#define __pyx_n_s_dVol __pyx_mstate_global->__pyx_n_s_dVol
#define __pyx_n_s_da __pyx_mstate_global->__pyx_n_s_da
#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data
#define __pyx_n_s_dd __pyx_mstate_global->__pyx_n_s_dd
#define __pyx_n_s_ddd __pyx_mstate_global->__pyx_n_s_ddd
#define __pyx_n_s_ddi __pyx_mstate_global->__pyx_n_s_ddi
#define __pyx_n_s_dds __pyx_mstate_global->__pyx_n_s_dds
#define __pyx_n_s_default __pyx_mstate_global->__pyx_n_s_default
#define __pyx_n_s_density __pyx_mstate_global->__pyx_n_s_density
#define __pyx_n_s_densityError __pyx_mstate_global->__pyx_n_s_densityError
#define __pyx_n_s_densitySum __pyx_mstate_global->__pyx_n_s_densitySum
#define __pyx_n_s_deserializeContent __pyx_mstate_global->__pyx_n_s_deserializeContent
#define __pyx_n_s_deserializeMeta __pyx_mstate_global->__pyx_n_s_deserializeMeta
#define __pyx_n_s_deserializeSources __pyx_mstate_global->__pyx_n_s_deserializeSources
#define __pyx_n_s_di __pyx_mstate_global->__pyx_n_s_di
#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
#define __pyx_n_s_did __pyx_mstate_global->__pyx_n_s_did
#define __pyx_n_s_dii __pyx_mstate_global->__pyx_n_s_dii
#define __pyx_n_s_dim __pyx_mstate_global->__pyx_n_s_dim
#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis
#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
#define __pyx_n_s_divbyvol __pyx_mstate_global->__pyx_n_s_divbyvol
#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_ds __pyx_mstate_global->__pyx_n_s_ds
#define __pyx_n_s_dsd __pyx_mstate_global->__pyx_n_s_dsd
#define __pyx_n_s_dsi __pyx_mstate_global->__pyx_n_s_dsi
#define __pyx_n_s_dss __pyx_mstate_global->__pyx_n_s_dss
#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_edgesA1 __pyx_mstate_global->__pyx_n_s_edgesA1
#define __pyx_n_s_edgesA2 __pyx_mstate_global->__pyx_n_s_edgesA2
#define __pyx_n_s_edgesA3 __pyx_mstate_global->__pyx_n_s_edgesA3
#define __pyx_n_s_edges_d __pyx_mstate_global->__pyx_n_s_edges_d
#define __pyx_n_s_edges_i __pyx_mstate_global->__pyx_n_s_edges_i
#define __pyx_n_s_edges_s __pyx_mstate_global->__pyx_n_s_edges_s
#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_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_enumerate __pyx_mstate_global->__pyx_n_s_enumerate
#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_errAvgs __pyx_mstate_global->__pyx_n_s_errAvgs
#define __pyx_n_s_errDown __pyx_mstate_global->__pyx_n_s_errDown
#define __pyx_n_s_errDownUp __pyx_mstate_global->__pyx_n_s_errDownUp
#define __pyx_n_s_errEnv __pyx_mstate_global->__pyx_n_s_errEnv
#define __pyx_n_s_errNeg __pyx_mstate_global->__pyx_n_s_errNeg
#define __pyx_n_s_errNegPos __pyx_mstate_global->__pyx_n_s_errNegPos
#define __pyx_n_s_errPos __pyx_mstate_global->__pyx_n_s_errPos
#define __pyx_n_s_errUp __pyx_mstate_global->__pyx_n_s_errUp
#define __pyx_n_s_errW __pyx_mstate_global->__pyx_n_s_errW
#define __pyx_n_s_errm __pyx_mstate_global->__pyx_n_s_errm
#define __pyx_n_s_errors1 __pyx_mstate_global->__pyx_n_s_errors1
#define __pyx_n_s_errors2 __pyx_mstate_global->__pyx_n_s_errors2
#define __pyx_n_s_errp __pyx_mstate_global->__pyx_n_s_errp
#define __pyx_n_s_errs __pyx_mstate_global->__pyx_n_s_errs
#define __pyx_n_s_errsdn __pyx_mstate_global->__pyx_n_s_errsdn
#define __pyx_n_s_errsup __pyx_mstate_global->__pyx_n_s_errsup
#define __pyx_n_s_es __pyx_mstate_global->__pyx_n_s_es
#define __pyx_n_s_estptr __pyx_mstate_global->__pyx_n_s_estptr
#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_factor __pyx_mstate_global->__pyx_n_s_factor
#define __pyx_n_s_file __pyx_mstate_global->__pyx_n_s_file
#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_fillDim __pyx_mstate_global->__pyx_n_s_fillDim
#define __pyx_n_s_find __pyx_mstate_global->__pyx_n_s_find
#define __pyx_n_s_fixed_length __pyx_mstate_global->__pyx_n_s_fixed_length
#define __pyx_n_s_fn __pyx_mstate_global->__pyx_n_s_fn
#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_global_set __pyx_mstate_global->__pyx_n_s_global_set
#define __pyx_n_s_hasAnnotation __pyx_mstate_global->__pyx_n_s_hasAnnotation
#define __pyx_n_s_hasSource __pyx_mstate_global->__pyx_n_s_hasSource
#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id
#define __pyx_n_s_idd __pyx_mstate_global->__pyx_n_s_idd
#define __pyx_n_s_idi __pyx_mstate_global->__pyx_n_s_idi
#define __pyx_n_s_ids __pyx_mstate_global->__pyx_n_s_ids
#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_ii __pyx_mstate_global->__pyx_n_s_ii
#define __pyx_n_s_iid __pyx_mstate_global->__pyx_n_s_iid
#define __pyx_n_s_iii __pyx_mstate_global->__pyx_n_s_iii
#define __pyx_n_s_iis __pyx_mstate_global->__pyx_n_s_iis
#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
#define __pyx_n_s_includeBinVol __pyx_mstate_global->__pyx_n_s_includeBinVol
#define __pyx_n_s_includeMaskedBins __pyx_mstate_global->__pyx_n_s_includeMaskedBins
#define __pyx_n_s_includeOverflows __pyx_mstate_global->__pyx_n_s_includeOverflows
#define __pyx_kp_s_include_AnalysisObject_pyx __pyx_mstate_global->__pyx_kp_s_include_AnalysisObject_pyx
#define __pyx_kp_s_include_Binning_pyx __pyx_mstate_global->__pyx_kp_s_include_Binning_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_Estimate0D_pyx __pyx_mstate_global->__pyx_kp_s_include_Estimate0D_pyx
#define __pyx_kp_s_include_Estimate_pyx __pyx_mstate_global->__pyx_kp_s_include_Estimate_pyx
#define __pyx_kp_s_include_Functions_pyx __pyx_mstate_global->__pyx_kp_s_include_Functions_pyx
#define __pyx_kp_s_include_IO_pyx __pyx_mstate_global->__pyx_kp_s_include_IO_pyx
#define __pyx_kp_s_include_Point_pyx __pyx_mstate_global->__pyx_kp_s_include_Point_pyx
#define __pyx_kp_s_include_generated_Axis_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Axis_pyx
#define __pyx_kp_s_include_generated_Bin1D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Bin1D_pyx
#define __pyx_kp_s_include_generated_Bin2D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Bin2D_pyx
#define __pyx_kp_s_include_generated_Bin3D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Bin3D_pyx
#define __pyx_kp_s_include_generated_BinnedEstimate __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedEstimate
#define __pyx_kp_s_include_generated_BinnedEstimate_2 __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedEstimate_2
#define __pyx_kp_s_include_generated_BinnedEstimate_3 __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedEstimate_3
#define __pyx_kp_s_include_generated_BinnedHisto1D __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedHisto1D
#define __pyx_kp_s_include_generated_BinnedHisto2D __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedHisto2D
#define __pyx_kp_s_include_generated_BinnedHisto3D __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedHisto3D
#define __pyx_kp_s_include_generated_BinnedProfile1 __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedProfile1
#define __pyx_kp_s_include_generated_BinnedProfile2 __pyx_mstate_global->__pyx_kp_s_include_generated_BinnedProfile2
#define __pyx_kp_s_include_generated_Dbn1D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Dbn1D_pyx
#define __pyx_kp_s_include_generated_Dbn2D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Dbn2D_pyx
#define __pyx_kp_s_include_generated_Dbn3D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Dbn3D_pyx
#define __pyx_kp_s_include_generated_Point1D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Point1D_pyx
#define __pyx_kp_s_include_generated_Point2D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Point2D_pyx
#define __pyx_kp_s_include_generated_Point3D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Point3D_pyx
#define __pyx_kp_s_include_generated_Point4D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Point4D_pyx
#define __pyx_kp_s_include_generated_Scatter1D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Scatter1D_pyx
#define __pyx_kp_s_include_generated_Scatter2D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Scatter2D_pyx
#define __pyx_kp_s_include_generated_Scatter3D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Scatter3D_pyx
#define __pyx_kp_s_include_generated_Scatter4D_pyx __pyx_mstate_global->__pyx_kp_s_include_generated_Scatter4D_pyx
#define __pyx_n_s_index __pyx_mstate_global->__pyx_n_s_index
#define __pyx_n_s_indexArr __pyx_mstate_global->__pyx_n_s_indexArr
#define __pyx_n_s_indexAt __pyx_mstate_global->__pyx_n_s_indexAt
#define __pyx_n_s_index_2 __pyx_mstate_global->__pyx_n_s_index_2
#define __pyx_n_s_index_between __pyx_mstate_global->__pyx_n_s_index_between
#define __pyx_n_s_index_list __pyx_mstate_global->__pyx_n_s_index_list
#define __pyx_n_s_indices __pyx_mstate_global->__pyx_n_s_indices
#define __pyx_n_s_indices_2 __pyx_mstate_global->__pyx_n_s_indices_2
#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init
#define __pyx_n_s_init1 __pyx_mstate_global->__pyx_n_s_init1
#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_init_1 __pyx_mstate_global->__pyx_n_s_init_1
#define __pyx_n_s_init_2 __pyx_mstate_global->__pyx_n_s_init_2
#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_integralError __pyx_mstate_global->__pyx_n_s_integralError
#define __pyx_n_s_is __pyx_mstate_global->__pyx_n_s_is
#define __pyx_n_s_isMasked __pyx_mstate_global->__pyx_n_s_isMasked
#define __pyx_n_s_isVisible __pyx_mstate_global->__pyx_n_s_isVisible
#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
#define __pyx_n_s_isd __pyx_mstate_global->__pyx_n_s_isd
#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
#define __pyx_n_s_isi __pyx_mstate_global->__pyx_n_s_isi
#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_itertools __pyx_mstate_global->__pyx_n_s_itertools
#define __pyx_n_s_j __pyx_mstate_global->__pyx_n_s_j
#define __pyx_n_s_join __pyx_mstate_global->__pyx_n_s_join
#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_lengthContent __pyx_mstate_global->__pyx_n_s_lengthContent
#define __pyx_n_s_lengthMeta __pyx_mstate_global->__pyx_n_s_lengthMeta
#define __pyx_n_s_linspace __pyx_mstate_global->__pyx_n_s_linspace
#define __pyx_n_s_localIndices __pyx_mstate_global->__pyx_n_s_localIndices
#define __pyx_n_s_localToGlobalIndex __pyx_mstate_global->__pyx_n_s_localToGlobalIndex
#define __pyx_n_s_local_set __pyx_mstate_global->__pyx_n_s_local_set
#define __pyx_n_s_logspace __pyx_mstate_global->__pyx_n_s_logspace
#define __pyx_n_s_lower __pyx_mstate_global->__pyx_n_s_lower
#define __pyx_n_s_lowerX __pyx_mstate_global->__pyx_n_s_lowerX
#define __pyx_n_s_lowerY __pyx_mstate_global->__pyx_n_s_lowerY
#define __pyx_n_s_lowerZ __pyx_mstate_global->__pyx_n_s_lowerZ
#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
#define __pyx_n_s_mapTypes __pyx_mstate_global->__pyx_n_s_mapTypes
#define __pyx_n_s_maskBin __pyx_mstate_global->__pyx_n_s_maskBin
#define __pyx_n_s_maskBinAt __pyx_mstate_global->__pyx_n_s_maskBinAt
#define __pyx_n_s_maskBins __pyx_mstate_global->__pyx_n_s_maskBins
#define __pyx_n_s_maskSlice __pyx_mstate_global->__pyx_n_s_maskSlice
#define __pyx_n_s_masked __pyx_mstate_global->__pyx_n_s_masked
#define __pyx_n_s_maskedBins __pyx_mstate_global->__pyx_n_s_maskedBins
#define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max
#define __pyx_n_s_maxDensity __pyx_mstate_global->__pyx_n_s_maxDensity
#define __pyx_n_s_maxs __pyx_mstate_global->__pyx_n_s_maxs
#define __pyx_n_s_maxsize __pyx_mstate_global->__pyx_n_s_maxsize
#define __pyx_n_s_mean __pyx_mstate_global->__pyx_n_s_mean
#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass
#define __pyx_n_s_mid __pyx_mstate_global->__pyx_n_s_mid
#define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min
#define __pyx_n_s_mins __pyx_mstate_global->__pyx_n_s_mins
#define __pyx_n_s_mkEstimate __pyx_mstate_global->__pyx_n_s_mkEstimate
#define __pyx_n_s_mkHisto __pyx_mstate_global->__pyx_n_s_mkHisto
#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_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries
#define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n
#define __pyx_n_s_naiveChi2 __pyx_mstate_global->__pyx_n_s_naiveChi2
#define __pyx_n_s_naiveChi2reduced __pyx_mstate_global->__pyx_n_s_naiveChi2reduced
#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_nbinsX __pyx_mstate_global->__pyx_n_s_nbinsX
#define __pyx_n_s_nbinsY __pyx_mstate_global->__pyx_n_s_nbinsY
#define __pyx_n_s_nbinsZ __pyx_mstate_global->__pyx_n_s_nbinsZ
#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_numBinsZ __pyx_mstate_global->__pyx_n_s_numBinsZ
#define __pyx_n_s_numEntries __pyx_mstate_global->__pyx_n_s_numEntries
#define __pyx_n_s_numErrs __pyx_mstate_global->__pyx_n_s_numErrs
#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_object __pyx_mstate_global->__pyx_n_s_object
#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_p __pyx_mstate_global->__pyx_n_s_p
#define __pyx_n_s_parseyaml __pyx_mstate_global->__pyx_n_s_parseyaml
#define __pyx_n_s_pat_match __pyx_mstate_global->__pyx_n_s_pat_match
#define __pyx_n_s_pat_uncorr __pyx_mstate_global->__pyx_n_s_pat_uncorr
#define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path
#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_pos __pyx_mstate_global->__pyx_n_s_pos
#define __pyx_n_s_precision __pyx_mstate_global->__pyx_n_s_precision
#define __pyx_n_s_prep_patterns __pyx_mstate_global->__pyx_n_s_prep_patterns
#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare
#define __pyx_n_s_print __pyx_mstate_global->__pyx_n_s_print
#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_quadSum __pyx_mstate_global->__pyx_n_s_quadSum
#define __pyx_n_s_quadSumAvg __pyx_mstate_global->__pyx_n_s_quadSumAvg
#define __pyx_n_s_quadSumEnv __pyx_mstate_global->__pyx_n_s_quadSumEnv
#define __pyx_n_s_quadSumNeg __pyx_mstate_global->__pyx_n_s_quadSumNeg
#define __pyx_n_s_quadSumPos __pyx_mstate_global->__pyx_n_s_quadSumPos
#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_read __pyx_mstate_global->__pyx_n_s_read
#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_symmetric __pyx_mstate_global->__pyx_n_s_read_symmetric
#define __pyx_n_s_rebinX __pyx_mstate_global->__pyx_n_s_rebinX
#define __pyx_n_s_rebinXBy __pyx_mstate_global->__pyx_n_s_rebinXBy
#define __pyx_n_s_rebinXTo __pyx_mstate_global->__pyx_n_s_rebinXTo
#define __pyx_n_s_rebinY __pyx_mstate_global->__pyx_n_s_rebinY
#define __pyx_n_s_rebinYBy __pyx_mstate_global->__pyx_n_s_rebinYBy
#define __pyx_n_s_rebinYTo __pyx_mstate_global->__pyx_n_s_rebinYTo
#define __pyx_n_s_rebinZ __pyx_mstate_global->__pyx_n_s_rebinZ
#define __pyx_n_s_rebinZBy __pyx_mstate_global->__pyx_n_s_rebinZBy
#define __pyx_n_s_rebinZTo __pyx_mstate_global->__pyx_n_s_rebinZTo
#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_relErrAvg __pyx_mstate_global->__pyx_n_s_relErrAvg
#define __pyx_n_s_relErrDown __pyx_mstate_global->__pyx_n_s_relErrDown
#define __pyx_n_s_relErrDownUp __pyx_mstate_global->__pyx_n_s_relErrDownUp
#define __pyx_n_s_relErrEnv __pyx_mstate_global->__pyx_n_s_relErrEnv
#define __pyx_n_s_relErrUp __pyx_mstate_global->__pyx_n_s_relErrUp
#define __pyx_n_s_relErrW __pyx_mstate_global->__pyx_n_s_relErrW
#define __pyx_n_s_relTotalErr __pyx_mstate_global->__pyx_n_s_relTotalErr
#define __pyx_n_s_relTotalErrAvg __pyx_mstate_global->__pyx_n_s_relTotalErrAvg
#define __pyx_n_s_relTotalErrEnv __pyx_mstate_global->__pyx_n_s_relTotalErrEnv
#define __pyx_n_s_relTotalErrNeg __pyx_mstate_global->__pyx_n_s_relTotalErrNeg
#define __pyx_n_s_relTotalErrPos __pyx_mstate_global->__pyx_n_s_relTotalErrPos
#define __pyx_n_s_repeat __pyx_mstate_global->__pyx_n_s_repeat
#define __pyx_n_s_reset __pyx_mstate_global->__pyx_n_s_reset
#define __pyx_n_s_resetPath __pyx_mstate_global->__pyx_n_s_resetPath
#define __pyx_n_s_resetTitle __pyx_mstate_global->__pyx_n_s_resetTitle
#define __pyx_n_s_rmAnnotation __pyx_mstate_global->__pyx_n_s_rmAnnotation
#define __pyx_n_s_rmErrs __pyx_mstate_global->__pyx_n_s_rmErrs
#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_rmSource __pyx_mstate_global->__pyx_n_s_rmSource
#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_sW __pyx_mstate_global->__pyx_n_s_sW
#define __pyx_n_s_sW2 __pyx_mstate_global->__pyx_n_s_sW2
#define __pyx_n_s_sWcross __pyx_mstate_global->__pyx_n_s_sWcross
#define __pyx_kp_s_s_s __pyx_mstate_global->__pyx_kp_s_s_s
#define __pyx_kp_s_s_s_d_points __pyx_mstate_global->__pyx_kp_s_s_s_d_points
#define __pyx_kp_s_s_s_s_d_bins __pyx_mstate_global->__pyx_kp_s_s_s_s_d_bins
#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_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_scaleErr __pyx_mstate_global->__pyx_n_s_scaleErr
#define __pyx_n_s_scaleVal __pyx_mstate_global->__pyx_n_s_scaleVal
#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_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_sdd __pyx_mstate_global->__pyx_n_s_sdd
#define __pyx_n_s_sdi __pyx_mstate_global->__pyx_n_s_sdi
#define __pyx_n_s_sds __pyx_mstate_global->__pyx_n_s_sds
#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_serializeContent __pyx_mstate_global->__pyx_n_s_serializeContent
#define __pyx_n_s_serializeMeta __pyx_mstate_global->__pyx_n_s_serializeMeta
#define __pyx_n_s_serializeSources __pyx_mstate_global->__pyx_n_s_serializeSources
#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_setBinning __pyx_mstate_global->__pyx_n_s_setBinning
#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_setIndices __pyx_mstate_global->__pyx_n_s_setIndices
#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_config __pyx_mstate_global->__pyx_n_s_set_config
#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_si __pyx_mstate_global->__pyx_n_s_si
#define __pyx_n_s_sid __pyx_mstate_global->__pyx_n_s_sid
#define __pyx_n_s_sii __pyx_mstate_global->__pyx_n_s_sii
#define __pyx_n_s_sis __pyx_mstate_global->__pyx_n_s_sis
#define __pyx_n_s_skipPath __pyx_mstate_global->__pyx_n_s_skipPath
#define __pyx_n_s_skipTitle __pyx_mstate_global->__pyx_n_s_skipTitle
#define __pyx_n_s_source __pyx_mstate_global->__pyx_n_s_source
#define __pyx_n_s_sources __pyx_mstate_global->__pyx_n_s_sources
#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split
#define __pyx_n_s_ss __pyx_mstate_global->__pyx_n_s_ss
#define __pyx_n_s_ssd __pyx_mstate_global->__pyx_n_s_ssd
#define __pyx_n_s_ssi __pyx_mstate_global->__pyx_n_s_ssi
#define __pyx_n_s_sss __pyx_mstate_global->__pyx_n_s_sss
#define __pyx_n_s_st __pyx_mstate_global->__pyx_n_s_st
#define __pyx_kp_s_stat_uncor __pyx_mstate_global->__pyx_kp_s_stat_uncor
#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status
#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_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_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_sumWA __pyx_mstate_global->__pyx_n_s_sumWA
#define __pyx_n_s_sumWA2 __pyx_mstate_global->__pyx_n_s_sumWA2
#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_sumWY __pyx_mstate_global->__pyx_n_s_sumWY
#define __pyx_n_s_sumWY2 __pyx_mstate_global->__pyx_n_s_sumWY2
#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_sumWcross __pyx_mstate_global->__pyx_n_s_sumWcross
#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_tmp __pyx_mstate_global->__pyx_n_s_tmp
#define __pyx_n_s_totalErr __pyx_mstate_global->__pyx_n_s_totalErr
#define __pyx_n_s_totalErrAvg __pyx_mstate_global->__pyx_n_s_totalErrAvg
#define __pyx_n_s_totalErrEnv __pyx_mstate_global->__pyx_n_s_totalErrEnv
#define __pyx_n_s_totalErrNeg __pyx_mstate_global->__pyx_n_s_totalErrNeg
#define __pyx_n_s_totalErrPos __pyx_mstate_global->__pyx_n_s_totalErrPos
#define __pyx_n_s_try_loop __pyx_mstate_global->__pyx_n_s_try_loop
#define __pyx_n_s_type __pyx_mstate_global->__pyx_n_s_type
#define __pyx_n_s_unpatterns __pyx_mstate_global->__pyx_n_s_unpatterns
#define __pyx_n_s_upperX __pyx_mstate_global->__pyx_n_s_upperX
#define __pyx_n_s_upperY __pyx_mstate_global->__pyx_n_s_upperY
#define __pyx_n_s_upperZ __pyx_mstate_global->__pyx_n_s_upperZ
#define __pyx_n_s_useFocus __pyx_mstate_global->__pyx_n_s_useFocus
#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_valMax __pyx_mstate_global->__pyx_n_s_valMax
#define __pyx_n_s_valMin __pyx_mstate_global->__pyx_n_s_valMin
#define __pyx_n_s_vals __pyx_mstate_global->__pyx_n_s_vals
#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value
#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
#define __pyx_n_s_variance __pyx_mstate_global->__pyx_n_s_variance
#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_w __pyx_mstate_global->__pyx_n_s_w
#define __pyx_n_s_weight __pyx_mstate_global->__pyx_n_s_weight
#define __pyx_n_s_weights __pyx_mstate_global->__pyx_n_s_weights
#define __pyx_n_s_width __pyx_mstate_global->__pyx_n_s_width
#define __pyx_n_s_write __pyx_mstate_global->__pyx_n_s_write
#define __pyx_n_s_writeFLAT __pyx_mstate_global->__pyx_n_s_writeFLAT
#define __pyx_n_s_writeYODA __pyx_mstate_global->__pyx_n_s_writeYODA
#define __pyx_n_s_writeYODA1 __pyx_mstate_global->__pyx_n_s_writeYODA1
#define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x
#define __pyx_n_s_xEdge __pyx_mstate_global->__pyx_n_s_xEdge
#define __pyx_n_s_xEdges __pyx_mstate_global->__pyx_n_s_xEdges
#define __pyx_n_s_xErr __pyx_mstate_global->__pyx_n_s_xErr
#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_xErrDn __pyx_mstate_global->__pyx_n_s_xErrDn
#define __pyx_n_s_xErrMinus __pyx_mstate_global->__pyx_n_s_xErrMinus
#define __pyx_n_s_xErrPlus __pyx_mstate_global->__pyx_n_s_xErrPlus
#define __pyx_n_s_xErrUp __pyx_mstate_global->__pyx_n_s_xErrUp
#define __pyx_n_s_xErrs __pyx_mstate_global->__pyx_n_s_xErrs
#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_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_xVal __pyx_mstate_global->__pyx_n_s_xVal
#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_xedges __pyx_mstate_global->__pyx_n_s_xedges
#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_y __pyx_mstate_global->__pyx_n_s_y
#define __pyx_n_s_yEdge __pyx_mstate_global->__pyx_n_s_yEdge
#define __pyx_n_s_yEdges __pyx_mstate_global->__pyx_n_s_yEdges
#define __pyx_n_s_yErr __pyx_mstate_global->__pyx_n_s_yErr
#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_yErrDn __pyx_mstate_global->__pyx_n_s_yErrDn
#define __pyx_n_s_yErrMinus __pyx_mstate_global->__pyx_n_s_yErrMinus
#define __pyx_n_s_yErrPlus __pyx_mstate_global->__pyx_n_s_yErrPlus
#define __pyx_n_s_yErrUp __pyx_mstate_global->__pyx_n_s_yErrUp
#define __pyx_n_s_yErrs __pyx_mstate_global->__pyx_n_s_yErrs
#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_yMid __pyx_mstate_global->__pyx_n_s_yMid
#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_yStdErr __pyx_mstate_global->__pyx_n_s_yStdErr
#define __pyx_n_s_yVal __pyx_mstate_global->__pyx_n_s_yVal
#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_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_zEdge __pyx_mstate_global->__pyx_n_s_zEdge
#define __pyx_n_s_zEdges __pyx_mstate_global->__pyx_n_s_zEdges
#define __pyx_n_s_zErr __pyx_mstate_global->__pyx_n_s_zErr
#define __pyx_n_s_zErrAvg __pyx_mstate_global->__pyx_n_s_zErrAvg
#define __pyx_n_s_zErrAvgs __pyx_mstate_global->__pyx_n_s_zErrAvgs
#define __pyx_n_s_zErrDn __pyx_mstate_global->__pyx_n_s_zErrDn
#define __pyx_n_s_zErrMinus __pyx_mstate_global->__pyx_n_s_zErrMinus
#define __pyx_n_s_zErrPlus __pyx_mstate_global->__pyx_n_s_zErrPlus
#define __pyx_n_s_zErrUp __pyx_mstate_global->__pyx_n_s_zErrUp
#define __pyx_n_s_zErrs __pyx_mstate_global->__pyx_n_s_zErrs
#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_zMean __pyx_mstate_global->__pyx_n_s_zMean
#define __pyx_n_s_zMid __pyx_mstate_global->__pyx_n_s_zMid
#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_zRMS __pyx_mstate_global->__pyx_n_s_zRMS
#define __pyx_n_s_zStdDev __pyx_mstate_global->__pyx_n_s_zStdDev
#define __pyx_n_s_zStdErr __pyx_mstate_global->__pyx_n_s_zStdErr
#define __pyx_n_s_zVal __pyx_mstate_global->__pyx_n_s_zVal
#define __pyx_n_s_zVals __pyx_mstate_global->__pyx_n_s_zVals
#define __pyx_n_s_zVariance __pyx_mstate_global->__pyx_n_s_zVariance
#define __pyx_n_s_zWidth __pyx_mstate_global->__pyx_n_s_zWidth
#define __pyx_n_s_zWidths __pyx_mstate_global->__pyx_n_s_zWidths
#define __pyx_float_2_ __pyx_mstate_global->__pyx_float_2_
#define __pyx_float_0_0 __pyx_mstate_global->__pyx_float_0_0
#define __pyx_float_1_0 __pyx_mstate_global->__pyx_float_1_0
#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_k__92 __pyx_mstate_global->__pyx_k__92
#define __pyx_k__93 __pyx_mstate_global->__pyx_k__93
#define __pyx_k__94 __pyx_mstate_global->__pyx_k__94
#define __pyx_k__95 __pyx_mstate_global->__pyx_k__95
#define __pyx_k__96 __pyx_mstate_global->__pyx_k__96
#define __pyx_k__97 __pyx_mstate_global->__pyx_k__97
#define __pyx_k__98 __pyx_mstate_global->__pyx_k__98
#define __pyx_k__99 __pyx_mstate_global->__pyx_k__99
#define __pyx_k__100 __pyx_mstate_global->__pyx_k__100
#define __pyx_k__101 __pyx_mstate_global->__pyx_k__101
#define __pyx_k__102 __pyx_mstate_global->__pyx_k__102
#define __pyx_k__103 __pyx_mstate_global->__pyx_k__103
#define __pyx_k__104 __pyx_mstate_global->__pyx_k__104
#define __pyx_k__105 __pyx_mstate_global->__pyx_k__105
#define __pyx_k__106 __pyx_mstate_global->__pyx_k__106
#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_
#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3
#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11
#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15
#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17
#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19
#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24
#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
#define __pyx_tuple__89 __pyx_mstate_global->__pyx_tuple__89
#define __pyx_tuple__90 __pyx_mstate_global->__pyx_tuple__90
#define __pyx_tuple__91 __pyx_mstate_global->__pyx_tuple__91
#define __pyx_tuple__107 __pyx_mstate_global->__pyx_tuple__107
#define __pyx_tuple__115 __pyx_mstate_global->__pyx_tuple__115
#define __pyx_tuple__117 __pyx_mstate_global->__pyx_tuple__117
#define __pyx_tuple__119 __pyx_mstate_global->__pyx_tuple__119
#define __pyx_tuple__121 __pyx_mstate_global->__pyx_tuple__121
#define __pyx_tuple__122 __pyx_mstate_global->__pyx_tuple__122
#define __pyx_tuple__124 __pyx_mstate_global->__pyx_tuple__124
#define __pyx_tuple__130 __pyx_mstate_global->__pyx_tuple__130
#define __pyx_tuple__133 __pyx_mstate_global->__pyx_tuple__133
#define __pyx_tuple__137 __pyx_mstate_global->__pyx_tuple__137
#define __pyx_tuple__139 __pyx_mstate_global->__pyx_tuple__139
#define __pyx_tuple__140 __pyx_mstate_global->__pyx_tuple__140
#define __pyx_tuple__141 __pyx_mstate_global->__pyx_tuple__141
#define __pyx_tuple__144 __pyx_mstate_global->__pyx_tuple__144
#define __pyx_tuple__152 __pyx_mstate_global->__pyx_tuple__152
#define __pyx_tuple__154 __pyx_mstate_global->__pyx_tuple__154
#define __pyx_tuple__155 __pyx_mstate_global->__pyx_tuple__155
#define __pyx_tuple__164 __pyx_mstate_global->__pyx_tuple__164
#define __pyx_tuple__166 __pyx_mstate_global->__pyx_tuple__166
#define __pyx_tuple__168 __pyx_mstate_global->__pyx_tuple__168
#define __pyx_tuple__169 __pyx_mstate_global->__pyx_tuple__169
#define __pyx_tuple__171 __pyx_mstate_global->__pyx_tuple__171
#define __pyx_tuple__172 __pyx_mstate_global->__pyx_tuple__172
#define __pyx_tuple__174 __pyx_mstate_global->__pyx_tuple__174
#define __pyx_tuple__177 __pyx_mstate_global->__pyx_tuple__177
#define __pyx_tuple__179 __pyx_mstate_global->__pyx_tuple__179
#define __pyx_tuple__182 __pyx_mstate_global->__pyx_tuple__182
#define __pyx_tuple__184 __pyx_mstate_global->__pyx_tuple__184
#define __pyx_tuple__201 __pyx_mstate_global->__pyx_tuple__201
#define __pyx_tuple__203 __pyx_mstate_global->__pyx_tuple__203
#define __pyx_tuple__205 __pyx_mstate_global->__pyx_tuple__205
#define __pyx_tuple__209 __pyx_mstate_global->__pyx_tuple__209
#define __pyx_tuple__227 __pyx_mstate_global->__pyx_tuple__227
#define __pyx_tuple__250 __pyx_mstate_global->__pyx_tuple__250
#define __pyx_tuple__290 __pyx_mstate_global->__pyx_tuple__290
#define __pyx_tuple__294 __pyx_mstate_global->__pyx_tuple__294
#define __pyx_tuple__296 __pyx_mstate_global->__pyx_tuple__296
#define __pyx_tuple__298 __pyx_mstate_global->__pyx_tuple__298
#define __pyx_tuple__301 __pyx_mstate_global->__pyx_tuple__301
#define __pyx_tuple__303 __pyx_mstate_global->__pyx_tuple__303
#define __pyx_tuple__304 __pyx_mstate_global->__pyx_tuple__304
#define __pyx_tuple__306 __pyx_mstate_global->__pyx_tuple__306
#define __pyx_tuple__308 __pyx_mstate_global->__pyx_tuple__308
#define __pyx_tuple__310 __pyx_mstate_global->__pyx_tuple__310
#define __pyx_tuple__316 __pyx_mstate_global->__pyx_tuple__316
#define __pyx_tuple__319 __pyx_mstate_global->__pyx_tuple__319
#define __pyx_tuple__322 __pyx_mstate_global->__pyx_tuple__322
#define __pyx_tuple__324 __pyx_mstate_global->__pyx_tuple__324
#define __pyx_tuple__326 __pyx_mstate_global->__pyx_tuple__326
#define __pyx_tuple__328 __pyx_mstate_global->__pyx_tuple__328
#define __pyx_tuple__330 __pyx_mstate_global->__pyx_tuple__330
#define __pyx_tuple__333 __pyx_mstate_global->__pyx_tuple__333
#define __pyx_tuple__335 __pyx_mstate_global->__pyx_tuple__335
#define __pyx_tuple__336 __pyx_mstate_global->__pyx_tuple__336
#define __pyx_tuple__339 __pyx_mstate_global->__pyx_tuple__339
#define __pyx_tuple__341 __pyx_mstate_global->__pyx_tuple__341
#define __pyx_tuple__342 __pyx_mstate_global->__pyx_tuple__342
#define __pyx_tuple__347 __pyx_mstate_global->__pyx_tuple__347
#define __pyx_tuple__349 __pyx_mstate_global->__pyx_tuple__349
#define __pyx_tuple__351 __pyx_mstate_global->__pyx_tuple__351
#define __pyx_tuple__353 __pyx_mstate_global->__pyx_tuple__353
#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__367 __pyx_mstate_global->__pyx_tuple__367
#define __pyx_tuple__369 __pyx_mstate_global->__pyx_tuple__369
#define __pyx_tuple__378 __pyx_mstate_global->__pyx_tuple__378
#define __pyx_tuple__380 __pyx_mstate_global->__pyx_tuple__380
#define __pyx_tuple__382 __pyx_mstate_global->__pyx_tuple__382
#define __pyx_tuple__385 __pyx_mstate_global->__pyx_tuple__385
#define __pyx_tuple__387 __pyx_mstate_global->__pyx_tuple__387
#define __pyx_tuple__389 __pyx_mstate_global->__pyx_tuple__389
#define __pyx_tuple__391 __pyx_mstate_global->__pyx_tuple__391
#define __pyx_tuple__393 __pyx_mstate_global->__pyx_tuple__393
#define __pyx_tuple__396 __pyx_mstate_global->__pyx_tuple__396
#define __pyx_tuple__401 __pyx_mstate_global->__pyx_tuple__401
#define __pyx_tuple__403 __pyx_mstate_global->__pyx_tuple__403
#define __pyx_tuple__405 __pyx_mstate_global->__pyx_tuple__405
#define __pyx_tuple__407 __pyx_mstate_global->__pyx_tuple__407
#define __pyx_tuple__409 __pyx_mstate_global->__pyx_tuple__409
#define __pyx_tuple__411 __pyx_mstate_global->__pyx_tuple__411
#define __pyx_tuple__412 __pyx_mstate_global->__pyx_tuple__412
#define __pyx_tuple__414 __pyx_mstate_global->__pyx_tuple__414
#define __pyx_tuple__416 __pyx_mstate_global->__pyx_tuple__416
#define __pyx_tuple__418 __pyx_mstate_global->__pyx_tuple__418
#define __pyx_tuple__420 __pyx_mstate_global->__pyx_tuple__420
#define __pyx_tuple__421 __pyx_mstate_global->__pyx_tuple__421
#define __pyx_tuple__423 __pyx_mstate_global->__pyx_tuple__423
#define __pyx_tuple__431 __pyx_mstate_global->__pyx_tuple__431
#define __pyx_tuple__433 __pyx_mstate_global->__pyx_tuple__433
#define __pyx_tuple__435 __pyx_mstate_global->__pyx_tuple__435
#define __pyx_tuple__441 __pyx_mstate_global->__pyx_tuple__441
#define __pyx_tuple__443 __pyx_mstate_global->__pyx_tuple__443
#define __pyx_tuple__449 __pyx_mstate_global->__pyx_tuple__449
#define __pyx_tuple__451 __pyx_mstate_global->__pyx_tuple__451
#define __pyx_tuple__453 __pyx_mstate_global->__pyx_tuple__453
#define __pyx_tuple__458 __pyx_mstate_global->__pyx_tuple__458
#define __pyx_tuple__460 __pyx_mstate_global->__pyx_tuple__460
#define __pyx_tuple__477 __pyx_mstate_global->__pyx_tuple__477
#define __pyx_tuple__481 __pyx_mstate_global->__pyx_tuple__481
#define __pyx_tuple__520 __pyx_mstate_global->__pyx_tuple__520
#define __pyx_tuple__522 __pyx_mstate_global->__pyx_tuple__522
#define __pyx_tuple__539 __pyx_mstate_global->__pyx_tuple__539
#define __pyx_tuple__543 __pyx_mstate_global->__pyx_tuple__543
#define __pyx_tuple__612 __pyx_mstate_global->__pyx_tuple__612
#define __pyx_tuple__614 __pyx_mstate_global->__pyx_tuple__614
#define __pyx_tuple__615 __pyx_mstate_global->__pyx_tuple__615
#define __pyx_tuple__617 __pyx_mstate_global->__pyx_tuple__617
#define __pyx_tuple__626 __pyx_mstate_global->__pyx_tuple__626
#define __pyx_tuple__630 __pyx_mstate_global->__pyx_tuple__630
#define __pyx_tuple__632 __pyx_mstate_global->__pyx_tuple__632
#define __pyx_tuple__636 __pyx_mstate_global->__pyx_tuple__636
#define __pyx_tuple__697 __pyx_mstate_global->__pyx_tuple__697
#define __pyx_tuple__746 __pyx_mstate_global->__pyx_tuple__746
#define __pyx_tuple__779 __pyx_mstate_global->__pyx_tuple__779
#define __pyx_tuple__864 __pyx_mstate_global->__pyx_tuple__864
#define __pyx_tuple__992 __pyx_mstate_global->__pyx_tuple__992
#define __pyx_tuple__996 __pyx_mstate_global->__pyx_tuple__996
#define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14
#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16
#define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18
#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20
#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
#define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23
#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25
#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__33 __pyx_mstate_global->__pyx_codeobj__33
#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__37 __pyx_mstate_global->__pyx_codeobj__37
#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39
#define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40
#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__59 __pyx_mstate_global->__pyx_codeobj__59
#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__63 __pyx_mstate_global->__pyx_codeobj__63
#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
#define __pyx_codeobj__65 __pyx_mstate_global->__pyx_codeobj__65
#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__86 __pyx_mstate_global->__pyx_codeobj__86
#define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87
#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88
#define __pyx_tuple__1004 __pyx_mstate_global->__pyx_tuple__1004
#define __pyx_tuple__1006 __pyx_mstate_global->__pyx_tuple__1006
#define __pyx_tuple__1023 __pyx_mstate_global->__pyx_tuple__1023
#define __pyx_tuple__1047 __pyx_mstate_global->__pyx_tuple__1047
#define __pyx_tuple__1056 __pyx_mstate_global->__pyx_tuple__1056
#define __pyx_tuple__1094 __pyx_mstate_global->__pyx_tuple__1094
#define __pyx_tuple__1107 __pyx_mstate_global->__pyx_tuple__1107
#define __pyx_tuple__1109 __pyx_mstate_global->__pyx_tuple__1109
#define __pyx_tuple__1111 __pyx_mstate_global->__pyx_tuple__1111
#define __pyx_tuple__1118 __pyx_mstate_global->__pyx_tuple__1118
#define __pyx_tuple__1133 __pyx_mstate_global->__pyx_tuple__1133
#define __pyx_tuple__1135 __pyx_mstate_global->__pyx_tuple__1135
#define __pyx_tuple__1166 __pyx_mstate_global->__pyx_tuple__1166
#define __pyx_tuple__1168 __pyx_mstate_global->__pyx_tuple__1168
#define __pyx_tuple__1216 __pyx_mstate_global->__pyx_tuple__1216
#define __pyx_tuple__1218 __pyx_mstate_global->__pyx_tuple__1218
#define __pyx_tuple__1225 __pyx_mstate_global->__pyx_tuple__1225
#define __pyx_tuple__1228 __pyx_mstate_global->__pyx_tuple__1228
#define __pyx_tuple__1230 __pyx_mstate_global->__pyx_tuple__1230
#define __pyx_tuple__1232 __pyx_mstate_global->__pyx_tuple__1232
#define __pyx_tuple__1234 __pyx_mstate_global->__pyx_tuple__1234
#define __pyx_tuple__1236 __pyx_mstate_global->__pyx_tuple__1236
#define __pyx_tuple__1239 __pyx_mstate_global->__pyx_tuple__1239
#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__116 __pyx_mstate_global->__pyx_codeobj__116
#define __pyx_codeobj__118 __pyx_mstate_global->__pyx_codeobj__118
#define __pyx_codeobj__120 __pyx_mstate_global->__pyx_codeobj__120
#define __pyx_codeobj__123 __pyx_mstate_global->__pyx_codeobj__123
#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__129 __pyx_mstate_global->__pyx_codeobj__129
#define __pyx_codeobj__131 __pyx_mstate_global->__pyx_codeobj__131
#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__138 __pyx_mstate_global->__pyx_codeobj__138
#define __pyx_codeobj__142 __pyx_mstate_global->__pyx_codeobj__142
#define __pyx_codeobj__143 __pyx_mstate_global->__pyx_codeobj__143
#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__153 __pyx_mstate_global->__pyx_codeobj__153
#define __pyx_codeobj__156 __pyx_mstate_global->__pyx_codeobj__156
#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__165 __pyx_mstate_global->__pyx_codeobj__165
#define __pyx_codeobj__167 __pyx_mstate_global->__pyx_codeobj__167
#define __pyx_codeobj__170 __pyx_mstate_global->__pyx_codeobj__170
#define __pyx_codeobj__173 __pyx_mstate_global->__pyx_codeobj__173
#define __pyx_codeobj__175 __pyx_mstate_global->__pyx_codeobj__175
#define __pyx_codeobj__176 __pyx_mstate_global->__pyx_codeobj__176
#define __pyx_codeobj__178 __pyx_mstate_global->__pyx_codeobj__178
#define __pyx_codeobj__180 __pyx_mstate_global->__pyx_codeobj__180
#define __pyx_codeobj__181 __pyx_mstate_global->__pyx_codeobj__181
#define __pyx_codeobj__183 __pyx_mstate_global->__pyx_codeobj__183
#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__194 __pyx_mstate_global->__pyx_codeobj__194
#define __pyx_codeobj__195 __pyx_mstate_global->__pyx_codeobj__195
#define __pyx_codeobj__196 __pyx_mstate_global->__pyx_codeobj__196
#define __pyx_codeobj__197 __pyx_mstate_global->__pyx_codeobj__197
#define __pyx_codeobj__198 __pyx_mstate_global->__pyx_codeobj__198
#define __pyx_codeobj__199 __pyx_mstate_global->__pyx_codeobj__199
#define __pyx_codeobj__200 __pyx_mstate_global->__pyx_codeobj__200
#define __pyx_codeobj__202 __pyx_mstate_global->__pyx_codeobj__202
#define __pyx_codeobj__204 __pyx_mstate_global->__pyx_codeobj__204
#define __pyx_codeobj__206 __pyx_mstate_global->__pyx_codeobj__206
#define __pyx_codeobj__207 __pyx_mstate_global->__pyx_codeobj__207
#define __pyx_codeobj__208 __pyx_mstate_global->__pyx_codeobj__208
#define __pyx_codeobj__210 __pyx_mstate_global->__pyx_codeobj__210
#define __pyx_codeobj__211 __pyx_mstate_global->__pyx_codeobj__211
#define __pyx_codeobj__212 __pyx_mstate_global->__pyx_codeobj__212
#define __pyx_codeobj__213 __pyx_mstate_global->__pyx_codeobj__213
#define __pyx_codeobj__214 __pyx_mstate_global->__pyx_codeobj__214
#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__218 __pyx_mstate_global->__pyx_codeobj__218
#define __pyx_codeobj__219 __pyx_mstate_global->__pyx_codeobj__219
#define __pyx_codeobj__220 __pyx_mstate_global->__pyx_codeobj__220
#define __pyx_codeobj__221 __pyx_mstate_global->__pyx_codeobj__221
#define __pyx_codeobj__222 __pyx_mstate_global->__pyx_codeobj__222
#define __pyx_codeobj__223 __pyx_mstate_global->__pyx_codeobj__223
#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__228 __pyx_mstate_global->__pyx_codeobj__228
#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__233 __pyx_mstate_global->__pyx_codeobj__233
#define __pyx_codeobj__234 __pyx_mstate_global->__pyx_codeobj__234
#define __pyx_codeobj__235 __pyx_mstate_global->__pyx_codeobj__235
#define __pyx_codeobj__236 __pyx_mstate_global->__pyx_codeobj__236
#define __pyx_codeobj__237 __pyx_mstate_global->__pyx_codeobj__237
#define __pyx_codeobj__238 __pyx_mstate_global->__pyx_codeobj__238
#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__252 __pyx_mstate_global->__pyx_codeobj__252
#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__258 __pyx_mstate_global->__pyx_codeobj__258
#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__262 __pyx_mstate_global->__pyx_codeobj__262
#define __pyx_codeobj__263 __pyx_mstate_global->__pyx_codeobj__263
#define __pyx_codeobj__264 __pyx_mstate_global->__pyx_codeobj__264
#define __pyx_codeobj__265 __pyx_mstate_global->__pyx_codeobj__265
#define __pyx_codeobj__266 __pyx_mstate_global->__pyx_codeobj__266
#define __pyx_codeobj__267 __pyx_mstate_global->__pyx_codeobj__267
#define __pyx_codeobj__268 __pyx_mstate_global->__pyx_codeobj__268
#define __pyx_codeobj__269 __pyx_mstate_global->__pyx_codeobj__269
#define __pyx_codeobj__270 __pyx_mstate_global->__pyx_codeobj__270
#define __pyx_codeobj__271 __pyx_mstate_global->__pyx_codeobj__271
#define __pyx_codeobj__272 __pyx_mstate_global->__pyx_codeobj__272
#define __pyx_codeobj__273 __pyx_mstate_global->__pyx_codeobj__273
#define __pyx_codeobj__274 __pyx_mstate_global->__pyx_codeobj__274
#define __pyx_codeobj__275 __pyx_mstate_global->__pyx_codeobj__275
#define __pyx_codeobj__276 __pyx_mstate_global->__pyx_codeobj__276
#define __pyx_codeobj__277 __pyx_mstate_global->__pyx_codeobj__277
#define __pyx_codeobj__278 __pyx_mstate_global->__pyx_codeobj__278
#define __pyx_codeobj__279 __pyx_mstate_global->__pyx_codeobj__279
#define __pyx_codeobj__280 __pyx_mstate_global->__pyx_codeobj__280
#define __pyx_codeobj__281 __pyx_mstate_global->__pyx_codeobj__281
#define __pyx_codeobj__282 __pyx_mstate_global->__pyx_codeobj__282
#define __pyx_codeobj__283 __pyx_mstate_global->__pyx_codeobj__283
#define __pyx_codeobj__284 __pyx_mstate_global->__pyx_codeobj__284
#define __pyx_codeobj__285 __pyx_mstate_global->__pyx_codeobj__285
#define __pyx_codeobj__286 __pyx_mstate_global->__pyx_codeobj__286
#define __pyx_codeobj__287 __pyx_mstate_global->__pyx_codeobj__287
#define __pyx_codeobj__288 __pyx_mstate_global->__pyx_codeobj__288
#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__297 __pyx_mstate_global->__pyx_codeobj__297
#define __pyx_codeobj__299 __pyx_mstate_global->__pyx_codeobj__299
#define __pyx_codeobj__300 __pyx_mstate_global->__pyx_codeobj__300
#define __pyx_codeobj__302 __pyx_mstate_global->__pyx_codeobj__302
#define __pyx_codeobj__305 __pyx_mstate_global->__pyx_codeobj__305
#define __pyx_codeobj__307 __pyx_mstate_global->__pyx_codeobj__307
#define __pyx_codeobj__309 __pyx_mstate_global->__pyx_codeobj__309
#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__315 __pyx_mstate_global->__pyx_codeobj__315
#define __pyx_codeobj__317 __pyx_mstate_global->__pyx_codeobj__317
#define __pyx_codeobj__318 __pyx_mstate_global->__pyx_codeobj__318
#define __pyx_codeobj__320 __pyx_mstate_global->__pyx_codeobj__320
#define __pyx_codeobj__321 __pyx_mstate_global->__pyx_codeobj__321
#define __pyx_codeobj__323 __pyx_mstate_global->__pyx_codeobj__323
#define __pyx_codeobj__325 __pyx_mstate_global->__pyx_codeobj__325
#define __pyx_codeobj__327 __pyx_mstate_global->__pyx_codeobj__327
#define __pyx_codeobj__329 __pyx_mstate_global->__pyx_codeobj__329
#define __pyx_codeobj__331 __pyx_mstate_global->__pyx_codeobj__331
#define __pyx_codeobj__332 __pyx_mstate_global->__pyx_codeobj__332
#define __pyx_codeobj__334 __pyx_mstate_global->__pyx_codeobj__334
#define __pyx_codeobj__337 __pyx_mstate_global->__pyx_codeobj__337
#define __pyx_codeobj__338 __pyx_mstate_global->__pyx_codeobj__338
#define __pyx_codeobj__340 __pyx_mstate_global->__pyx_codeobj__340
#define __pyx_codeobj__343 __pyx_mstate_global->__pyx_codeobj__343
#define __pyx_codeobj__344 __pyx_mstate_global->__pyx_codeobj__344
#define __pyx_codeobj__345 __pyx_mstate_global->__pyx_codeobj__345
#define __pyx_codeobj__346 __pyx_mstate_global->__pyx_codeobj__346
#define __pyx_codeobj__348 __pyx_mstate_global->__pyx_codeobj__348
#define __pyx_codeobj__350 __pyx_mstate_global->__pyx_codeobj__350
#define __pyx_codeobj__352 __pyx_mstate_global->__pyx_codeobj__352
#define __pyx_codeobj__354 __pyx_mstate_global->__pyx_codeobj__354
#define __pyx_codeobj__355 __pyx_mstate_global->__pyx_codeobj__355
#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__365 __pyx_mstate_global->__pyx_codeobj__365
#define __pyx_codeobj__366 __pyx_mstate_global->__pyx_codeobj__366
#define __pyx_codeobj__368 __pyx_mstate_global->__pyx_codeobj__368
#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__379 __pyx_mstate_global->__pyx_codeobj__379
#define __pyx_codeobj__381 __pyx_mstate_global->__pyx_codeobj__381
#define __pyx_codeobj__383 __pyx_mstate_global->__pyx_codeobj__383
#define __pyx_codeobj__384 __pyx_mstate_global->__pyx_codeobj__384
#define __pyx_codeobj__386 __pyx_mstate_global->__pyx_codeobj__386
#define __pyx_codeobj__388 __pyx_mstate_global->__pyx_codeobj__388
#define __pyx_codeobj__390 __pyx_mstate_global->__pyx_codeobj__390
#define __pyx_codeobj__392 __pyx_mstate_global->__pyx_codeobj__392
#define __pyx_codeobj__394 __pyx_mstate_global->__pyx_codeobj__394
#define __pyx_codeobj__395 __pyx_mstate_global->__pyx_codeobj__395
#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__402 __pyx_mstate_global->__pyx_codeobj__402
#define __pyx_codeobj__404 __pyx_mstate_global->__pyx_codeobj__404
#define __pyx_codeobj__406 __pyx_mstate_global->__pyx_codeobj__406
#define __pyx_codeobj__408 __pyx_mstate_global->__pyx_codeobj__408
#define __pyx_codeobj__410 __pyx_mstate_global->__pyx_codeobj__410
#define __pyx_codeobj__413 __pyx_mstate_global->__pyx_codeobj__413
#define __pyx_codeobj__415 __pyx_mstate_global->__pyx_codeobj__415
#define __pyx_codeobj__417 __pyx_mstate_global->__pyx_codeobj__417
#define __pyx_codeobj__419 __pyx_mstate_global->__pyx_codeobj__419
#define __pyx_codeobj__422 __pyx_mstate_global->__pyx_codeobj__422
#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__432 __pyx_mstate_global->__pyx_codeobj__432
#define __pyx_codeobj__434 __pyx_mstate_global->__pyx_codeobj__434
#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__442 __pyx_mstate_global->__pyx_codeobj__442
#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__450 __pyx_mstate_global->__pyx_codeobj__450
#define __pyx_codeobj__452 __pyx_mstate_global->__pyx_codeobj__452
#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__459 __pyx_mstate_global->__pyx_codeobj__459
#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__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__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__493 __pyx_mstate_global->__pyx_codeobj__493
#define __pyx_codeobj__494 __pyx_mstate_global->__pyx_codeobj__494
#define __pyx_codeobj__495 __pyx_mstate_global->__pyx_codeobj__495
#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__500 __pyx_mstate_global->__pyx_codeobj__500
#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__521 __pyx_mstate_global->__pyx_codeobj__521
#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__536 __pyx_mstate_global->__pyx_codeobj__536
#define __pyx_codeobj__537 __pyx_mstate_global->__pyx_codeobj__537
#define __pyx_codeobj__538 __pyx_mstate_global->__pyx_codeobj__538
#define __pyx_codeobj__540 __pyx_mstate_global->__pyx_codeobj__540
#define __pyx_codeobj__541 __pyx_mstate_global->__pyx_codeobj__541
#define __pyx_codeobj__542 __pyx_mstate_global->__pyx_codeobj__542
#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__549 __pyx_mstate_global->__pyx_codeobj__549
#define __pyx_codeobj__550 __pyx_mstate_global->__pyx_codeobj__550
#define __pyx_codeobj__551 __pyx_mstate_global->__pyx_codeobj__551
#define __pyx_codeobj__552 __pyx_mstate_global->__pyx_codeobj__552
#define __pyx_codeobj__553 __pyx_mstate_global->__pyx_codeobj__553
#define __pyx_codeobj__554 __pyx_mstate_global->__pyx_codeobj__554
#define __pyx_codeobj__555 __pyx_mstate_global->__pyx_codeobj__555
#define __pyx_codeobj__556 __pyx_mstate_global->__pyx_codeobj__556
#define __pyx_codeobj__557 __pyx_mstate_global->__pyx_codeobj__557
#define __pyx_codeobj__558 __pyx_mstate_global->__pyx_codeobj__558
#define __pyx_codeobj__559 __pyx_mstate_global->__pyx_codeobj__559
#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__574 __pyx_mstate_global->__pyx_codeobj__574
#define __pyx_codeobj__575 __pyx_mstate_global->__pyx_codeobj__575
#define __pyx_codeobj__576 __pyx_mstate_global->__pyx_codeobj__576
#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__581 __pyx_mstate_global->__pyx_codeobj__581
#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__594 __pyx_mstate_global->__pyx_codeobj__594
#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__613 __pyx_mstate_global->__pyx_codeobj__613
#define __pyx_codeobj__616 __pyx_mstate_global->__pyx_codeobj__616
#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__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__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__658 __pyx_mstate_global->__pyx_codeobj__658
#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__662 __pyx_mstate_global->__pyx_codeobj__662
#define __pyx_codeobj__663 __pyx_mstate_global->__pyx_codeobj__663
#define __pyx_codeobj__664 __pyx_mstate_global->__pyx_codeobj__664
#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__673 __pyx_mstate_global->__pyx_codeobj__673
#define __pyx_codeobj__674 __pyx_mstate_global->__pyx_codeobj__674
#define __pyx_codeobj__675 __pyx_mstate_global->__pyx_codeobj__675
#define __pyx_codeobj__676 __pyx_mstate_global->__pyx_codeobj__676
#define __pyx_codeobj__677 __pyx_mstate_global->__pyx_codeobj__677
#define __pyx_codeobj__678 __pyx_mstate_global->__pyx_codeobj__678
#define __pyx_codeobj__679 __pyx_mstate_global->__pyx_codeobj__679
#define __pyx_codeobj__680 __pyx_mstate_global->__pyx_codeobj__680
#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__687 __pyx_mstate_global->__pyx_codeobj__687
#define __pyx_codeobj__688 __pyx_mstate_global->__pyx_codeobj__688
#define __pyx_codeobj__689 __pyx_mstate_global->__pyx_codeobj__689
#define __pyx_codeobj__690 __pyx_mstate_global->__pyx_codeobj__690
#define __pyx_codeobj__691 __pyx_mstate_global->__pyx_codeobj__691
#define __pyx_codeobj__692 __pyx_mstate_global->__pyx_codeobj__692
#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__699 __pyx_mstate_global->__pyx_codeobj__699
#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__704 __pyx_mstate_global->__pyx_codeobj__704
#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__718 __pyx_mstate_global->__pyx_codeobj__718
#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__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__761 __pyx_mstate_global->__pyx_codeobj__761
#define __pyx_codeobj__762 __pyx_mstate_global->__pyx_codeobj__762
#define __pyx_codeobj__763 __pyx_mstate_global->__pyx_codeobj__763
#define __pyx_codeobj__764 __pyx_mstate_global->__pyx_codeobj__764
#define __pyx_codeobj__765 __pyx_mstate_global->__pyx_codeobj__765
#define __pyx_codeobj__766 __pyx_mstate_global->__pyx_codeobj__766
#define __pyx_codeobj__767 __pyx_mstate_global->__pyx_codeobj__767
#define __pyx_codeobj__768 __pyx_mstate_global->__pyx_codeobj__768
#define __pyx_codeobj__769 __pyx_mstate_global->__pyx_codeobj__769
#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__774 __pyx_mstate_global->__pyx_codeobj__774
#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__780 __pyx_mstate_global->__pyx_codeobj__780
#define __pyx_codeobj__781 __pyx_mstate_global->__pyx_codeobj__781
#define __pyx_codeobj__782 __pyx_mstate_global->__pyx_codeobj__782
#define __pyx_codeobj__783 __pyx_mstate_global->__pyx_codeobj__783
#define __pyx_codeobj__784 __pyx_mstate_global->__pyx_codeobj__784
#define __pyx_codeobj__785 __pyx_mstate_global->__pyx_codeobj__785
#define __pyx_codeobj__786 __pyx_mstate_global->__pyx_codeobj__786
#define __pyx_codeobj__787 __pyx_mstate_global->__pyx_codeobj__787
#define __pyx_codeobj__788 __pyx_mstate_global->__pyx_codeobj__788
#define __pyx_codeobj__789 __pyx_mstate_global->__pyx_codeobj__789
#define __pyx_codeobj__790 __pyx_mstate_global->__pyx_codeobj__790
#define __pyx_codeobj__791 __pyx_mstate_global->__pyx_codeobj__791
#define __pyx_codeobj__792 __pyx_mstate_global->__pyx_codeobj__792
#define __pyx_codeobj__793 __pyx_mstate_global->__pyx_codeobj__793
#define __pyx_codeobj__794 __pyx_mstate_global->__pyx_codeobj__794
#define __pyx_codeobj__795 __pyx_mstate_global->__pyx_codeobj__795
#define __pyx_codeobj__796 __pyx_mstate_global->__pyx_codeobj__796
#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__800 __pyx_mstate_global->__pyx_codeobj__800
#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__805 __pyx_mstate_global->__pyx_codeobj__805
#define __pyx_codeobj__806 __pyx_mstate_global->__pyx_codeobj__806
#define __pyx_codeobj__807 __pyx_mstate_global->__pyx_codeobj__807
#define __pyx_codeobj__808 __pyx_mstate_global->__pyx_codeobj__808
#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__826 __pyx_mstate_global->__pyx_codeobj__826
#define __pyx_codeobj__827 __pyx_mstate_global->__pyx_codeobj__827
#define __pyx_codeobj__828 __pyx_mstate_global->__pyx_codeobj__828
#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__837 __pyx_mstate_global->__pyx_codeobj__837
#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__848 __pyx_mstate_global->__pyx_codeobj__848
#define __pyx_codeobj__849 __pyx_mstate_global->__pyx_codeobj__849
#define __pyx_codeobj__850 __pyx_mstate_global->__pyx_codeobj__850
#define __pyx_codeobj__851 __pyx_mstate_global->__pyx_codeobj__851
#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__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__871 __pyx_mstate_global->__pyx_codeobj__871
#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__878 __pyx_mstate_global->__pyx_codeobj__878
#define __pyx_codeobj__879 __pyx_mstate_global->__pyx_codeobj__879
#define __pyx_codeobj__880 __pyx_mstate_global->__pyx_codeobj__880
#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__886 __pyx_mstate_global->__pyx_codeobj__886
#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__892 __pyx_mstate_global->__pyx_codeobj__892
#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__924 __pyx_mstate_global->__pyx_codeobj__924
#define __pyx_codeobj__925 __pyx_mstate_global->__pyx_codeobj__925
#define __pyx_codeobj__926 __pyx_mstate_global->__pyx_codeobj__926
#define __pyx_codeobj__927 __pyx_mstate_global->__pyx_codeobj__927
#define __pyx_codeobj__928 __pyx_mstate_global->__pyx_codeobj__928
#define __pyx_codeobj__929 __pyx_mstate_global->__pyx_codeobj__929
#define __pyx_codeobj__930 __pyx_mstate_global->__pyx_codeobj__930
#define __pyx_codeobj__931 __pyx_mstate_global->__pyx_codeobj__931
#define __pyx_codeobj__932 __pyx_mstate_global->__pyx_codeobj__932
#define __pyx_codeobj__933 __pyx_mstate_global->__pyx_codeobj__933
#define __pyx_codeobj__934 __pyx_mstate_global->__pyx_codeobj__934
#define __pyx_codeobj__935 __pyx_mstate_global->__pyx_codeobj__935
#define __pyx_codeobj__936 __pyx_mstate_global->__pyx_codeobj__936
#define __pyx_codeobj__937 __pyx_mstate_global->__pyx_codeobj__937
#define __pyx_codeobj__938 __pyx_mstate_global->__pyx_codeobj__938
#define __pyx_codeobj__939 __pyx_mstate_global->__pyx_codeobj__939
#define __pyx_codeobj__940 __pyx_mstate_global->__pyx_codeobj__940
#define __pyx_codeobj__941 __pyx_mstate_global->__pyx_codeobj__941
#define __pyx_codeobj__942 __pyx_mstate_global->__pyx_codeobj__942
#define __pyx_codeobj__943 __pyx_mstate_global->__pyx_codeobj__943
#define __pyx_codeobj__944 __pyx_mstate_global->__pyx_codeobj__944
#define __pyx_codeobj__945 __pyx_mstate_global->__pyx_codeobj__945
#define __pyx_codeobj__946 __pyx_mstate_global->__pyx_codeobj__946
#define __pyx_codeobj__947 __pyx_mstate_global->__pyx_codeobj__947
#define __pyx_codeobj__948 __pyx_mstate_global->__pyx_codeobj__948
#define __pyx_codeobj__949 __pyx_mstate_global->__pyx_codeobj__949
#define __pyx_codeobj__950 __pyx_mstate_global->__pyx_codeobj__950
#define __pyx_codeobj__951 __pyx_mstate_global->__pyx_codeobj__951
#define __pyx_codeobj__952 __pyx_mstate_global->__pyx_codeobj__952
#define __pyx_codeobj__953 __pyx_mstate_global->__pyx_codeobj__953
#define __pyx_codeobj__954 __pyx_mstate_global->__pyx_codeobj__954
#define __pyx_codeobj__955 __pyx_mstate_global->__pyx_codeobj__955
#define __pyx_codeobj__956 __pyx_mstate_global->__pyx_codeobj__956
#define __pyx_codeobj__957 __pyx_mstate_global->__pyx_codeobj__957
#define __pyx_codeobj__958 __pyx_mstate_global->__pyx_codeobj__958
#define __pyx_codeobj__959 __pyx_mstate_global->__pyx_codeobj__959
#define __pyx_codeobj__960 __pyx_mstate_global->__pyx_codeobj__960
#define __pyx_codeobj__961 __pyx_mstate_global->__pyx_codeobj__961
#define __pyx_codeobj__962 __pyx_mstate_global->__pyx_codeobj__962
#define __pyx_codeobj__963 __pyx_mstate_global->__pyx_codeobj__963
#define __pyx_codeobj__964 __pyx_mstate_global->__pyx_codeobj__964
#define __pyx_codeobj__965 __pyx_mstate_global->__pyx_codeobj__965
#define __pyx_codeobj__966 __pyx_mstate_global->__pyx_codeobj__966
#define __pyx_codeobj__967 __pyx_mstate_global->__pyx_codeobj__967
#define __pyx_codeobj__968 __pyx_mstate_global->__pyx_codeobj__968
#define __pyx_codeobj__969 __pyx_mstate_global->__pyx_codeobj__969
#define __pyx_codeobj__970 __pyx_mstate_global->__pyx_codeobj__970
#define __pyx_codeobj__971 __pyx_mstate_global->__pyx_codeobj__971
#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__975 __pyx_mstate_global->__pyx_codeobj__975
#define __pyx_codeobj__976 __pyx_mstate_global->__pyx_codeobj__976
#define __pyx_codeobj__977 __pyx_mstate_global->__pyx_codeobj__977
#define __pyx_codeobj__978 __pyx_mstate_global->__pyx_codeobj__978
#define __pyx_codeobj__979 __pyx_mstate_global->__pyx_codeobj__979
#define __pyx_codeobj__980 __pyx_mstate_global->__pyx_codeobj__980
#define __pyx_codeobj__981 __pyx_mstate_global->__pyx_codeobj__981
#define __pyx_codeobj__982 __pyx_mstate_global->__pyx_codeobj__982
#define __pyx_codeobj__983 __pyx_mstate_global->__pyx_codeobj__983
#define __pyx_codeobj__984 __pyx_mstate_global->__pyx_codeobj__984
#define __pyx_codeobj__985 __pyx_mstate_global->__pyx_codeobj__985
#define __pyx_codeobj__986 __pyx_mstate_global->__pyx_codeobj__986
#define __pyx_codeobj__987 __pyx_mstate_global->__pyx_codeobj__987
#define __pyx_codeobj__988 __pyx_mstate_global->__pyx_codeobj__988
#define __pyx_codeobj__989 __pyx_mstate_global->__pyx_codeobj__989
#define __pyx_codeobj__990 __pyx_mstate_global->__pyx_codeobj__990
#define __pyx_codeobj__991 __pyx_mstate_global->__pyx_codeobj__991
#define __pyx_codeobj__993 __pyx_mstate_global->__pyx_codeobj__993
#define __pyx_codeobj__994 __pyx_mstate_global->__pyx_codeobj__994
#define __pyx_codeobj__995 __pyx_mstate_global->__pyx_codeobj__995
#define __pyx_codeobj__997 __pyx_mstate_global->__pyx_codeobj__997
#define __pyx_codeobj__998 __pyx_mstate_global->__pyx_codeobj__998
#define __pyx_codeobj__999 __pyx_mstate_global->__pyx_codeobj__999
#define __pyx_codeobj__1000 __pyx_mstate_global->__pyx_codeobj__1000
#define __pyx_codeobj__1001 __pyx_mstate_global->__pyx_codeobj__1001
#define __pyx_codeobj__1002 __pyx_mstate_global->__pyx_codeobj__1002
#define __pyx_codeobj__1003 __pyx_mstate_global->__pyx_codeobj__1003
#define __pyx_codeobj__1005 __pyx_mstate_global->__pyx_codeobj__1005
#define __pyx_codeobj__1007 __pyx_mstate_global->__pyx_codeobj__1007
#define __pyx_codeobj__1008 __pyx_mstate_global->__pyx_codeobj__1008
#define __pyx_codeobj__1009 __pyx_mstate_global->__pyx_codeobj__1009
#define __pyx_codeobj__1010 __pyx_mstate_global->__pyx_codeobj__1010
#define __pyx_codeobj__1011 __pyx_mstate_global->__pyx_codeobj__1011
#define __pyx_codeobj__1012 __pyx_mstate_global->__pyx_codeobj__1012
#define __pyx_codeobj__1013 __pyx_mstate_global->__pyx_codeobj__1013
#define __pyx_codeobj__1014 __pyx_mstate_global->__pyx_codeobj__1014
#define __pyx_codeobj__1015 __pyx_mstate_global->__pyx_codeobj__1015
#define __pyx_codeobj__1016 __pyx_mstate_global->__pyx_codeobj__1016
#define __pyx_codeobj__1017 __pyx_mstate_global->__pyx_codeobj__1017
#define __pyx_codeobj__1018 __pyx_mstate_global->__pyx_codeobj__1018
#define __pyx_codeobj__1019 __pyx_mstate_global->__pyx_codeobj__1019
#define __pyx_codeobj__1020 __pyx_mstate_global->__pyx_codeobj__1020
#define __pyx_codeobj__1021 __pyx_mstate_global->__pyx_codeobj__1021
#define __pyx_codeobj__1022 __pyx_mstate_global->__pyx_codeobj__1022
#define __pyx_codeobj__1024 __pyx_mstate_global->__pyx_codeobj__1024
#define __pyx_codeobj__1025 __pyx_mstate_global->__pyx_codeobj__1025
#define __pyx_codeobj__1026 __pyx_mstate_global->__pyx_codeobj__1026
#define __pyx_codeobj__1027 __pyx_mstate_global->__pyx_codeobj__1027
#define __pyx_codeobj__1028 __pyx_mstate_global->__pyx_codeobj__1028
#define __pyx_codeobj__1029 __pyx_mstate_global->__pyx_codeobj__1029
#define __pyx_codeobj__1030 __pyx_mstate_global->__pyx_codeobj__1030
#define __pyx_codeobj__1031 __pyx_mstate_global->__pyx_codeobj__1031
#define __pyx_codeobj__1032 __pyx_mstate_global->__pyx_codeobj__1032
#define __pyx_codeobj__1033 __pyx_mstate_global->__pyx_codeobj__1033
#define __pyx_codeobj__1034 __pyx_mstate_global->__pyx_codeobj__1034
#define __pyx_codeobj__1035 __pyx_mstate_global->__pyx_codeobj__1035
#define __pyx_codeobj__1036 __pyx_mstate_global->__pyx_codeobj__1036
#define __pyx_codeobj__1037 __pyx_mstate_global->__pyx_codeobj__1037
#define __pyx_codeobj__1038 __pyx_mstate_global->__pyx_codeobj__1038
#define __pyx_codeobj__1039 __pyx_mstate_global->__pyx_codeobj__1039
#define __pyx_codeobj__1040 __pyx_mstate_global->__pyx_codeobj__1040
#define __pyx_codeobj__1041 __pyx_mstate_global->__pyx_codeobj__1041
#define __pyx_codeobj__1042 __pyx_mstate_global->__pyx_codeobj__1042
#define __pyx_codeobj__1043 __pyx_mstate_global->__pyx_codeobj__1043
#define __pyx_codeobj__1044 __pyx_mstate_global->__pyx_codeobj__1044
#define __pyx_codeobj__1045 __pyx_mstate_global->__pyx_codeobj__1045
#define __pyx_codeobj__1046 __pyx_mstate_global->__pyx_codeobj__1046
#define __pyx_codeobj__1048 __pyx_mstate_global->__pyx_codeobj__1048
#define __pyx_codeobj__1049 __pyx_mstate_global->__pyx_codeobj__1049
#define __pyx_codeobj__1050 __pyx_mstate_global->__pyx_codeobj__1050
#define __pyx_codeobj__1051 __pyx_mstate_global->__pyx_codeobj__1051
#define __pyx_codeobj__1052 __pyx_mstate_global->__pyx_codeobj__1052
#define __pyx_codeobj__1053 __pyx_mstate_global->__pyx_codeobj__1053
#define __pyx_codeobj__1054 __pyx_mstate_global->__pyx_codeobj__1054
#define __pyx_codeobj__1055 __pyx_mstate_global->__pyx_codeobj__1055
#define __pyx_codeobj__1057 __pyx_mstate_global->__pyx_codeobj__1057
#define __pyx_codeobj__1058 __pyx_mstate_global->__pyx_codeobj__1058
#define __pyx_codeobj__1059 __pyx_mstate_global->__pyx_codeobj__1059
#define __pyx_codeobj__1060 __pyx_mstate_global->__pyx_codeobj__1060
#define __pyx_codeobj__1061 __pyx_mstate_global->__pyx_codeobj__1061
#define __pyx_codeobj__1062 __pyx_mstate_global->__pyx_codeobj__1062
#define __pyx_codeobj__1063 __pyx_mstate_global->__pyx_codeobj__1063
#define __pyx_codeobj__1064 __pyx_mstate_global->__pyx_codeobj__1064
#define __pyx_codeobj__1065 __pyx_mstate_global->__pyx_codeobj__1065
#define __pyx_codeobj__1066 __pyx_mstate_global->__pyx_codeobj__1066
#define __pyx_codeobj__1067 __pyx_mstate_global->__pyx_codeobj__1067
#define __pyx_codeobj__1068 __pyx_mstate_global->__pyx_codeobj__1068
#define __pyx_codeobj__1069 __pyx_mstate_global->__pyx_codeobj__1069
#define __pyx_codeobj__1070 __pyx_mstate_global->__pyx_codeobj__1070
#define __pyx_codeobj__1071 __pyx_mstate_global->__pyx_codeobj__1071
#define __pyx_codeobj__1072 __pyx_mstate_global->__pyx_codeobj__1072
#define __pyx_codeobj__1073 __pyx_mstate_global->__pyx_codeobj__1073
#define __pyx_codeobj__1074 __pyx_mstate_global->__pyx_codeobj__1074
#define __pyx_codeobj__1075 __pyx_mstate_global->__pyx_codeobj__1075
#define __pyx_codeobj__1076 __pyx_mstate_global->__pyx_codeobj__1076
#define __pyx_codeobj__1077 __pyx_mstate_global->__pyx_codeobj__1077
#define __pyx_codeobj__1078 __pyx_mstate_global->__pyx_codeobj__1078
#define __pyx_codeobj__1079 __pyx_mstate_global->__pyx_codeobj__1079
#define __pyx_codeobj__1080 __pyx_mstate_global->__pyx_codeobj__1080
#define __pyx_codeobj__1081 __pyx_mstate_global->__pyx_codeobj__1081
#define __pyx_codeobj__1082 __pyx_mstate_global->__pyx_codeobj__1082
#define __pyx_codeobj__1083 __pyx_mstate_global->__pyx_codeobj__1083
#define __pyx_codeobj__1084 __pyx_mstate_global->__pyx_codeobj__1084
#define __pyx_codeobj__1085 __pyx_mstate_global->__pyx_codeobj__1085
#define __pyx_codeobj__1086 __pyx_mstate_global->__pyx_codeobj__1086
#define __pyx_codeobj__1087 __pyx_mstate_global->__pyx_codeobj__1087
#define __pyx_codeobj__1088 __pyx_mstate_global->__pyx_codeobj__1088
#define __pyx_codeobj__1089 __pyx_mstate_global->__pyx_codeobj__1089
#define __pyx_codeobj__1090 __pyx_mstate_global->__pyx_codeobj__1090
#define __pyx_codeobj__1091 __pyx_mstate_global->__pyx_codeobj__1091
#define __pyx_codeobj__1092 __pyx_mstate_global->__pyx_codeobj__1092
#define __pyx_codeobj__1093 __pyx_mstate_global->__pyx_codeobj__1093
#define __pyx_codeobj__1095 __pyx_mstate_global->__pyx_codeobj__1095
#define __pyx_codeobj__1096 __pyx_mstate_global->__pyx_codeobj__1096
#define __pyx_codeobj__1097 __pyx_mstate_global->__pyx_codeobj__1097
#define __pyx_codeobj__1098 __pyx_mstate_global->__pyx_codeobj__1098
#define __pyx_codeobj__1099 __pyx_mstate_global->__pyx_codeobj__1099
#define __pyx_codeobj__1100 __pyx_mstate_global->__pyx_codeobj__1100
#define __pyx_codeobj__1101 __pyx_mstate_global->__pyx_codeobj__1101
#define __pyx_codeobj__1102 __pyx_mstate_global->__pyx_codeobj__1102
#define __pyx_codeobj__1103 __pyx_mstate_global->__pyx_codeobj__1103
#define __pyx_codeobj__1104 __pyx_mstate_global->__pyx_codeobj__1104
#define __pyx_codeobj__1105 __pyx_mstate_global->__pyx_codeobj__1105
#define __pyx_codeobj__1106 __pyx_mstate_global->__pyx_codeobj__1106
#define __pyx_codeobj__1108 __pyx_mstate_global->__pyx_codeobj__1108
#define __pyx_codeobj__1110 __pyx_mstate_global->__pyx_codeobj__1110
#define __pyx_codeobj__1112 __pyx_mstate_global->__pyx_codeobj__1112
#define __pyx_codeobj__1113 __pyx_mstate_global->__pyx_codeobj__1113
#define __pyx_codeobj__1114 __pyx_mstate_global->__pyx_codeobj__1114
#define __pyx_codeobj__1115 __pyx_mstate_global->__pyx_codeobj__1115
#define __pyx_codeobj__1116 __pyx_mstate_global->__pyx_codeobj__1116
#define __pyx_codeobj__1117 __pyx_mstate_global->__pyx_codeobj__1117
#define __pyx_codeobj__1119 __pyx_mstate_global->__pyx_codeobj__1119
#define __pyx_codeobj__1120 __pyx_mstate_global->__pyx_codeobj__1120
#define __pyx_codeobj__1121 __pyx_mstate_global->__pyx_codeobj__1121
#define __pyx_codeobj__1122 __pyx_mstate_global->__pyx_codeobj__1122
#define __pyx_codeobj__1123 __pyx_mstate_global->__pyx_codeobj__1123
#define __pyx_codeobj__1124 __pyx_mstate_global->__pyx_codeobj__1124
#define __pyx_codeobj__1125 __pyx_mstate_global->__pyx_codeobj__1125
#define __pyx_codeobj__1126 __pyx_mstate_global->__pyx_codeobj__1126
#define __pyx_codeobj__1127 __pyx_mstate_global->__pyx_codeobj__1127
#define __pyx_codeobj__1128 __pyx_mstate_global->__pyx_codeobj__1128
#define __pyx_codeobj__1129 __pyx_mstate_global->__pyx_codeobj__1129
#define __pyx_codeobj__1130 __pyx_mstate_global->__pyx_codeobj__1130
#define __pyx_codeobj__1131 __pyx_mstate_global->__pyx_codeobj__1131
#define __pyx_codeobj__1132 __pyx_mstate_global->__pyx_codeobj__1132
#define __pyx_codeobj__1134 __pyx_mstate_global->__pyx_codeobj__1134
#define __pyx_codeobj__1136 __pyx_mstate_global->__pyx_codeobj__1136
#define __pyx_codeobj__1137 __pyx_mstate_global->__pyx_codeobj__1137
#define __pyx_codeobj__1138 __pyx_mstate_global->__pyx_codeobj__1138
#define __pyx_codeobj__1139 __pyx_mstate_global->__pyx_codeobj__1139
#define __pyx_codeobj__1140 __pyx_mstate_global->__pyx_codeobj__1140
#define __pyx_codeobj__1141 __pyx_mstate_global->__pyx_codeobj__1141
#define __pyx_codeobj__1142 __pyx_mstate_global->__pyx_codeobj__1142
#define __pyx_codeobj__1143 __pyx_mstate_global->__pyx_codeobj__1143
#define __pyx_codeobj__1144 __pyx_mstate_global->__pyx_codeobj__1144
#define __pyx_codeobj__1145 __pyx_mstate_global->__pyx_codeobj__1145
#define __pyx_codeobj__1146 __pyx_mstate_global->__pyx_codeobj__1146
#define __pyx_codeobj__1147 __pyx_mstate_global->__pyx_codeobj__1147
#define __pyx_codeobj__1148 __pyx_mstate_global->__pyx_codeobj__1148
#define __pyx_codeobj__1149 __pyx_mstate_global->__pyx_codeobj__1149
#define __pyx_codeobj__1150 __pyx_mstate_global->__pyx_codeobj__1150
#define __pyx_codeobj__1151 __pyx_mstate_global->__pyx_codeobj__1151
#define __pyx_codeobj__1152 __pyx_mstate_global->__pyx_codeobj__1152
#define __pyx_codeobj__1153 __pyx_mstate_global->__pyx_codeobj__1153
#define __pyx_codeobj__1154 __pyx_mstate_global->__pyx_codeobj__1154
#define __pyx_codeobj__1155 __pyx_mstate_global->__pyx_codeobj__1155
#define __pyx_codeobj__1156 __pyx_mstate_global->__pyx_codeobj__1156
#define __pyx_codeobj__1157 __pyx_mstate_global->__pyx_codeobj__1157
#define __pyx_codeobj__1158 __pyx_mstate_global->__pyx_codeobj__1158
#define __pyx_codeobj__1159 __pyx_mstate_global->__pyx_codeobj__1159
#define __pyx_codeobj__1160 __pyx_mstate_global->__pyx_codeobj__1160
#define __pyx_codeobj__1161 __pyx_mstate_global->__pyx_codeobj__1161
#define __pyx_codeobj__1162 __pyx_mstate_global->__pyx_codeobj__1162
#define __pyx_codeobj__1163 __pyx_mstate_global->__pyx_codeobj__1163
#define __pyx_codeobj__1164 __pyx_mstate_global->__pyx_codeobj__1164
#define __pyx_codeobj__1165 __pyx_mstate_global->__pyx_codeobj__1165
#define __pyx_codeobj__1167 __pyx_mstate_global->__pyx_codeobj__1167
#define __pyx_codeobj__1169 __pyx_mstate_global->__pyx_codeobj__1169
#define __pyx_codeobj__1170 __pyx_mstate_global->__pyx_codeobj__1170
#define __pyx_codeobj__1171 __pyx_mstate_global->__pyx_codeobj__1171
#define __pyx_codeobj__1172 __pyx_mstate_global->__pyx_codeobj__1172
#define __pyx_codeobj__1173 __pyx_mstate_global->__pyx_codeobj__1173
#define __pyx_codeobj__1174 __pyx_mstate_global->__pyx_codeobj__1174
#define __pyx_codeobj__1175 __pyx_mstate_global->__pyx_codeobj__1175
#define __pyx_codeobj__1176 __pyx_mstate_global->__pyx_codeobj__1176
#define __pyx_codeobj__1177 __pyx_mstate_global->__pyx_codeobj__1177
#define __pyx_codeobj__1178 __pyx_mstate_global->__pyx_codeobj__1178
#define __pyx_codeobj__1179 __pyx_mstate_global->__pyx_codeobj__1179
#define __pyx_codeobj__1180 __pyx_mstate_global->__pyx_codeobj__1180
#define __pyx_codeobj__1181 __pyx_mstate_global->__pyx_codeobj__1181
#define __pyx_codeobj__1182 __pyx_mstate_global->__pyx_codeobj__1182
#define __pyx_codeobj__1183 __pyx_mstate_global->__pyx_codeobj__1183
#define __pyx_codeobj__1184 __pyx_mstate_global->__pyx_codeobj__1184
#define __pyx_codeobj__1185 __pyx_mstate_global->__pyx_codeobj__1185
#define __pyx_codeobj__1186 __pyx_mstate_global->__pyx_codeobj__1186
#define __pyx_codeobj__1187 __pyx_mstate_global->__pyx_codeobj__1187
#define __pyx_codeobj__1188 __pyx_mstate_global->__pyx_codeobj__1188
#define __pyx_codeobj__1189 __pyx_mstate_global->__pyx_codeobj__1189
#define __pyx_codeobj__1190 __pyx_mstate_global->__pyx_codeobj__1190
#define __pyx_codeobj__1191 __pyx_mstate_global->__pyx_codeobj__1191
#define __pyx_codeobj__1192 __pyx_mstate_global->__pyx_codeobj__1192
#define __pyx_codeobj__1193 __pyx_mstate_global->__pyx_codeobj__1193
#define __pyx_codeobj__1194 __pyx_mstate_global->__pyx_codeobj__1194
#define __pyx_codeobj__1195 __pyx_mstate_global->__pyx_codeobj__1195
#define __pyx_codeobj__1196 __pyx_mstate_global->__pyx_codeobj__1196
#define __pyx_codeobj__1197 __pyx_mstate_global->__pyx_codeobj__1197
#define __pyx_codeobj__1198 __pyx_mstate_global->__pyx_codeobj__1198
#define __pyx_codeobj__1199 __pyx_mstate_global->__pyx_codeobj__1199
#define __pyx_codeobj__1200 __pyx_mstate_global->__pyx_codeobj__1200
#define __pyx_codeobj__1201 __pyx_mstate_global->__pyx_codeobj__1201
#define __pyx_codeobj__1202 __pyx_mstate_global->__pyx_codeobj__1202
#define __pyx_codeobj__1203 __pyx_mstate_global->__pyx_codeobj__1203
#define __pyx_codeobj__1204 __pyx_mstate_global->__pyx_codeobj__1204
#define __pyx_codeobj__1205 __pyx_mstate_global->__pyx_codeobj__1205
#define __pyx_codeobj__1206 __pyx_mstate_global->__pyx_codeobj__1206
#define __pyx_codeobj__1207 __pyx_mstate_global->__pyx_codeobj__1207
#define __pyx_codeobj__1208 __pyx_mstate_global->__pyx_codeobj__1208
#define __pyx_codeobj__1209 __pyx_mstate_global->__pyx_codeobj__1209
#define __pyx_codeobj__1210 __pyx_mstate_global->__pyx_codeobj__1210
#define __pyx_codeobj__1211 __pyx_mstate_global->__pyx_codeobj__1211
#define __pyx_codeobj__1212 __pyx_mstate_global->__pyx_codeobj__1212
#define __pyx_codeobj__1213 __pyx_mstate_global->__pyx_codeobj__1213
#define __pyx_codeobj__1214 __pyx_mstate_global->__pyx_codeobj__1214
#define __pyx_codeobj__1215 __pyx_mstate_global->__pyx_codeobj__1215
#define __pyx_codeobj__1217 __pyx_mstate_global->__pyx_codeobj__1217
#define __pyx_codeobj__1219 __pyx_mstate_global->__pyx_codeobj__1219
#define __pyx_codeobj__1220 __pyx_mstate_global->__pyx_codeobj__1220
#define __pyx_codeobj__1221 __pyx_mstate_global->__pyx_codeobj__1221
#define __pyx_codeobj__1222 __pyx_mstate_global->__pyx_codeobj__1222
#define __pyx_codeobj__1223 __pyx_mstate_global->__pyx_codeobj__1223
#define __pyx_codeobj__1224 __pyx_mstate_global->__pyx_codeobj__1224
#define __pyx_codeobj__1226 __pyx_mstate_global->__pyx_codeobj__1226
#define __pyx_codeobj__1227 __pyx_mstate_global->__pyx_codeobj__1227
#define __pyx_codeobj__1229 __pyx_mstate_global->__pyx_codeobj__1229
#define __pyx_codeobj__1231 __pyx_mstate_global->__pyx_codeobj__1231
#define __pyx_codeobj__1233 __pyx_mstate_global->__pyx_codeobj__1233
#define __pyx_codeobj__1235 __pyx_mstate_global->__pyx_codeobj__1235
#define __pyx_codeobj__1237 __pyx_mstate_global->__pyx_codeobj__1237
#define __pyx_codeobj__1238 __pyx_mstate_global->__pyx_codeobj__1238
#define __pyx_codeobj__1240 __pyx_mstate_global->__pyx_codeobj__1240
#define __pyx_codeobj__1241 __pyx_mstate_global->__pyx_codeobj__1241
#define __pyx_codeobj__1242 __pyx_mstate_global->__pyx_codeobj__1242
#define __pyx_codeobj__1243 __pyx_mstate_global->__pyx_codeobj__1243
#define __pyx_codeobj__1244 __pyx_mstate_global->__pyx_codeobj__1244
#define __pyx_codeobj__1245 __pyx_mstate_global->__pyx_codeobj__1245
#define __pyx_codeobj__1246 __pyx_mstate_global->__pyx_codeobj__1246
#define __pyx_codeobj__1247 __pyx_mstate_global->__pyx_codeobj__1247
#define __pyx_codeobj__1248 __pyx_mstate_global->__pyx_codeobj__1248
#define __pyx_codeobj__1249 __pyx_mstate_global->__pyx_codeobj__1249
#define __pyx_codeobj__1250 __pyx_mstate_global->__pyx_codeobj__1250
#define __pyx_codeobj__1251 __pyx_mstate_global->__pyx_codeobj__1251
#define __pyx_codeobj__1252 __pyx_mstate_global->__pyx_codeobj__1252
#define __pyx_codeobj__1253 __pyx_mstate_global->__pyx_codeobj__1253
#define __pyx_codeobj__1254 __pyx_mstate_global->__pyx_codeobj__1254
#define __pyx_codeobj__1255 __pyx_mstate_global->__pyx_codeobj__1255
#define __pyx_codeobj__1256 __pyx_mstate_global->__pyx_codeobj__1256
#define __pyx_codeobj__1257 __pyx_mstate_global->__pyx_codeobj__1257
#define __pyx_codeobj__1258 __pyx_mstate_global->__pyx_codeobj__1258
#define __pyx_codeobj__1259 __pyx_mstate_global->__pyx_codeobj__1259
#define __pyx_codeobj__1260 __pyx_mstate_global->__pyx_codeobj__1260
#define __pyx_codeobj__1261 __pyx_mstate_global->__pyx_codeobj__1261
#define __pyx_codeobj__1262 __pyx_mstate_global->__pyx_codeobj__1262
#define __pyx_codeobj__1263 __pyx_mstate_global->__pyx_codeobj__1263
#define __pyx_codeobj__1264 __pyx_mstate_global->__pyx_codeobj__1264
#define __pyx_codeobj__1265 __pyx_mstate_global->__pyx_codeobj__1265
#define __pyx_codeobj__1266 __pyx_mstate_global->__pyx_codeobj__1266
#define __pyx_codeobj__1267 __pyx_mstate_global->__pyx_codeobj__1267
#define __pyx_codeobj__1268 __pyx_mstate_global->__pyx_codeobj__1268
#define __pyx_codeobj__1269 __pyx_mstate_global->__pyx_codeobj__1269
#define __pyx_codeobj__1270 __pyx_mstate_global->__pyx_codeobj__1270
#define __pyx_codeobj__1271 __pyx_mstate_global->__pyx_codeobj__1271
#define __pyx_codeobj__1272 __pyx_mstate_global->__pyx_codeobj__1272
#define __pyx_codeobj__1273 __pyx_mstate_global->__pyx_codeobj__1273
#define __pyx_codeobj__1274 __pyx_mstate_global->__pyx_codeobj__1274
#define __pyx_codeobj__1275 __pyx_mstate_global->__pyx_codeobj__1275
#define __pyx_codeobj__1276 __pyx_mstate_global->__pyx_codeobj__1276
#define __pyx_codeobj__1277 __pyx_mstate_global->__pyx_codeobj__1277
#define __pyx_codeobj__1278 __pyx_mstate_global->__pyx_codeobj__1278
#define __pyx_codeobj__1279 __pyx_mstate_global->__pyx_codeobj__1279
#define __pyx_codeobj__1280 __pyx_mstate_global->__pyx_codeobj__1280
#define __pyx_codeobj__1281 __pyx_mstate_global->__pyx_codeobj__1281
#define __pyx_codeobj__1282 __pyx_mstate_global->__pyx_codeobj__1282
#define __pyx_codeobj__1283 __pyx_mstate_global->__pyx_codeobj__1283
#define __pyx_codeobj__1284 __pyx_mstate_global->__pyx_codeobj__1284
#define __pyx_codeobj__1285 __pyx_mstate_global->__pyx_codeobj__1285
#define __pyx_codeobj__1286 __pyx_mstate_global->__pyx_codeobj__1286
#define __pyx_codeobj__1287 __pyx_mstate_global->__pyx_codeobj__1287
#define __pyx_codeobj__1288 __pyx_mstate_global->__pyx_codeobj__1288
#define __pyx_codeobj__1289 __pyx_mstate_global->__pyx_codeobj__1289
#define __pyx_codeobj__1290 __pyx_mstate_global->__pyx_codeobj__1290
#define __pyx_codeobj__1291 __pyx_mstate_global->__pyx_codeobj__1291
#define __pyx_codeobj__1292 __pyx_mstate_global->__pyx_codeobj__1292
#define __pyx_codeobj__1293 __pyx_mstate_global->__pyx_codeobj__1293
#define __pyx_codeobj__1294 __pyx_mstate_global->__pyx_codeobj__1294
#define __pyx_codeobj__1295 __pyx_mstate_global->__pyx_codeobj__1295
#define __pyx_codeobj__1296 __pyx_mstate_global->__pyx_codeobj__1296
#define __pyx_codeobj__1297 __pyx_mstate_global->__pyx_codeobj__1297
#define __pyx_codeobj__1298 __pyx_mstate_global->__pyx_codeobj__1298
#define __pyx_codeobj__1299 __pyx_mstate_global->__pyx_codeobj__1299
#define __pyx_codeobj__1300 __pyx_mstate_global->__pyx_codeobj__1300
#define __pyx_codeobj__1301 __pyx_mstate_global->__pyx_codeobj__1301
#define __pyx_codeobj__1302 __pyx_mstate_global->__pyx_codeobj__1302
#define __pyx_codeobj__1303 __pyx_mstate_global->__pyx_codeobj__1303
#define __pyx_codeobj__1304 __pyx_mstate_global->__pyx_codeobj__1304
#define __pyx_codeobj__1305 __pyx_mstate_global->__pyx_codeobj__1305
#define __pyx_codeobj__1306 __pyx_mstate_global->__pyx_codeobj__1306
#define __pyx_codeobj__1307 __pyx_mstate_global->__pyx_codeobj__1307
#define __pyx_codeobj__1308 __pyx_mstate_global->__pyx_codeobj__1308
#define __pyx_codeobj__1309 __pyx_mstate_global->__pyx_codeobj__1309
#define __pyx_codeobj__1310 __pyx_mstate_global->__pyx_codeobj__1310
#define __pyx_codeobj__1311 __pyx_mstate_global->__pyx_codeobj__1311
#define __pyx_codeobj__1312 __pyx_mstate_global->__pyx_codeobj__1312
#define __pyx_codeobj__1313 __pyx_mstate_global->__pyx_codeobj__1313
#define __pyx_codeobj__1314 __pyx_mstate_global->__pyx_codeobj__1314
#define __pyx_codeobj__1315 __pyx_mstate_global->__pyx_codeobj__1315
#define __pyx_codeobj__1316 __pyx_mstate_global->__pyx_codeobj__1316
#define __pyx_codeobj__1317 __pyx_mstate_global->__pyx_codeobj__1317
#define __pyx_codeobj__1318 __pyx_mstate_global->__pyx_codeobj__1318
#define __pyx_codeobj__1319 __pyx_mstate_global->__pyx_codeobj__1319
#define __pyx_codeobj__1320 __pyx_mstate_global->__pyx_codeobj__1320
#define __pyx_codeobj__1321 __pyx_mstate_global->__pyx_codeobj__1321
#define __pyx_codeobj__1322 __pyx_mstate_global->__pyx_codeobj__1322
#define __pyx_codeobj__1323 __pyx_mstate_global->__pyx_codeobj__1323
#define __pyx_codeobj__1324 __pyx_mstate_global->__pyx_codeobj__1324
#define __pyx_codeobj__1325 __pyx_mstate_global->__pyx_codeobj__1325
#define __pyx_codeobj__1326 __pyx_mstate_global->__pyx_codeobj__1326
#define __pyx_codeobj__1327 __pyx_mstate_global->__pyx_codeobj__1327
#define __pyx_codeobj__1328 __pyx_mstate_global->__pyx_codeobj__1328
#define __pyx_codeobj__1329 __pyx_mstate_global->__pyx_codeobj__1329
#define __pyx_codeobj__1330 __pyx_mstate_global->__pyx_codeobj__1330
#define __pyx_codeobj__1331 __pyx_mstate_global->__pyx_codeobj__1331
#define __pyx_codeobj__1332 __pyx_mstate_global->__pyx_codeobj__1332
#define __pyx_codeobj__1333 __pyx_mstate_global->__pyx_codeobj__1333
#define __pyx_codeobj__1334 __pyx_mstate_global->__pyx_codeobj__1334
#define __pyx_codeobj__1335 __pyx_mstate_global->__pyx_codeobj__1335
#define __pyx_codeobj__1336 __pyx_mstate_global->__pyx_codeobj__1336
#define __pyx_codeobj__1337 __pyx_mstate_global->__pyx_codeobj__1337
#define __pyx_codeobj__1338 __pyx_mstate_global->__pyx_codeobj__1338
#define __pyx_codeobj__1339 __pyx_mstate_global->__pyx_codeobj__1339
#define __pyx_codeobj__1340 __pyx_mstate_global->__pyx_codeobj__1340
#define __pyx_codeobj__1341 __pyx_mstate_global->__pyx_codeobj__1341
#define __pyx_codeobj__1342 __pyx_mstate_global->__pyx_codeobj__1342
#define __pyx_codeobj__1343 __pyx_mstate_global->__pyx_codeobj__1343
#define __pyx_codeobj__1344 __pyx_mstate_global->__pyx_codeobj__1344
#define __pyx_codeobj__1345 __pyx_mstate_global->__pyx_codeobj__1345
#define __pyx_codeobj__1346 __pyx_mstate_global->__pyx_codeobj__1346
#define __pyx_codeobj__1347 __pyx_mstate_global->__pyx_codeobj__1347
#define __pyx_codeobj__1348 __pyx_mstate_global->__pyx_codeobj__1348
#define __pyx_codeobj__1349 __pyx_mstate_global->__pyx_codeobj__1349
#define __pyx_codeobj__1350 __pyx_mstate_global->__pyx_codeobj__1350
#define __pyx_codeobj__1351 __pyx_mstate_global->__pyx_codeobj__1351
#define __pyx_codeobj__1352 __pyx_mstate_global->__pyx_codeobj__1352
#define __pyx_codeobj__1353 __pyx_mstate_global->__pyx_codeobj__1353
#define __pyx_codeobj__1354 __pyx_mstate_global->__pyx_codeobj__1354
#define __pyx_codeobj__1355 __pyx_mstate_global->__pyx_codeobj__1355
#define __pyx_codeobj__1356 __pyx_mstate_global->__pyx_codeobj__1356
#define __pyx_codeobj__1357 __pyx_mstate_global->__pyx_codeobj__1357
#define __pyx_codeobj__1358 __pyx_mstate_global->__pyx_codeobj__1358
#define __pyx_codeobj__1359 __pyx_mstate_global->__pyx_codeobj__1359
#define __pyx_codeobj__1360 __pyx_mstate_global->__pyx_codeobj__1360
#define __pyx_codeobj__1361 __pyx_mstate_global->__pyx_codeobj__1361
#define __pyx_codeobj__1362 __pyx_mstate_global->__pyx_codeobj__1362
#define __pyx_codeobj__1363 __pyx_mstate_global->__pyx_codeobj__1363
#define __pyx_codeobj__1364 __pyx_mstate_global->__pyx_codeobj__1364
#define __pyx_codeobj__1365 __pyx_mstate_global->__pyx_codeobj__1365
#define __pyx_codeobj__1366 __pyx_mstate_global->__pyx_codeobj__1366
#define __pyx_codeobj__1367 __pyx_mstate_global->__pyx_codeobj__1367
#define __pyx_codeobj__1368 __pyx_mstate_global->__pyx_codeobj__1368
#define __pyx_codeobj__1369 __pyx_mstate_global->__pyx_codeobj__1369
#define __pyx_codeobj__1370 __pyx_mstate_global->__pyx_codeobj__1370
#define __pyx_codeobj__1371 __pyx_mstate_global->__pyx_codeobj__1371
#define __pyx_codeobj__1372 __pyx_mstate_global->__pyx_codeobj__1372
#define __pyx_codeobj__1373 __pyx_mstate_global->__pyx_codeobj__1373
#define __pyx_codeobj__1374 __pyx_mstate_global->__pyx_codeobj__1374
#define __pyx_codeobj__1375 __pyx_mstate_global->__pyx_codeobj__1375
#define __pyx_codeobj__1376 __pyx_mstate_global->__pyx_codeobj__1376
#define __pyx_codeobj__1377 __pyx_mstate_global->__pyx_codeobj__1377
#define __pyx_codeobj__1378 __pyx_mstate_global->__pyx_codeobj__1378
#define __pyx_codeobj__1379 __pyx_mstate_global->__pyx_codeobj__1379
#define __pyx_codeobj__1380 __pyx_mstate_global->__pyx_codeobj__1380
#define __pyx_codeobj__1381 __pyx_mstate_global->__pyx_codeobj__1381
#define __pyx_codeobj__1382 __pyx_mstate_global->__pyx_codeobj__1382
#define __pyx_codeobj__1383 __pyx_mstate_global->__pyx_codeobj__1383
#define __pyx_codeobj__1384 __pyx_mstate_global->__pyx_codeobj__1384
#define __pyx_codeobj__1385 __pyx_mstate_global->__pyx_codeobj__1385
#define __pyx_codeobj__1386 __pyx_mstate_global->__pyx_codeobj__1386
#define __pyx_codeobj__1387 __pyx_mstate_global->__pyx_codeobj__1387
#define __pyx_codeobj__1388 __pyx_mstate_global->__pyx_codeobj__1388
#define __pyx_codeobj__1389 __pyx_mstate_global->__pyx_codeobj__1389
#define __pyx_codeobj__1390 __pyx_mstate_global->__pyx_codeobj__1390
#define __pyx_codeobj__1391 __pyx_mstate_global->__pyx_codeobj__1391
#define __pyx_codeobj__1392 __pyx_mstate_global->__pyx_codeobj__1392
#define __pyx_codeobj__1393 __pyx_mstate_global->__pyx_codeobj__1393
#define __pyx_codeobj__1394 __pyx_mstate_global->__pyx_codeobj__1394
#define __pyx_codeobj__1395 __pyx_mstate_global->__pyx_codeobj__1395
#define __pyx_codeobj__1396 __pyx_mstate_global->__pyx_codeobj__1396
#define __pyx_codeobj__1397 __pyx_mstate_global->__pyx_codeobj__1397
#define __pyx_codeobj__1398 __pyx_mstate_global->__pyx_codeobj__1398
#define __pyx_codeobj__1399 __pyx_mstate_global->__pyx_codeobj__1399
#define __pyx_codeobj__1400 __pyx_mstate_global->__pyx_codeobj__1400
#define __pyx_codeobj__1401 __pyx_mstate_global->__pyx_codeobj__1401
#define __pyx_codeobj__1402 __pyx_mstate_global->__pyx_codeobj__1402
#define __pyx_codeobj__1403 __pyx_mstate_global->__pyx_codeobj__1403
#define __pyx_codeobj__1404 __pyx_mstate_global->__pyx_codeobj__1404
/* #### 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":32
 * @cname("__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_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(1, 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":38
 * @cname("__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_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(1, 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":44
 * @cname("__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_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(1, 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":50
 * @cname("__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_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(1, 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_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_6libcpp_6string_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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_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_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":56
 * @cname("__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_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(1, 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_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_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_6libcpp_6string_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", 1);

  /* "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(1, 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(1, 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_6libcpp_6string_std__in_string((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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_6libcpp_6string_std__in_string")
 * cdef string __pyx_convert_string_from_py_6libcpp_6string_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_6libcpp_6string_std__in_string(PyObject *__pyx_v_o) {
  Py_ssize_t __pyx_v_length;
  char const *__pyx_v_data;
  std::string __pyx_r;
  char const *__pyx_t_1;
  std::string __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "string.from_py":14
 * @cname("__pyx_convert_string_from_py_6libcpp_6string_std__in_string")
 * cdef string __pyx_convert_string_from_py_6libcpp_6string_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_6libcpp_6string_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(1, 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(1, 16, __pyx_L1_error)
  }
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "string.from_py":13
 * 
 * @cname("__pyx_convert_string_from_py_6libcpp_6string_std__in_string")
 * cdef string __pyx_convert_string_from_py_6libcpp_6string_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_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  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", 1);

  /* "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(1, 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(1, 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(1, 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;
}

/* "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", 1);

  /* "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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((double)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 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;
}

static std::vector<std::string>  __pyx_convert_vector_from_py_std_3a__3a_string(PyObject *__pyx_v_o) {
  std::vector<std::string>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<std::string>  __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;
  std::string __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_string", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_string(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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((std::string)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_string(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_std_3a__3a_string")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_string(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_std_3a__3a_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __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", 1);

  /* "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(1, 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(1, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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(1, 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(1, 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(1, 179, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 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(1, 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;
}

/* "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", 1);

  /* "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(1, 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(1, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 191, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(1, 191, __pyx_L1_error);
  __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;
}

/* "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", 1);

  /* "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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((int)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 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;
}

static std::vector<std::vector<double> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(PyObject *__pyx_v_o) {
  std::vector<std::vector<double> >  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<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;
  std::vector<double>  __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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_convert_vector_from_py_double(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((std::vector<double> )__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(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_std_3a__3a_vector_3c_double_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(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_std_3a__3a_vector_3c_double_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static std::vector<std::vector<int> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(PyObject *__pyx_v_o) {
  std::vector<std::vector<int> >  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<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;
  std::vector<int>  __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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_convert_vector_from_py_int(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((std::vector<int> )__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(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_std_3a__3a_vector_3c_int_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(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_std_3a__3a_vector_3c_int_3e___", __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_int")
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_int(std::vector<int>  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_int", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(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_int(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(1, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(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(1, 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_PyInt_From_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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_int")
 * cdef object __pyx_convert_vector_to_py_int(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_int", __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_std_3a__3a_vector_3c_std_3a__3a_string_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<std::vector<std::string> >  __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(PyObject *__pyx_v_o) {
  std::vector<std::vector<std::string> >  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<std::vector<std::string> >  __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;
  std::vector<std::string>  __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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_convert_vector_from_py_std_3a__3a_string(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((std::vector<std::string> )__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(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_std_3a__3a_vector_3c_std_3a__3a_string_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(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_std_3a__3a_vector_3c_std_3a__3a_string_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

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", 1);

  /* "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(1, 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(1, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 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(1, 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(1, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((size_t)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(1, 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_size_t")
 * cdef object __pyx_convert_vector_to_py_size_t(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_size_t(std::vector<size_t>  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_size_t", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_size_t")
 * cdef object __pyx_convert_vector_to_py_size_t(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_size_t(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(1, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_size_t")
 * cdef object __pyx_convert_vector_to_py_size_t(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(1, 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_PyInt_FromSize_t((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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_size_t")
 * cdef object __pyx_convert_vector_to_py_size_t(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_size_t", __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;
}

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___", 1);

  /* "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(1, 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(1, 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(1, 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;
}

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(std::vector<std::pair<double,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_pair_3c_double_2c_double_3e___", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_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_pair_3c_double_2c_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(1, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_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(1, 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_pair_to_py_double____double((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_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_pair_3c_double_2c_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;
}

/* "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", 1);

  /* "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", 1);

  /* "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", 1);

  /* "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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_owned_cls", 1);

  /* "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
  if (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;
    }
  }
  #endif
  {
    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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_borrowed_cls", 1);

  /* "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
  if (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;
    }
  }
  #endif
  {
    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;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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:;
  return __pyx_r;
}

/* "yoda/core.pyx":28
 * 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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("version (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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", 1);

  /* "yoda/core.pyx":30
 * 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_6libcpp_6string_std__in_string(YODA::version()); 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
 * 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":32
 *     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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getLibPath (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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", 1);

  /* "yoda/core.pyx":34
 * 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_6libcpp_6string_std__in_string(YODA::getLibPath()); 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.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":36
 *     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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDataPath (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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", 1);

  /* "yoda/core.pyx":38
 * 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_6libcpp_6string_std__in_string(YODA::getDataPath()); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":36
 *     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":40
 *     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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getYodaDataPath (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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", 1);

  /* "yoda/core.pyx":42
 * def getYodaDataPath():
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()             # <<<<<<<<<<<<<<
 * 
 * include "include/AnalysisObject.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, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":40
 *     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/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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(9, 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:;
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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;
  YODA::AnalysisObject *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(9, 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:;
}

/* "include/AnalysisObject.pyx":25
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/AnalysisObject.pyx":27
 *     def type(self):
 *         "String identifier for this type"
 *         return self.aoptr().type()             # <<<<<<<<<<<<<<
 * 
 *     def dim(self):
 */
  __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(9, 27, __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(9, 27, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":25
 * 
 * 
 *     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":29
 *         return self.aoptr().type()
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/AnalysisObject.pyx":31
 *     def dim(self):
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()             # <<<<<<<<<<<<<<
 * 
 *     def annotations(self):
 */
  __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(9, 31, __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(9, 31, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":29
 *         return self.aoptr().type()
 * 
 *     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":33
 *         return self.aoptr().dim()
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotations (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/AnalysisObject.pyx":36
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 *         return [ a for a in self.aoptr().annotations() ]             # <<<<<<<<<<<<<<
 * 
 *     def annotationsDict(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 36, __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(9, 36, __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(9, 36, __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_6libcpp_6string_std__in_string(__pyx_v_a); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(9, 36, __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":33
 *         return self.aoptr().dim()
 * 
 *     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":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotationsDict (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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":42
 *         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(9, 42, __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(9, 42, __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;
  unsigned 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(9, 42, __pyx_L1_error)
  __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(9, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(9, 42, __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(9, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 42, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(9, 42, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(9, 42, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 42, __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(9, 42, __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(9, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __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(9, 42, __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(9, 42, __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(9, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      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(9, 42, __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(9, 42, __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":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     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;
  unsigned 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(9, 38, __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":42
 *         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(9, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(9, 42, __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(9, 42, __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(9, 42, __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":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     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":44
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_default,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 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_default);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 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, "annotation") < 0)) __PYX_ERR(9, 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_k = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("annotation", 0, 1, 2, __pyx_nargs); __PYX_ERR(9, 44, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  unsigned int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("annotation", 1);

  /* "include/AnalysisObject.pyx":50
 *         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":51
 *         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(9, 51, __pyx_L3_error)
      __pyx_t_5 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 51, __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(9, 51, __pyx_L3_error)
      }
      __pyx_t_7 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 51, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_v_rtn = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "include/AnalysisObject.pyx":52
 *         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(9, 52, __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(9, 52, __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
      if (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;
        }
      }
      #endif
      {
        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(9, 52, __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":50
 *         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":53
 *             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(9, 53, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_8);

      /* "include/AnalysisObject.pyx":54
 *             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":50
 *         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":55
 *         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":44
 *         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":57
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))
 */

/* 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAnnotation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_v,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 57, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 57, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setAnnotation", 1, 2, 2, 1); __PYX_ERR(9, 57, __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(9, 57, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setAnnotation", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 57, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  unsigned 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", 1);

  /* "include/AnalysisObject.pyx":59
 *     def setAnnotation(self, k, v):
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))             # <<<<<<<<<<<<<<
 * 
 *     def hasAnnotation(self, k):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(9, 59, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 59, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_util); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 59, __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(9, 59, __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
  if (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;
    }
  }
  #endif
  {
    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(9, 59, __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_6libcpp_6string_std__in_string(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  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(9, 59, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":57
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))
 */

  /* 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":61
 *         self.aoptr().setAnnotation(<string>k, <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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasAnnotation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 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, "hasAnnotation") < 0)) __PYX_ERR(9, 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_k = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("hasAnnotation", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 61, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/AnalysisObject.pyx":63
 *     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(9, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 63, __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(9, 63, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":61
 *         self.aoptr().setAnnotation(<string>k, <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":65
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmAnnotation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 65, __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(9, 65, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmAnnotation", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 65, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/AnalysisObject.pyx":67
 *     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(9, 67, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 67, __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(9, 67, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":65
 *         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":69
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clearAnnotations (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/AnalysisObject.pyx":71
 *     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(9, 71, __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(9, 71, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":69
 *         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":86
 * 
 * 
 *     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_21name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20name, "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_21name = {"name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_21name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_20name};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_21name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_20name(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_20name(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", 1);

  /* "include/AnalysisObject.pyx":90
 *         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(9, 90, __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(9, 90, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":86
 * 
 * 
 *     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":93
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_23path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_22path, "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_23path = {"path", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_23path, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_22path};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_23path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("path (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_22path(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_22path(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", 1);

  /* "include/AnalysisObject.pyx":98
 *         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(9, 98, __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(9, 98, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":93
 * 
 * 
 *     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":100
 *         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_25setPath(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24setPath, "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_25setPath = {"setPath", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_25setPath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_24setPath};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_25setPath(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPath (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 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, "setPath") < 0)) __PYX_ERR(9, 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_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPath", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_24setPath(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_24setPath(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", 1);

  /* "include/AnalysisObject.pyx":105
 *         a '/' if not the empty string.
 *         """
 *         self.aoptr().setPath(<string>path)             # <<<<<<<<<<<<<<
 * 
 *     def title(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(9, 105, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 105, __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(9, 105, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":100
 *         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":107
 *         self.aoptr().setPath(<string>path)
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_27title(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26title, "AnalysisObject.title(self)\n\n        Histogram title\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_27title = {"title", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_27title, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_26title};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_27title(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("title (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26title(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_26title(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", 1);

  /* "include/AnalysisObject.pyx":111
 *         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(9, 111, __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(9, 111, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":107
 *         self.aoptr().setPath(<string>path)
 * 
 *     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":113
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_29setTitle(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28setTitle, "AnalysisObject.setTitle(self, title)\n\n        Set the histogram title (optional)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_29setTitle = {"setTitle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_29setTitle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_28setTitle};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_29setTitle(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setTitle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_title,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 113, __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(9, 113, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setTitle", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_28setTitle(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_28setTitle(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", 1);

  /* "include/AnalysisObject.pyx":117
 *         Set the histogram title (optional)
 *         """
 *         self.aoptr().setTitle(<string>title)             # <<<<<<<<<<<<<<
 * 
 *     def axisConfig(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(9, 117, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 117, __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(9, 117, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":113
 *         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":119
 *         self.aoptr().setTitle(<string>title)
 * 
 *     def axisConfig(self):             # <<<<<<<<<<<<<<
 *       return self.aoptr()._config()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_31axisConfig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30axisConfig, "AnalysisObject.axisConfig(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_31axisConfig = {"axisConfig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_31axisConfig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_30axisConfig};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_31axisConfig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("axisConfig (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("axisConfig", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "axisConfig", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_30axisConfig(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_30axisConfig(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("axisConfig", 1);

  /* "include/AnalysisObject.pyx":120
 * 
 *     def axisConfig(self):
 *       return self.aoptr()._config()             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __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(9, 120, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->_config();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 120, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":119
 *         self.aoptr().setTitle(<string>title)
 * 
 *     def axisConfig(self):             # <<<<<<<<<<<<<<
 *       return self.aoptr()._config()
 * 
 */

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

/* "include/AnalysisObject.pyx":122
 *       return self.aoptr()._config()
 * 
 *     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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/AnalysisObject.pyx":123
 * 
 *     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(9, 123, __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(9, 123, __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(9, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(9, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(9, 123, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(9, 123, __pyx_L1_error);
  __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(9, 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/AnalysisObject.pyx":122
 *       return self.aoptr()._config()
 * 
 *     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_XDECREF(__pyx_t_4);
  __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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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__", 1);

  /* "(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(1, 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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__", 1);

  /* "(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(1, 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/Binning.pyx":4
 * 
 * class Binning(object):
 *     def __init__(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self.axes = list(args[0].axes)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_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_7Binning___init__, "Binning.__init__(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning___init__};
static PyObject *__pyx_pw_4yoda_4core_7Binning_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_args = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4, __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, "__init__") < 0)) __PYX_ERR(0, 4, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 1, __pyx_nargs); __PYX_ERR(0, 4, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_AddTraceback("yoda.core.Binning.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning___init__(__pyx_self, __pyx_v_self, __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  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("__init__", 1);

  /* "include/Binning.pyx":5
 * class Binning(object):
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self.axes = list(args[0].axes)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/Binning.pyx":6
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self.axes = list(args[0].axes)             # <<<<<<<<<<<<<<
 *         else:
 *             self.axes = [ Axis(edges) for edges in args ]
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_axes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_axes, __pyx_t_5) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/Binning.pyx":5
 * class Binning(object):
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self.axes = list(args[0].axes)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Binning.pyx":8
 *             self.axes = list(args[0].axes)
 *         else:
 *             self.axes = [ Axis(edges) for edges in args ]             # <<<<<<<<<<<<<<
 * 
 *     def config(self):
 */
  /*else*/ {
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __pyx_v_args; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_2 = 0;
    for (;;) {
      {
        Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 8, __pyx_L1_error)
        #endif
        if (__pyx_t_2 >= __pyx_temp) break;
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 8, __pyx_L1_error)
      #else
      __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_XDECREF_SET(__pyx_v_edges, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4yoda_4core_Axis), __pyx_v_edges); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 8, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_axes, __pyx_t_5) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_L3:;

  /* "include/Binning.pyx":4
 * 
 * class Binning(object):
 *     def __init__(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self.axes = list(args[0].axes)
 */

  /* 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_AddTraceback("yoda.core.Binning.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Binning.pyx":10
 *             self.axes = [ Axis(edges) for edges in args ]
 * 
 *     def config(self):             # <<<<<<<<<<<<<<
 *         return ''.join(a.type() for a in self.axes)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_3config(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_7Binning_2config, "Binning.config(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_3config = {"config", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_3config, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_2config};
static PyObject *__pyx_pw_4yoda_4core_7Binning_3config(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("config (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 10, __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, "config") < 0)) __PYX_ERR(0, 10, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("config", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 10, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_2config(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Binning_6config_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/Binning.pyx":11
 * 
 *     def config(self):
 *         return ''.join(a.type() for a in self.axes)             # <<<<<<<<<<<<<<
 * 
 *     def width(self, dim, index):
 */

static PyObject *__pyx_pf_4yoda_4core_7Binning_6config_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(0, 11, __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_7Binning_6config_2generator1, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Binning_config_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Binning.config.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_7Binning_6config_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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  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;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 11, __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(0, 11, __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, 11, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 11, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 11, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 11, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 11, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __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, 11, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_a);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_a, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_a, __pyx_n_s_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __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(0, 11, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  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_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #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/Binning.pyx":10
 *             self.axes = [ Axis(edges) for edges in args ]
 * 
 *     def config(self):             # <<<<<<<<<<<<<<
 *         return ''.join(a.type() for a in self.axes)
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_7Binning_2config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_gb_4yoda_4core_7Binning_6config_2generator1 = 0;
  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("config", 1);

  /* "include/Binning.pyx":11
 * 
 *     def config(self):
 *         return ''.join(a.type() for a in self.axes)             # <<<<<<<<<<<<<<
 * 
 *     def width(self, dim, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_pf_4yoda_4core_7Binning_6config_genexpr(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __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/Binning.pyx":10
 *             self.axes = [ Axis(edges) for edges in args ]
 * 
 *     def config(self):             # <<<<<<<<<<<<<<
 *         return ''.join(a.type() for a in self.axes)
 * 
 */

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

/* "include/Binning.pyx":13
 *         return ''.join(a.type() for a in self.axes)
 * 
 *     def width(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].width(index)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_5width(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_7Binning_4width, "Binning.width(self, dim, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_5width = {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_5width, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_4width};
static PyObject *__pyx_pw_4yoda_4core_7Binning_5width(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_dim = 0;
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("width (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,&__pyx_n_s_index,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 13, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("width", 1, 3, 3, 1); __PYX_ERR(0, 13, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 13, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("width", 1, 3, 3, 2); __PYX_ERR(0, 13, __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, "width") < 0)) __PYX_ERR(0, 13, __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_dim = values[1];
    __pyx_v_index = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("width", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 13, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_4width(__pyx_self, __pyx_v_self, __pyx_v_dim, __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning_4width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("width", 1);

  /* "include/Binning.pyx":14
 * 
 *     def width(self, dim, index):
 *         return self.axes[dim].width(index)             # <<<<<<<<<<<<<<
 * 
 *     def max(self, dim, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_index};
    __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(0, 14, __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/Binning.pyx":13
 *         return ''.join(a.type() for a in self.axes)
 * 
 *     def width(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].width(index)
 * 
 */

  /* 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.Binning.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Binning.pyx":16
 *         return self.axes[dim].width(index)
 * 
 *     def max(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].max(index)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_7max(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_7Binning_6max, "Binning.max(self, dim, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_7max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_7max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_6max};
static PyObject *__pyx_pw_4yoda_4core_7Binning_7max(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_dim = 0;
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,&__pyx_n_s_index,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 16, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("max", 1, 3, 3, 1); __PYX_ERR(0, 16, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("max", 1, 3, 3, 2); __PYX_ERR(0, 16, __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, "max") < 0)) __PYX_ERR(0, 16, __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_dim = values[1];
    __pyx_v_index = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_6max(__pyx_self, __pyx_v_self, __pyx_v_dim, __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning_6max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("max", 1);

  /* "include/Binning.pyx":17
 * 
 *     def max(self, dim, index):
 *         return self.axes[dim].max(index)             # <<<<<<<<<<<<<<
 * 
 *     def min(self, dim, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_index};
    __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(0, 17, __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/Binning.pyx":16
 *         return self.axes[dim].width(index)
 * 
 *     def max(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].max(index)
 * 
 */

  /* 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.Binning.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Binning.pyx":19
 *         return self.axes[dim].max(index)
 * 
 *     def min(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].min(index)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_9min(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_7Binning_8min, "Binning.min(self, dim, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_9min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_9min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_8min};
static PyObject *__pyx_pw_4yoda_4core_7Binning_9min(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_dim = 0;
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,&__pyx_n_s_index,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 19, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 19, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("min", 1, 3, 3, 1); __PYX_ERR(0, 19, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 19, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("min", 1, 3, 3, 2); __PYX_ERR(0, 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, "min") < 0)) __PYX_ERR(0, 19, __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_dim = values[1];
    __pyx_v_index = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 19, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_8min(__pyx_self, __pyx_v_self, __pyx_v_dim, __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning_8min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("min", 1);

  /* "include/Binning.pyx":20
 * 
 *     def min(self, dim, index):
 *         return self.axes[dim].min(index)             # <<<<<<<<<<<<<<
 * 
 *     def mid(self, dim, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_index};
    __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(0, 20, __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/Binning.pyx":19
 *         return self.axes[dim].max(index)
 * 
 *     def min(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].min(index)
 * 
 */

  /* 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.Binning.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Binning.pyx":22
 *         return self.axes[dim].min(index)
 * 
 *     def mid(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].mid(index)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_11mid(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_7Binning_10mid, "Binning.mid(self, dim, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_11mid = {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_11mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_10mid};
static PyObject *__pyx_pw_4yoda_4core_7Binning_11mid(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_dim = 0;
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,&__pyx_n_s_index,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 22, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mid", 1, 3, 3, 1); __PYX_ERR(0, 22, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mid", 1, 3, 3, 2); __PYX_ERR(0, 22, __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, "mid") < 0)) __PYX_ERR(0, 22, __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_dim = values[1];
    __pyx_v_index = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mid", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_10mid(__pyx_self, __pyx_v_self, __pyx_v_dim, __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning_10mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mid", 1);

  /* "include/Binning.pyx":23
 * 
 *     def mid(self, dim, index):
 *         return self.axes[dim].mid(index)             # <<<<<<<<<<<<<<
 * 
 *     def edge(self, dim, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_index};
    __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(0, 23, __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/Binning.pyx":22
 *         return self.axes[dim].min(index)
 * 
 *     def mid(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].mid(index)
 * 
 */

  /* 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.Binning.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Binning.pyx":25
 *         return self.axes[dim].mid(index)
 * 
 *     def edge(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].edge(index)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Binning_13edge(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_7Binning_12edge, "Binning.edge(self, dim, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Binning_13edge = {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Binning_13edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Binning_12edge};
static PyObject *__pyx_pw_4yoda_4core_7Binning_13edge(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_dim = 0;
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,&__pyx_n_s_index,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 25, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 25, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("edge", 1, 3, 3, 1); __PYX_ERR(0, 25, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 25, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("edge", 1, 3, 3, 2); __PYX_ERR(0, 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, "edge") < 0)) __PYX_ERR(0, 25, __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_dim = values[1];
    __pyx_v_index = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edge", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 25, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Binning.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Binning_12edge(__pyx_self, __pyx_v_self, __pyx_v_dim, __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Binning_12edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edge", 1);

  /* "include/Binning.pyx":26
 * 
 *     def edge(self, dim, index):
 *         return self.axes[dim].edge(index)             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_axes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_index};
    __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(0, 26, __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/Binning.pyx":25
 *         return self.axes[dim].mid(index)
 * 
 *     def edge(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].edge(index)
 * 
 */

  /* 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.Binning.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(10, 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:;
  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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(10, 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:;
  return __pyx_r;
}

/* "include/Counter.pyx":19
 * 
 * 
 *     def __init__(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 *                                                 <string>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 Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_VARARGS(((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] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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(10, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, __pyx_nargs); __PYX_ERR(10, 19, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __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__", 1);

  /* "include/Counter.pyx":20
 * 
 *     def __init__(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,             # <<<<<<<<<<<<<<
 *                                                 <string>title))
 * 
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 20, __pyx_L1_error)

  /* "include/Counter.pyx":21
 *     def __init__(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 *                                                 <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 21, __pyx_L1_error)

  /* "include/Counter.pyx":20
 * 
 *     def __init__(self, path="", 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(10, 20, __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(10, 20, __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=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 *                                                 <string>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_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":24
 * 
 * 
 *     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;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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;
  unsigned 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__", 1);

  /* "include/Counter.pyx":25
 * 
 *     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(10, 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(10, 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_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(10, 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_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(10, 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_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
    __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(10, 25, __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(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2)) __PYX_ERR(10, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(10, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3)) __PYX_ERR(10, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4)) __PYX_ERR(10, 25, __pyx_L1_error);
  __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(10, 25, __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":24
 * 
 * 
 *     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":28
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Counter.pyx":31
 *         """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(10, 31, __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(10, 31, __pyx_L1_error)
  }

  /* "include/Counter.pyx":28
 * 
 * 
 *     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":34
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Counter.pyx":37
 *         """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(10, 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(10, 37, __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(10, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":34
 * 
 * 
 *     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":40
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 40, __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] = __Pyx_Arg_NewRef_FASTCALL(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  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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 2, __pyx_nargs); __PYX_ERR(10, 40, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/Counter.pyx":43
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 *         return self.cptr().fill(weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def set(self, numEntries, sumW, sumW2):
 */
  __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(10, 43, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 43, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 43, __pyx_L1_error)
  try {
    __pyx_t_4 = __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(10, 43, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":40
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __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":45
 *         return self.cptr().fill(weight, fraction)
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_11set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_10set, "Counter.set(self, numEntries, sumW, sumW2)\n\n        (float, float, float) -> None\n\n        Set the distribution counters with the arguments provided.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_11set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_11set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_10set};
static PyObject *__pyx_pw_4yoda_4core_7Counter_11set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_numEntries = 0;
  PyObject *__pyx_v_sumW = 0;
  PyObject *__pyx_v_sumW2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_numEntries,&__pyx_n_s_sumW,&__pyx_n_s_sumW2,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_numEntries)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 45, __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_sumW)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 45, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 1); __PYX_ERR(10, 45, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumW2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 45, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 2); __PYX_ERR(10, 45, __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, "set") < 0)) __PYX_ERR(10, 45, __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_numEntries = values[0];
    __pyx_v_sumW = values[1];
    __pyx_v_sumW2 = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 45, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_10set(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_numEntries, __pyx_v_sumW, __pyx_v_sumW2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_10set(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__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("set", 1);

  /* "include/Counter.pyx":51
 *         Set the distribution counters with the arguments provided.
 *         """
 *         self.cptr().set(numEntries, sumW, sumW2)             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 51, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_numEntries); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 51, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_sumW); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 51, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_sumW2); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 51, __pyx_L1_error)
  try {
    __pyx_t_1->set(__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(10, 51, __pyx_L1_error)
  }

  /* "include/Counter.pyx":45
 *         return self.cptr().fill(weight, fraction)
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (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.Counter.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":53
 *         self.cptr().set(numEntries, sumW, sumW2)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_13numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_12numEntries, "Counter.numEntries(self)\nNone -> float\n        Number of times this counter was filled.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_13numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_13numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_12numEntries};
static PyObject *__pyx_pw_4yoda_4core_7Counter_13numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_12numEntries(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_12numEntries(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", 1);

  /* "include/Counter.pyx":56
 *         """None -> float
 *         Number of times this counter was filled."""
 *         return self.cptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self):
 */
  __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(10, 56, __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, 56, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":53
 *         self.cptr().set(numEntries, sumW, sumW2)
 * 
 *     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":58
 *         return self.cptr().numEntries()
 * 
 *     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_15effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14effNumEntries, "Counter.effNumEntries(self)\nNone -> float\n        Effective number of times this counter was filled, computed from weights.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_15effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_15effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_14effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_7Counter_15effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_14effNumEntries(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_14effNumEntries(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", 1);

  /* "include/Counter.pyx":61
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 *         return self.cptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self):
 */
  __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(10, 61, __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, 61, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":58
 *         return self.cptr().numEntries()
 * 
 *     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":63
 *         return self.cptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_17sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16sumW, "Counter.sumW(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_17sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_17sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_16sumW};
static PyObject *__pyx_pw_4yoda_4core_7Counter_17sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16sumW(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_16sumW(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", 1);

  /* "include/Counter.pyx":66
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self):
 */
  __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(10, 66, __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, 66, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":63
 *         return self.cptr().effNumEntries()
 * 
 *     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":68
 *         return self.cptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_19sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18sumW2, "Counter.sumW2(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_19sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_19sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_18sumW2};
static PyObject *__pyx_pw_4yoda_4core_7Counter_19sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18sumW2(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_18sumW2(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", 1);

  /* "include/Counter.pyx":71
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     def val(self):
 */
  __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(10, 71, __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, 71, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":68
 *         return self.cptr().sumW()
 * 
 *     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
 *         return self.cptr().sumW2()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_21val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20val, "Counter.val(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_21val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_21val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_20val};
static PyObject *__pyx_pw_4yoda_4core_7Counter_21val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_20val(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_20val(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", 1);

  /* "include/Counter.pyx":76
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().val()             # <<<<<<<<<<<<<<
 * 
 *     def err(self):
 */
  __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(10, 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(10, 76, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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
 *         return self.cptr().sumW2()
 * 
 *     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":78
 *         return self.cptr().val()
 * 
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_23err(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_22err, "Counter.err(self)\n() -> float\n        Binomial uncertainty on the sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_23err = {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_23err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_22err};
static PyObject *__pyx_pw_4yoda_4core_7Counter_23err(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("err (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_22err(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_22err(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", 1);

  /* "include/Counter.pyx":81
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 *         return self.cptr().err()             # <<<<<<<<<<<<<<
 * 
 *     def relErr(self):
 */
  __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(10, 81, __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(10, 81, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":78
 *         return self.cptr().val()
 * 
 *     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":83
 *         return self.cptr().err()
 * 
 *     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_25relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24relErr, "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_25relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_25relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_24relErr};
static PyObject *__pyx_pw_4yoda_4core_7Counter_25relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_24relErr(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_7Counter_24relErr(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", 1);

  /* "include/Counter.pyx":86
 *         """() -> 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(10, 86, __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(10, 86, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":83
 *         return self.cptr().err()
 * 
 *     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":89
 * 
 * 
 *     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_27scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26scaleW, "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_27scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_27scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_26scaleW};
static PyObject *__pyx_pw_4yoda_4core_7Counter_27scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 89, __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, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(10, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_26scaleW(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_26scaleW(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", 1);

  /* "include/Counter.pyx":92
 *         """ (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(10, 92, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 92, __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(10, 92, __pyx_L1_error)
  }

  /* "include/Counter.pyx":89
 * 
 * 
 *     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":95
 * 
 * 
 *     def mkEstimate(self, path = "", source = ""):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 *         Convert this Counter to a Estimate."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_29mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28mkEstimate, "Counter.mkEstimate(self, path='', source='')\nNone -> Estimate.\n        Convert this Counter to a Estimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_29mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_29mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_28mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_7Counter_29mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 95, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 95, __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, "mkEstimate") < 0)) __PYX_ERR(10, 95, __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_source = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 2, __pyx_nargs); __PYX_ERR(10, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_28mkEstimate(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_path, __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_28mkEstimate(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source) {
  YODA::Estimate0D *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  std::string __pyx_t_2;
  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("mkEstimate", 1);

  /* "include/Counter.pyx":98
 *         """None -> Estimate.
 *         Convert this Counter to a Estimate."""
 *         tmp = c.Counter_est(self.cptr(), path, source)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Estimate, tmp)
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 98, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 98, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 98, __pyx_L1_error)
  __pyx_v_tmp = cython_est(__pyx_t_1, __pyx_t_2, __pyx_t_3);

  /* "include/Counter.pyx":99
 *         Convert this Counter to a Estimate."""
 *         tmp = c.Counter_est(self.cptr(), path, source)
 *         return cutil.new_owned_cls(Estimate, tmp)             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":95
 * 
 * 
 *     def mkEstimate(self, path = "", source = ""):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 *         Convert this Counter to a Estimate."""
 */

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

/* "include/Counter.pyx":101
 *         return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def mkScatter(self, path = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_31mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30mkScatter, "Counter.mkScatter(self, path='')\nNone -> Scatter1D.\n        Convert this Counter to a Scatter1D, with x representing the value and error.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_31mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_31mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_30mkScatter};
static PyObject *__pyx_pw_4yoda_4core_7Counter_31mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "mkScatter") < 0)) __PYX_ERR(10, 101, __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_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 1, __pyx_nargs); __PYX_ERR(10, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_30mkScatter(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_30mkScatter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path) {
  YODA::Scatter1D __pyx_v_s1;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  std::string __pyx_t_2;
  YODA::Scatter1D __pyx_t_3;
  YODA::Scatter1D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/Counter.pyx":104
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 *         cdef c.Scatter1D s1 = self.cptr().mkScatter(path)             # <<<<<<<<<<<<<<
 *         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(10, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 104, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->mkScatter(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 104, __pyx_L1_error)
  }
  __pyx_v_s1 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

  /* "include/Counter.pyx":105
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 *         cdef c.Scatter1D s1 = self.cptr().mkScatter(path)
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_4 = __pyx_v_s1.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 105, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":101
 *         return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def mkScatter(self, path = ""):             # <<<<<<<<<<<<<<
 *         """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_5);
  __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":107
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_33divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32divideBy, "Counter.divideBy(self, Counter other, efficiency=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_33divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_33divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_32divideBy};
static PyObject *__pyx_pw_4yoda_4core_7Counter_33divideBy(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 107, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 107, __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(10, 107, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(10, 107, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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(10, 107, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_32divideBy(((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:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_32divideBy(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  YODA::Estimate0D *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Counter *__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("divideBy", 1);

  /* "include/Counter.pyx":108
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):
 *         if efficiency:             # <<<<<<<<<<<<<<
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 *             return cutil.new_owned_cls(Estimate, tmp)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(10, 108, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Counter.pyx":109
 *     def divideBy(Counter self, Counter other, efficiency=False):
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())             # <<<<<<<<<<<<<<
 *             return cutil.new_owned_cls(Estimate, tmp)
 *         else:
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 109, __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(10, 109, __pyx_L1_error)
    __pyx_v_tmp = cython_eff(__pyx_t_2, __pyx_t_3);

    /* "include/Counter.pyx":110
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 *             return cutil.new_owned_cls(Estimate, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *             tmp = c.Counter_div_Counter(self.cptr(), other.cptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Counter.pyx":108
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):
 *         if efficiency:             # <<<<<<<<<<<<<<
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 *             return cutil.new_owned_cls(Estimate, tmp)
 */
  }

  /* "include/Counter.pyx":112
 *             return cutil.new_owned_cls(Estimate, tmp)
 *         else:
 *             tmp = c.Counter_div_Counter(self.cptr(), other.cptr())             # <<<<<<<<<<<<<<
 *             return cutil.new_owned_cls(Estimate, tmp)
 * 
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 112, __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(10, 112, __pyx_L1_error)
    __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

    /* "include/Counter.pyx":113
 *         else:
 *             tmp = c.Counter_div_Counter(self.cptr(), other.cptr())
 *             return cutil.new_owned_cls(Estimate, tmp)             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = False):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "include/Counter.pyx":107
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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":115
 *             return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.cptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_35lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34lengthContent, "Counter.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_35lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_35lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_34lengthContent};
static PyObject *__pyx_pw_4yoda_4core_7Counter_35lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 115, __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, "lengthContent") < 0)) __PYX_ERR(10, 115, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(10, 115, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_34lengthContent(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_34lengthContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  bool __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("lengthContent", 1);

  /* "include/Counter.pyx":117
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.cptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __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(10, 117, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 117, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->lengthContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 117, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":115
 *             return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.cptr().lengthContent(fixed_length)
 */

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

/* "include/Counter.pyx":119
 *         return self.cptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.cptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_37serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36serializeContent, "Counter.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_37serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_37serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_36serializeContent};
static PyObject *__pyx_pw_4yoda_4core_7Counter_37serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "serializeContent") < 0)) __PYX_ERR(10, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(10, 119, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_36serializeContent(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_36serializeContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  bool __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/Counter.pyx":121
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         return self.cptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __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(10, 121, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 121, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 121, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":119
 *         return self.cptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.cptr().serializeContent(fixed_length)
 */

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

/* "include/Counter.pyx":123
 *         return self.cptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_39deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_38deserializeContent, "Counter.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_39deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_39deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_38deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_7Counter_39deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "deserializeContent") < 0)) __PYX_ERR(10, 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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(10, 123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_38deserializeContent(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_38deserializeContent(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Counter *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/Counter.pyx":126
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.cptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 126, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(10, 126, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(10, 126, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 126, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(10, 126, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(10, 126, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 126, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(10, 126, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(10, 126, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Counter.pyx":127
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.cptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 127, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 127, __pyx_L1_error)
  }

  /* "include/Counter.pyx":123
 *         return self.cptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Counter.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":129
 *         self.cptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_41lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40lengthMeta, "Counter.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_41lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_41lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_40lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_7Counter_41lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 129, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "lengthMeta") < 0)) __PYX_ERR(10, 129, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(10, 129, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_40lengthMeta(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_40lengthMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/Counter.pyx":131
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.cptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __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(10, 131, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 131, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 131, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->lengthMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 131, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":129
 *         self.cptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 */

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

/* "include/Counter.pyx":133
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_43serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42serializeMeta, "Counter.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_43serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_43serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_42serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_7Counter_43serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 133, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "serializeMeta") < 0)) __PYX_ERR(10, 133, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(10, 133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_42serializeMeta(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_42serializeMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::string>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/Counter.pyx":135
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         return self.cptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __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(10, 135, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 135, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 135, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 135, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":133
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 */

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

/* "include/Counter.pyx":137
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_45deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44deserializeMeta, "Counter.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_45deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_45deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_44deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_7Counter_45deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 137, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 137, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 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, "deserializeMeta") < 0)) __PYX_ERR(10, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(10, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Counter.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_44deserializeMeta(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_44deserializeMeta(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Counter *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/Counter.pyx":140
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.cptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 140, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(10, 140, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(10, 140, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 140, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(10, 140, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(10, 140, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 140, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(10, 140, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(10, 140, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Counter.pyx":141
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.cptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 *     ## In-place special methods
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Counter *)NULL))) __PYX_ERR(10, 141, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 141, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(10, 141, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 141, __pyx_L1_error)
  }

  /* "include/Counter.pyx":137
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Counter.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":145
 *     ## 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_47__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_47__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 145, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_46__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_46__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__", 1);

  /* "include/Counter.pyx":146
 * 
 *     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(10, 146, __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(10, 146, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Counter.pyx":147
 *     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":145
 *     ## 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":149
 *         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_49__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_49__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 149, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_48__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_48__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__", 1);

  /* "include/Counter.pyx":150
 * 
 *     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(10, 150, __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(10, 150, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Counter.pyx":151
 *     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":149
 *         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":156
 *     ## 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_51__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_51__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 156, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_50__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_50__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__", 1);

  /* "include/Counter.pyx":157
 * 
 *     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(10, 157, __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":158
 *     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(10, 158, __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(10, 158, __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(10, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Counter.pyx":159
 *         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":156
 *     ## 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":161
 *         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_53__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_53__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 161, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_52__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_52__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__", 1);

  /* "include/Counter.pyx":162
 * 
 *     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(10, 162, __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":163
 *     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(10, 163, __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(10, 163, __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(10, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Counter.pyx":164
 *         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":161
 *         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":166
 *         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_55__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_55__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 166, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_54__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_54__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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/Counter.pyx":167
 * 
 *     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(10, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(10, 167, __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":166
 *         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":169
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_57__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_57__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(10, 169, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_56__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_56__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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/Counter.pyx":170
 * 
 *     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(10, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(10, 170, __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":169
 *         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_59__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_58__reduce_cython__, "Counter.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_59__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_59__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_58__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Counter_59__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_58__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_58__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__", 1);

  /* "(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(1, 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_61__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_60__setstate_cython__, "Counter.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_61__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_61__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_60__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Counter_61__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_60__setstate_cython__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_60__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__", 1);

  /* "(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(1, 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/Dbn0D.pyx":7
 *     """
 * 
 *     cdef c.Dbn0D* d0ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn0D *> self.ptr()
 * 
 */

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

  /* "include/Dbn0D.pyx":8
 * 
 *     cdef c.Dbn0D* d0ptr(self) except NULL:
 *         return <c.Dbn0D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(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, 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()
 * 
 */

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

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn0D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn0D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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___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___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__", 1);

  /* "include/Dbn0D.pyx":11
 * 
 *     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(11, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Dbn0D.pyx":10
 *         return <c.Dbn0D *> self.ptr()
 * 
 *     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":13
 *         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_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_2__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_2__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__", 1);

  /* "include/Dbn0D.pyx":14
 * 
 *     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(11, 14, __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(11, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(11, 14, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(11, 14, __pyx_L1_error);
  __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(11, 14, __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":13
 *         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":17
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_4copy, "Dbn0D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_5copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_4copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4copy(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_4copy(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", 1);

  /* "include/Dbn0D.pyx":18
 * 
 *     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(11, 18, __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(11, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":17
 * 
 * 
 *     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":20
 *         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_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_6reset, "Dbn0D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_7reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_6reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_6reset(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_6reset(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", 1);

  /* "include/Dbn0D.pyx":26
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d0ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def set(self, numEntries, sumW, sumW2):
 */
  __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(11, 26, __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, 26, __pyx_L1_error)
  }

  /* "include/Dbn0D.pyx":20
 *         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":28
 *         self.d0ptr().reset()
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_8set, "Dbn0D.set(self, numEntries, sumW, sumW2)\n\n        (float, float, float) -> None\n\n        Set the distribution counters with the arguments provided.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_9set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_8set};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_numEntries = 0;
  PyObject *__pyx_v_sumW = 0;
  PyObject *__pyx_v_sumW2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_numEntries,&__pyx_n_s_sumW,&__pyx_n_s_sumW2,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_numEntries)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 28, __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_sumW)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 1); __PYX_ERR(11, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumW2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 2); __PYX_ERR(11, 28, __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, "set") < 0)) __PYX_ERR(11, 28, __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_numEntries = values[0];
    __pyx_v_sumW = values[1];
    __pyx_v_sumW2 = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, __pyx_nargs); __PYX_ERR(11, 28, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn0D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_8set(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), __pyx_v_numEntries, __pyx_v_sumW, __pyx_v_sumW2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_8set(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__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("set", 1);

  /* "include/Dbn0D.pyx":34
 *         Set the distribution counters with the arguments provided.
 *         """
 *         self.d0ptr().set(numEntries, sumW, sumW2)             # <<<<<<<<<<<<<<
 * 
 *     def fill(self, weight=1.0, fraction=1.0):
 */
  __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(11, 34, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_numEntries); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 34, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_sumW); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 34, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_sumW2); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 34, __pyx_L1_error)
  try {
    __pyx_t_1->set(__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(11, 34, __pyx_L1_error)
  }

  /* "include/Dbn0D.pyx":28
 *         self.d0ptr().reset()
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (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.Dbn0D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":36
 *         self.d0ptr().set(numEntries, sumW, sumW2)
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 36, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 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, "fill") < 0)) __PYX_ERR(11, 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_weight = values[0];
    __pyx_v_fraction = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 2, __pyx_nargs); __PYX_ERR(11, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/Dbn0D.pyx":42
 *         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(11, 42, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 42, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 42, __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(11, 42, __pyx_L1_error)
  }

  /* "include/Dbn0D.pyx":36
 *         self.d0ptr().set(numEntries, sumW, sumW2)
 * 
 *     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":44
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 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, "scaleW") < 0)) __PYX_ERR(11, 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_w = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(11, 44, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/Dbn0D.pyx":50
 *         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(11, 50, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 50, __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, 50, __pyx_L1_error)
  }

  /* "include/Dbn0D.pyx":44
 *         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":53
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/Dbn0D.pyx":55
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(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(11, 55, __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, 55, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":53
 * 
 * 
 *     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":57
 *         return self.d0ptr().numEntries()
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Dbn0D.pyx":59
 *     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(11, 59, __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, 59, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":57
 *         return self.d0ptr().numEntries()
 * 
 *     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":62
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Dbn0D.pyx":64
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d0ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     def relErrW(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(11, 64, __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, 64, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":62
 * 
 * 
 *     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":66
 *         return self.d0ptr().errW()
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Dbn0D.pyx":68
 *     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(11, 68, __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, 68, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":66
 *         return self.d0ptr().errW()
 * 
 *     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":71
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Dbn0D.pyx":73
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(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(11, 73, __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, 73, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":71
 * 
 * 
 *     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":75
 *         return self.d0ptr().sumW()
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/Dbn0D.pyx":77
 *     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(11, 77, __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, 77, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":75
 *         return self.d0ptr().sumW()
 * 
 *     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":80
 * 
 * 
 *     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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn0D, 1, "other", 0))) __PYX_ERR(11, 80, __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__", 1);

  /* "include/Dbn0D.pyx":81
 * 
 *     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(11, 81, __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(11, 81, __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(11, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":80
 * 
 * 
 *     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":83
 *         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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn0D, 1, "other", 0))) __PYX_ERR(11, 83, __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__", 1);

  /* "include/Dbn0D.pyx":84
 * 
 *     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(11, 84, __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(11, 84, __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(11, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":83
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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__", 1);

  /* "(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(1, 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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__", 1);

  /* "(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(1, 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/Estimate.pyx":7
 *     """
 * 
 *     cdef c.Estimate* estptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Estimate *> self.ptr()
 * 
 */

static YODA::Estimate *__pyx_f_4yoda_4core_8Estimate_estptr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  YODA::Estimate *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/Estimate.pyx":8
 * 
 *     cdef c.Estimate* estptr(self) except NULL:
 *         return <c.Estimate *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(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, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Estimate *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Estimate.pyx":7
 *     """
 * 
 *     cdef c.Estimate* estptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Estimate *> self.ptr()
 * 
 */

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

/* "include/Estimate.pyx":10
 *         return <c.Estimate *> self.ptr()
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Estimate())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_8Estimate_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_8Estimate_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_8Estimate___init__(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_8Estimate___init__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/Estimate.pyx":11
 * 
 *     def __init__(self):
 *         cutil.set_owned_ptr(self, new c.Estimate())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  try {
    __pyx_t_1 = new YODA::Estimate();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 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(12, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Estimate.pyx":10
 *         return <c.Estimate *> self.ptr()
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Estimate())
 * 
 */

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

/* "include/Estimate.pyx":14
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Estimate(deref(self.estptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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_8Estimate_2copy, "Estimate.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_3copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_2copy};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_8Estimate_2copy(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_2copy(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  YODA::Estimate *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 1);

  /* "include/Estimate.pyx":15
 * 
 *     def copy(self):
 *         return cutil.set_owned_ptr(self, new c.Estimate(deref(self.estptr())))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 15, __pyx_L1_error)
  try {
    __pyx_t_2 = new YODA::Estimate((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 15, __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(12, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":14
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Estimate(deref(self.estptr())))
 * 
 */

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

/* "include/Estimate.pyx":18
 * 
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_5setVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_4setVal, "Estimate.setVal(self, value)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_5setVal = {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_5setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_4setVal};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_5setVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_value = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,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_value)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 18, __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, "setVal") < 0)) __PYX_ERR(12, 18, __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_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVal", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 18, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.setVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_4setVal(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_value);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_4setVal(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVal", 1);

  /* "include/Estimate.pyx":19
 * 
 *     def setVal(self, value):
 *        self.estptr().setVal(value)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 19, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 19, __pyx_L1_error)
  try {
    __pyx_t_1->setVal(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 19, __pyx_L1_error)
  }

  /* "include/Estimate.pyx":18
 * 
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */

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

/* "include/Estimate.pyx":22
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_7setErr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_6setErr, "Estimate.setErr(self, *es)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_7setErr = {"setErr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_8Estimate_7setErr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_6setErr};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_7setErr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErr (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setErr", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_6setErr(((struct __pyx_obj_4yoda_4core_Estimate *)__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_8Estimate_6setErr(struct __pyx_obj_4yoda_4core_Estimate *__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;
  YODA::Estimate *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __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("setErr", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Estimate.pyx":23
 * 
 *     def setErr(self, *es):
 *        source = None             # <<<<<<<<<<<<<<
 *        es = list(es)
 *        if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Estimate.pyx":24
 *     def setErr(self, *es):
 *        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(12, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Estimate.pyx":25
 *        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(12, 25, __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/Estimate.pyx":26
 *        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(12, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate.pyx":27
 *        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(12, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate.pyx":25
 *        source = None
 *        es = list(es)
 *        if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *            source = es[-1]
 *            es = es[:-1]
 */
  }

  /* "include/Estimate.pyx":28
 *            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/Estimate.pyx":29
 *            es = es[:-1]
 *        errs = es
 *        if source is None:             # <<<<<<<<<<<<<<
 *            source = ""
 *        #if isinstance(source, str):
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Estimate.pyx":30
 *        errs = es
 *        if source is None:
 *            source = ""             # <<<<<<<<<<<<<<
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Estimate.pyx":29
 *            es = es[:-1]
 *        errs = es
 *        if source is None:             # <<<<<<<<<<<<<<
 *            source = ""
 *        #if isinstance(source, str):
 */
  }

  /* "include/Estimate.pyx":33
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:             # <<<<<<<<<<<<<<
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(12, 33, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Estimate.pyx":34
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> 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(12, 34, __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(12, 34, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Estimate.pyx":35
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)             # <<<<<<<<<<<<<<
 *                return
 *            errs = errs[0]
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 35, __pyx_L1_error)
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_util); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __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(12, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_9 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 35, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L1_error)
      try {
        __pyx_t_5->setErr(__pyx_t_10, ((std::string)__pyx_t_11));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(12, 35, __pyx_L1_error)
      }

      /* "include/Estimate.pyx":36
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return             # <<<<<<<<<<<<<<
 *            errs = errs[0]
 *        self.estptr().setErr(tuple(errs), <string> source)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Estimate.pyx":34
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return
 */
    }

    /* "include/Estimate.pyx":37
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return
 *            errs = errs[0]             # <<<<<<<<<<<<<<
 *        self.estptr().setErr(tuple(errs), <string> 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(12, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate.pyx":33
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:             # <<<<<<<<<<<<<<
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 */
  }

  /* "include/Estimate.pyx":38
 *                return
 *            errs = errs[0]
 *        self.estptr().setErr(tuple(errs), <string> source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 38, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 38, __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(12, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 38, __pyx_L1_error)
  try {
    __pyx_t_5->setErr(__pyx_t_10, ((std::string)__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 38, __pyx_L1_error)
  }

  /* "include/Estimate.pyx":22
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Estimate.setErr", __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/Estimate.pyx":41
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_8set, "Estimate.set(self, val, errs, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_9set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_8set};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_errs = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,&__pyx_n_s_errs,&__pyx_n_s_source,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_val)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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_errs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 0, 2, 3, 1); __PYX_ERR(12, 41, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "set") < 0)) __PYX_ERR(12, 41, __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_val = values[0];
    __pyx_v_errs = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 0, 2, 3, __pyx_nargs); __PYX_ERR(12, 41, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_8set(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_val, __pyx_v_errs, __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_8set(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_errs, 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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 1);

  /* "include/Estimate.pyx":42
 * 
 *     def set(self, val, errs, source = ""):
 *        self.setVal(val)             # <<<<<<<<<<<<<<
 *        self.setErr(errs, source)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setVal); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
    __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(12, 42, __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/Estimate.pyx":43
 *     def set(self, val, errs, source = ""):
 *        self.setVal(val)
 *        self.setErr(errs, source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_errs, __pyx_v_source};
    __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(12, 43, __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/Estimate.pyx":41
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */

  /* 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.Estimate.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate.pyx":46
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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_8Estimate_10reset, "Estimate.reset(self)\n\n        () -> None\n\n        Reset the estimates to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_11reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_10reset};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_8Estimate_10reset(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_10reset(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/Estimate.pyx":52
 *         Reset the estimates to the unfilled state.
 *         """
 *         self.estptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 52, __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(12, 52, __pyx_L1_error)
  }

  /* "include/Estimate.pyx":46
 * 
 * 
 *     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.Estimate.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate.pyx":55
 * 
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_13val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_12val, "Estimate.val(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_13val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_13val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_12val};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_13val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_8Estimate_12val(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_12val(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__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", 1);

  /* "include/Estimate.pyx":56
 * 
 *     def val(self):
 *        return self.estptr().val()             # <<<<<<<<<<<<<<
 * 
 *     def valMax(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 56, __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(12, 56, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":55
 * 
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */

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

/* "include/Estimate.pyx":58
 *        return self.estptr().val()
 * 
 *     def valMax(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMax(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_15valMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_14valMax, "Estimate.valMax(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_15valMax = {"valMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_15valMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_14valMax};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_15valMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("valMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 58, __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, "valMax") < 0)) __PYX_ERR(12, 58, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("valMax", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 58, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.valMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_14valMax(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_14valMax(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("valMax", 1);

  /* "include/Estimate.pyx":59
 * 
 *     def valMax(self, source = ""):
 *        return self.estptr().valMax(source)             # <<<<<<<<<<<<<<
 * 
 *     def valMin(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 59, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 59, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->valMax(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 59, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":58
 *        return self.estptr().val()
 * 
 *     def valMax(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMax(source)
 * 
 */

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

/* "include/Estimate.pyx":61
 *        return self.estptr().valMax(source)
 * 
 *     def valMin(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMin(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_17valMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_16valMin, "Estimate.valMin(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_17valMin = {"valMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_17valMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_16valMin};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_17valMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("valMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "valMin") < 0)) __PYX_ERR(12, 61, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("valMin", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 61, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.valMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_16valMin(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_16valMin(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("valMin", 1);

  /* "include/Estimate.pyx":62
 * 
 *     def valMin(self, source = ""):
 *        return self.estptr().valMin(source)             # <<<<<<<<<<<<<<
 * 
 *     def errDownUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 62, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 62, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->valMin(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 62, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":61
 *        return self.estptr().valMax(source)
 * 
 *     def valMin(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMin(source)
 * 
 */

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

/* "include/Estimate.pyx":64
 *        return self.estptr().valMin(source)
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_19errDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_18errDownUp, "Estimate.errDownUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_19errDownUp = {"errDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_19errDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_18errDownUp};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_19errDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errDownUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 64, __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, "errDownUp") < 0)) __PYX_ERR(12, 64, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errDownUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errDownUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_18errDownUp(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_18errDownUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("errDownUp", 1);

  /* "include/Estimate.pyx":65
 * 
 *     def errDownUp(self, source = ""):
 *        return tuple(self.estptr().errDownUp(source))             # <<<<<<<<<<<<<<
 * 
 *     def err(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 65, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 65, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errDownUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 65, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":64
 *        return self.estptr().valMin(source)
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */

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

/* "include/Estimate.pyx":67
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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_8Estimate_20err, "Estimate.err(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_21err = {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_21err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_20err};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_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
) {
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("err (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 67, __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, "err") < 0)) __PYX_ERR(12, 67, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("err", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 67, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.err", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_20err(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_20err(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("err", 1);

  /* "include/Estimate.pyx":68
 * 
 *     def err(self, source = ""):
 *        return tuple(self.estptr().err(source))             # <<<<<<<<<<<<<<
 * 
 *     def errNegPos(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 68, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 68, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->err(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 68, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":67
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */

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

/* "include/Estimate.pyx":70
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_23errNegPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_22errNegPos, "Estimate.errNegPos(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_23errNegPos = {"errNegPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_23errNegPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_22errNegPos};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_23errNegPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errNegPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 70, __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, "errNegPos") < 0)) __PYX_ERR(12, 70, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errNegPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 70, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errNegPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_22errNegPos(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_22errNegPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("errNegPos", 1);

  /* "include/Estimate.pyx":71
 * 
 *     def errNegPos(self, source = ""):
 *        return tuple(self.estptr().errNegPos(source))             # <<<<<<<<<<<<<<
 * 
 *     def errDown(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 71, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 71, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errNegPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 71, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":70
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */

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

/* "include/Estimate.pyx":73
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_25errDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_24errDown, "Estimate.errDown(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_25errDown = {"errDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_25errDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_24errDown};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_25errDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errDown (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 73, __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, "errDown") < 0)) __PYX_ERR(12, 73, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errDown", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 73, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errDown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_24errDown(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_24errDown(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errDown", 1);

  /* "include/Estimate.pyx":74
 * 
 *     def errDown(self, source = ""):
 *        return self.estptr().errDown(source)             # <<<<<<<<<<<<<<
 * 
 *     def errUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 74, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 74, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errDown(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 74, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":73
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */

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

/* "include/Estimate.pyx":76
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_27errUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_26errUp, "Estimate.errUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_27errUp = {"errUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_27errUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_26errUp};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_27errUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 76, __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, "errUp") < 0)) __PYX_ERR(12, 76, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 76, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_26errUp(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_26errUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errUp", 1);

  /* "include/Estimate.pyx":77
 * 
 *     def errUp(self, source = ""):
 *        return self.estptr().errUp(source)             # <<<<<<<<<<<<<<
 * 
 *     def errNeg(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 77, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 77, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 77, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":76
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */

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

/* "include/Estimate.pyx":79
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_29errNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_28errNeg, "Estimate.errNeg(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_29errNeg = {"errNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_29errNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_28errNeg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_29errNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "errNeg") < 0)) __PYX_ERR(12, 79, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 79, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_28errNeg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_28errNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errNeg", 1);

  /* "include/Estimate.pyx":80
 * 
 *     def errNeg(self, source = ""):
 *        return self.estptr().errNeg(source)             # <<<<<<<<<<<<<<
 * 
 *     def errPos(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 80, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 80, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 80, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":79
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */

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

/* "include/Estimate.pyx":82
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_31errPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_30errPos, "Estimate.errPos(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_31errPos = {"errPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_31errPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_30errPos};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_31errPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 82, __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, "errPos") < 0)) __PYX_ERR(12, 82, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 82, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_30errPos(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_30errPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errPos", 1);

  /* "include/Estimate.pyx":83
 * 
 *     def errPos(self, source = ""):
 *        return self.estptr().errPos(source)             # <<<<<<<<<<<<<<
 * 
 *     def errAvg(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 83, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 83, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 83, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":82
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */

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

/* "include/Estimate.pyx":85
 *        return self.estptr().errPos(source)
 * 
 *     def errAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errAvg(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_33errAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_32errAvg, "Estimate.errAvg(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_33errAvg = {"errAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_33errAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_32errAvg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_33errAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 85, __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(12, 85, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 85, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_32errAvg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_32errAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errAvg", 1);

  /* "include/Estimate.pyx":86
 * 
 *     def errAvg(self, source = ""):
 *        return self.estptr().errAvg(source)             # <<<<<<<<<<<<<<
 * 
 *     def errEnv(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 86, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 86, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errAvg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 86, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":85
 *        return self.estptr().errPos(source)
 * 
 *     def errAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errAvg(source)
 * 
 */

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

/* "include/Estimate.pyx":88
 *        return self.estptr().errAvg(source)
 * 
 *     def errEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errEnv(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_35errEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_34errEnv, "Estimate.errEnv(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_35errEnv = {"errEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_35errEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_34errEnv};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_35errEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errEnv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 88, __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, "errEnv") < 0)) __PYX_ERR(12, 88, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errEnv", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 88, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.errEnv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_34errEnv(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_34errEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("errEnv", 1);

  /* "include/Estimate.pyx":89
 * 
 *     def errEnv(self, source = ""):
 *        return self.estptr().errEnv(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrDownUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 89, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 89, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errEnv(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 89, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":88
 *        return self.estptr().errAvg(source)
 * 
 *     def errEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errEnv(source)
 * 
 */

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

/* "include/Estimate.pyx":91
 *        return self.estptr().errEnv(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_37relErrDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_36relErrDownUp, "Estimate.relErrDownUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_37relErrDownUp = {"relErrDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_37relErrDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_36relErrDownUp};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_37relErrDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrDownUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 91, __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, "relErrDownUp") < 0)) __PYX_ERR(12, 91, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrDownUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 91, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErrDownUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_36relErrDownUp(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_36relErrDownUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relErrDownUp", 1);

  /* "include/Estimate.pyx":92
 * 
 *     def relErrDownUp(self, source = ""):
 *        return tuple(self.estptr().relErrDownUp(source))             # <<<<<<<<<<<<<<
 * 
 *     def relErr(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 92, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 92, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrDownUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 92, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":91
 *        return self.estptr().errEnv(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */

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

/* "include/Estimate.pyx":94
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_39relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_38relErr, "Estimate.relErr(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_39relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_39relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_38relErr};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_39relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 94, __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, "relErr") < 0)) __PYX_ERR(12, 94, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 94, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_38relErr(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_38relErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relErr", 1);

  /* "include/Estimate.pyx":95
 * 
 *     def relErr(self, source = ""):
 *        return tuple(self.estptr().relErr(source))             # <<<<<<<<<<<<<<
 * 
 *     def relErrDown(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 95, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 95, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 95, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":94
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */

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

/* "include/Estimate.pyx":97
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_41relErrDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_40relErrDown, "Estimate.relErrDown(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_41relErrDown = {"relErrDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_41relErrDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_40relErrDown};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_41relErrDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrDown (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 97, __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, "relErrDown") < 0)) __PYX_ERR(12, 97, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrDown", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErrDown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_40relErrDown(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_40relErrDown(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relErrDown", 1);

  /* "include/Estimate.pyx":98
 * 
 *     def relErrDown(self, source = ""):
 *        return self.estptr().relErrDown(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 98, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 98, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrDown(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 98, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":97
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */

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

/* "include/Estimate.pyx":100
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_43relErrUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_42relErrUp, "Estimate.relErrUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_43relErrUp = {"relErrUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_43relErrUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_42relErrUp};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_43relErrUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relErrUp") < 0)) __PYX_ERR(12, 100, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErrUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_42relErrUp(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_42relErrUp(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relErrUp", 1);

  /* "include/Estimate.pyx":101
 * 
 *     def relErrUp(self, source = ""):
 *        return self.estptr().relErrUp(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrAvg(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 101, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 101, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 101, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":100
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */

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

/* "include/Estimate.pyx":103
 *        return self.estptr().relErrUp(source)
 * 
 *     def relErrAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrAvg(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_45relErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_44relErrAvg, "Estimate.relErrAvg(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_45relErrAvg = {"relErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_45relErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_44relErrAvg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_45relErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relErrAvg") < 0)) __PYX_ERR(12, 103, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrAvg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_44relErrAvg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_44relErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relErrAvg", 1);

  /* "include/Estimate.pyx":104
 * 
 *     def relErrAvg(self, source = ""):
 *        return self.estptr().relErrAvg(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrEnv(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 104, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrAvg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 104, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":103
 *        return self.estptr().relErrUp(source)
 * 
 *     def relErrAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrAvg(source)
 * 
 */

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

/* "include/Estimate.pyx":106
 *        return self.estptr().relErrAvg(source)
 * 
 *     def relErrEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrEnv(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_47relErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_46relErrEnv, "Estimate.relErrEnv(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_47relErrEnv = {"relErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_47relErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_46relErrEnv};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_47relErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrEnv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relErrEnv") < 0)) __PYX_ERR(12, 106, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrEnv", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relErrEnv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_46relErrEnv(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_46relErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relErrEnv", 1);

  /* "include/Estimate.pyx":107
 * 
 *     def relErrEnv(self, source = ""):
 *        return self.estptr().relErrEnv(source)             # <<<<<<<<<<<<<<
 * 
 *     def quadSum(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 107, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 107, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrEnv(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 107, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":106
 *        return self.estptr().relErrAvg(source)
 * 
 *     def relErrEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrEnv(source)
 * 
 */

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

/* "include/Estimate.pyx":109
 *        return self.estptr().relErrEnv(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_49quadSum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_48quadSum, "Estimate.quadSum(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_49quadSum = {"quadSum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_49quadSum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_48quadSum};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_49quadSum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "quadSum") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSum", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.quadSum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_48quadSum(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_48quadSum(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("quadSum", 1);

  /* "include/Estimate.pyx":110
 * 
 *     def quadSum(self, pat_match = ""):
 *        return tuple(self.estptr().quadSum(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def quadSumNeg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 110, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 110, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSum(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 110, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":109
 *        return self.estptr().relErrEnv(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */

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

/* "include/Estimate.pyx":112
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_51quadSumNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_50quadSumNeg, "Estimate.quadSumNeg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_51quadSumNeg = {"quadSumNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_51quadSumNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_50quadSumNeg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_51quadSumNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "quadSumNeg") < 0)) __PYX_ERR(12, 112, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 112, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.quadSumNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_50quadSumNeg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_50quadSumNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("quadSumNeg", 1);

  /* "include/Estimate.pyx":113
 * 
 *     def quadSumNeg(self, pat_match = ""):
 *        return self.estptr().quadSumNeg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def quadSumPos(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 113, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 113, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 113, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":112
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":115
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_53quadSumPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_52quadSumPos, "Estimate.quadSumPos(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_53quadSumPos = {"quadSumPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_53quadSumPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_52quadSumPos};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_53quadSumPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 115, __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, "quadSumPos") < 0)) __PYX_ERR(12, 115, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 115, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.quadSumPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_52quadSumPos(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_52quadSumPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("quadSumPos", 1);

  /* "include/Estimate.pyx":116
 * 
 *     def quadSumPos(self, pat_match = ""):
 *        return self.estptr().quadSumPos(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def quadSumAvg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 116, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 116, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 116, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":115
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":118
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def quadSumAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_55quadSumAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_54quadSumAvg, "Estimate.quadSumAvg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_55quadSumAvg = {"quadSumAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_55quadSumAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_54quadSumAvg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_55quadSumAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "quadSumAvg") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumAvg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.quadSumAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_54quadSumAvg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_54quadSumAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("quadSumAvg", 1);

  /* "include/Estimate.pyx":119
 * 
 *     def quadSumAvg(self, pat_match = ""):
 *        return self.estptr().quadSumAvg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def quadSumEnv(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 119, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 119, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumAvg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 119, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":118
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def quadSumAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":121
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 *     def quadSumEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_57quadSumEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_56quadSumEnv, "Estimate.quadSumEnv(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_57quadSumEnv = {"quadSumEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_57quadSumEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_56quadSumEnv};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_57quadSumEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumEnv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 121, __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, "quadSumEnv") < 0)) __PYX_ERR(12, 121, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumEnv", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 121, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.quadSumEnv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_56quadSumEnv(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_56quadSumEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("quadSumEnv", 1);

  /* "include/Estimate.pyx":122
 * 
 *     def quadSumEnv(self, pat_match = ""):
 *        return self.estptr().quadSumEnv(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def totalErr(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 122, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 122, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumEnv(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 122, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":121
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 *     def quadSumEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":124
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_59totalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_58totalErr, "Estimate.totalErr(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_59totalErr = {"totalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_59totalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_58totalErr};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_59totalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 124, __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, "totalErr") < 0)) __PYX_ERR(12, 124, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 124, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.totalErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_58totalErr(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_58totalErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("totalErr", 1);

  /* "include/Estimate.pyx":125
 * 
 *     def totalErr(self, pat_match = ""):
 *        return tuple(self.estptr().totalErr(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def totalErrNeg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 125, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 125, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 125, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":124
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */

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

/* "include/Estimate.pyx":127
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def totalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_61totalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_60totalErrNeg, "Estimate.totalErrNeg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_61totalErrNeg = {"totalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_61totalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_60totalErrNeg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_61totalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErrNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 127, __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, "totalErrNeg") < 0)) __PYX_ERR(12, 127, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErrNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.totalErrNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_60totalErrNeg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_60totalErrNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  double __pyx_t_3;
  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("totalErrNeg", 1);

  /* "include/Estimate.pyx":128
 * 
 *     def totalErrNeg(self, pat_match = ""):
 *        return tuple(self.estptr().totalErrNeg(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def totalErrPos(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 128, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 128, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErrNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 128, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":127
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def totalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 */

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

/* "include/Estimate.pyx":130
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 *     def totalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_63totalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_62totalErrPos, "Estimate.totalErrPos(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_63totalErrPos = {"totalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_63totalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_62totalErrPos};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_63totalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErrPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "totalErrPos") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErrPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.totalErrPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_62totalErrPos(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_62totalErrPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  double __pyx_t_3;
  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("totalErrPos", 1);

  /* "include/Estimate.pyx":131
 * 
 *     def totalErrPos(self, pat_match = ""):
 *        return tuple(self.estptr().totalErrPos(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def totalErrAvg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 131, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 131, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErrPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 131, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":130
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 *     def totalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 */

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

/* "include/Estimate.pyx":133
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 *     def totalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_65totalErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_64totalErrAvg, "Estimate.totalErrAvg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_65totalErrAvg = {"totalErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_65totalErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_64totalErrAvg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_65totalErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "totalErrAvg") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErrAvg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.totalErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_64totalErrAvg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_64totalErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("totalErrAvg", 1);

  /* "include/Estimate.pyx":134
 * 
 *     def totalErrAvg(self, pat_match = ""):
 *        return self.estptr().totalErrAvg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def totalErrEnv(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 134, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 134, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErrAvg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 134, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":133
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 *     def totalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":136
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 *     def totalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_67totalErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_66totalErrEnv, "Estimate.totalErrEnv(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_67totalErrEnv = {"totalErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_67totalErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_66totalErrEnv};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_67totalErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErrEnv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 136, __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, "totalErrEnv") < 0)) __PYX_ERR(12, 136, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErrEnv", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 136, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.totalErrEnv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_66totalErrEnv(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_66totalErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("totalErrEnv", 1);

  /* "include/Estimate.pyx":137
 * 
 *     def totalErrEnv(self, pat_match = ""):
 *        return self.estptr().totalErrEnv(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErr(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 137, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 137, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErrEnv(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 137, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":136
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 *     def totalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":139
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_69relTotalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_68relTotalErr, "Estimate.relTotalErr(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_69relTotalErr = {"relTotalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_69relTotalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_68relTotalErr};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_69relTotalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relTotalErr") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relTotalErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_68relTotalErr(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_68relTotalErr(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relTotalErr", 1);

  /* "include/Estimate.pyx":140
 * 
 *     def relTotalErr(self, pat_match = ""):
 *        return tuple(self.estptr().relTotalErr(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrNeg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 140, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 140, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 140, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":139
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */

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

/* "include/Estimate.pyx":142
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_71relTotalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_70relTotalErrNeg, "Estimate.relTotalErrNeg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_71relTotalErrNeg = {"relTotalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_71relTotalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_70relTotalErrNeg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_71relTotalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relTotalErrNeg") < 0)) __PYX_ERR(12, 142, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relTotalErrNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_70relTotalErrNeg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_70relTotalErrNeg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relTotalErrNeg", 1);

  /* "include/Estimate.pyx":143
 * 
 *     def relTotalErrNeg(self, pat_match = ""):
 *        return self.estptr().relTotalErrNeg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrPos(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 143, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 143, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 143, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":142
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":145
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_73relTotalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_72relTotalErrPos, "Estimate.relTotalErrPos(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_73relTotalErrPos = {"relTotalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_73relTotalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_72relTotalErrPos};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_73relTotalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relTotalErrPos") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relTotalErrPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_72relTotalErrPos(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_72relTotalErrPos(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relTotalErrPos", 1);

  /* "include/Estimate.pyx":146
 * 
 *     def relTotalErrPos(self, pat_match = ""):
 *        return self.estptr().relTotalErrPos(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrAvg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 146, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 146, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 146, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":145
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":148
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def relTotalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_75relTotalErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_74relTotalErrAvg, "Estimate.relTotalErrAvg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_75relTotalErrAvg = {"relTotalErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_75relTotalErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_74relTotalErrAvg};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_75relTotalErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __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, "relTotalErrAvg") < 0)) __PYX_ERR(12, 148, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrAvg", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relTotalErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_74relTotalErrAvg(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_74relTotalErrAvg(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relTotalErrAvg", 1);

  /* "include/Estimate.pyx":149
 * 
 *     def relTotalErrAvg(self, pat_match = ""):
 *        return self.estptr().relTotalErrAvg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrEnv(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 149, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 149, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrAvg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 149, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":148
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def relTotalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":151
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 *     def relTotalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_77relTotalErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_76relTotalErrEnv, "Estimate.relTotalErrEnv(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_77relTotalErrEnv = {"relTotalErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_77relTotalErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_76relTotalErrEnv};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_77relTotalErrEnv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrEnv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "relTotalErrEnv") < 0)) __PYX_ERR(12, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrEnv", 0, 0, 1, __pyx_nargs); __PYX_ERR(12, 151, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.relTotalErrEnv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_76relTotalErrEnv(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_76relTotalErrEnv(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::string __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("relTotalErrEnv", 1);

  /* "include/Estimate.pyx":152
 * 
 *     def relTotalErrEnv(self, pat_match = ""):
 *        return self.estptr().relTotalErrEnv(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def hasSource(self, str source):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 152, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 152, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrEnv(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 152, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":151
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 *     def relTotalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 */

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

/* "include/Estimate.pyx":154
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_79hasSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_78hasSource, "Estimate.hasSource(self, str source)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_79hasSource = {"hasSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_79hasSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_78hasSource};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_79hasSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasSource (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "hasSource") < 0)) __PYX_ERR(12, 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_source = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("hasSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.hasSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(12, 154, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_78hasSource(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_78hasSource(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__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("hasSource", 1);

  /* "include/Estimate.pyx":155
 * 
 *     def hasSource(self, str source):
 *        return self.estptr().hasSource(<string> source)             # <<<<<<<<<<<<<<
 * 
 *     def sources(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 155, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 155, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->hasSource(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 155, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":154
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */

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

/* "include/Estimate.pyx":157
 *        return self.estptr().hasSource(<string> source)
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_81sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_80sources, "Estimate.sources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_81sources = {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_81sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_80sources};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_81sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_80sources(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_80sources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::vector<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("sources", 1);

  /* "include/Estimate.pyx":158
 * 
 *     def sources(self):
 *        return self.estptr().sources()             # <<<<<<<<<<<<<<
 * 
 *     def numErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 158, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sources();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 158, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":157
 *        return self.estptr().hasSource(<string> source)
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */

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

/* "include/Estimate.pyx":160
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_83numErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_82numErrs, "Estimate.numErrs(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_83numErrs = {"numErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_83numErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_82numErrs};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_83numErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_82numErrs(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_82numErrs(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__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("numErrs", 1);

  /* "include/Estimate.pyx":161
 * 
 *     def numErrs(self):
 *        return self.estptr().numErrs()             # <<<<<<<<<<<<<<
 * 
 *     def rmSource(self, str source):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 161, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 161, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":160
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */

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

/* "include/Estimate.pyx":163
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_85rmSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_84rmSource, "Estimate.rmSource(self, str source)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_85rmSource = {"rmSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_85rmSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_84rmSource};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_85rmSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmSource (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 163, __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, "rmSource") < 0)) __PYX_ERR(12, 163, __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 = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.rmSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(12, 163, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_84rmSource(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_84rmSource(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__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("rmSource", 1);

  /* "include/Estimate.pyx":164
 * 
 *     def rmSource(self, str source):
 *       return self.estptr().rmSource(<string> source)             # <<<<<<<<<<<<<<
 * 
 *     def rmErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 164, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 164, __pyx_L1_error)
  try {
    __pyx_t_1->rmSource(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 164, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":163
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */

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

/* "include/Estimate.pyx":166
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_87rmErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_86rmErrs, "Estimate.rmErrs(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_87rmErrs = {"rmErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_87rmErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_86rmErrs};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_87rmErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_86rmErrs(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_86rmErrs(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmErrs", 1);

  /* "include/Estimate.pyx":167
 * 
 *     def rmErrs(self):
 *       return self.estptr().rmErrs()             # <<<<<<<<<<<<<<
 * 
 *     def serializeSources(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 167, __pyx_L1_error)
  try {
    __pyx_t_1->rmErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 167, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":166
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */

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

/* "include/Estimate.pyx":169
 *       return self.estptr().rmErrs()
 * 
 *     def serializeSources(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().sources()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_89serializeSources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_88serializeSources, "Estimate.serializeSources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_89serializeSources = {"serializeSources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_89serializeSources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_88serializeSources};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_89serializeSources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeSources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("serializeSources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "serializeSources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_88serializeSources(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_88serializeSources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  std::vector<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("serializeSources", 1);

  /* "include/Estimate.pyx":170
 * 
 *     def serializeSources(self):
 *       return self.estptr().sources()             # <<<<<<<<<<<<<<
 * 
 *     def deserializeSources(self, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 170, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sources();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 170, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":169
 *       return self.estptr().rmErrs()
 * 
 *     def serializeSources(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().sources()
 * 
 */

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

/* "include/Estimate.pyx":172
 *       return self.estptr().sources()
 * 
 *     def deserializeSources(self, data):             # <<<<<<<<<<<<<<
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_91deserializeSources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_90deserializeSources, "Estimate.deserializeSources(self, data)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_91deserializeSources = {"deserializeSources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_91deserializeSources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_90deserializeSources};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_91deserializeSources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeSources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 172, __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, "deserializeSources") < 0)) __PYX_ERR(12, 172, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeSources", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 172, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.deserializeSources", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_90deserializeSources(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_90deserializeSources(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Estimate *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeSources", 1);

  /* "include/Estimate.pyx":174
 *     def deserializeSources(self, data):
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *       return self.estptr().deserializeSources(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 174, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(12, 174, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(12, 174, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(12, 174, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(12, 174, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(12, 174, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(12, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Estimate.pyx":175
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]
 *       return self.estptr().deserializeSources(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, factor):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 175, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeSources(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 175, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":172
 *       return self.estptr().sources()
 * 
 *     def deserializeSources(self, data):             # <<<<<<<<<<<<<<
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]
 */

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

/* "include/Estimate.pyx":177
 *       return self.estptr().deserializeSources(cdata)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *       self.estptr().scale(factor)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_93scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8Estimate_92scale, "Estimate.scale(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_93scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_93scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_92scale};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_93scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 177, __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, "scale") < 0)) __PYX_ERR(12, 177, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_92scale(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_92scale(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 1);

  /* "include/Estimate.pyx":178
 * 
 *     def scale(self, factor):
 *       self.estptr().scale(factor)             # <<<<<<<<<<<<<<
 * 
 *     ## In-place special methods
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 178, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 178, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 178, __pyx_L1_error)
  }

  /* "include/Estimate.pyx":177
 *       return self.estptr().deserializeSources(cdata)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *       self.estptr().scale(factor)
 * 
 */

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

/* "include/Estimate.pyx":181
 * 
 *     ## In-place special methods
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_94__repr__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self) {
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/Estimate.pyx":182
 *     ## In-place special methods
 *     def __repr__(self):
 *         val = self.val()             # <<<<<<<<<<<<<<
 *         #lo,hi = self.quadSum()
 *         return '<Estimate(value=%.2e)>' % val
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(12, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_val = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Estimate.pyx":184
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 *         return '<Estimate(value=%.2e)>' % val             # <<<<<<<<<<<<<<
 * 
 *     def __add__(Estimate self, Estimate other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Estimate_value_2e, __pyx_v_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":181
 * 
 *     ## In-place special methods
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 */

  /* 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.Estimate.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate.pyx":186
 *         return '<Estimate(value=%.2e)>' % val
 * 
 *     def __add__(Estimate self, Estimate other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Estimate, new c.Estimate(deref(self.estptr()) + deref(other.estptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_97__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_8Estimate_97__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate, 1, "other", 0))) __PYX_ERR(12, 186, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_96__add__(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate *)__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_8Estimate_96__add__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  YODA::Estimate *__pyx_t_2;
  YODA::Estimate *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/Estimate.pyx":187
 * 
 *     def __add__(Estimate self, Estimate other):
 *         return cutil.new_owned_cls(Estimate, new c.Estimate(deref(self.estptr()) + deref(other.estptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Estimate self, Estimate other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 187, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_other->__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 187, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Estimate(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 187, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate.pyx":186
 *         return '<Estimate(value=%.2e)>' % val
 * 
 *     def __add__(Estimate self, Estimate other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Estimate, new c.Estimate(deref(self.estptr()) + deref(other.estptr())))
 * 
 */

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

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

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_8Estimate_99__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_8Estimate_99__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate, 1, "other", 0))) __PYX_ERR(12, 189, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_98__sub__(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate *)__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_8Estimate_98__sub__(struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate *__pyx_t_1;
  YODA::Estimate *__pyx_t_2;
  YODA::Estimate *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/Estimate.pyx":190
 * 
 *     def __sub__(Estimate self, Estimate other):
 *         return cutil.new_owned_cls(Estimate, new c.Estimate(deref(self.estptr()) - deref(other.estptr())))             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_self->__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 190, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_other->__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Estimate *)NULL))) __PYX_ERR(12, 190, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Estimate(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 190, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

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

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Estimate.__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_8Estimate_101__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_8Estimate_100__reduce_cython__, "Estimate.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_101__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_101__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_100__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_101__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_8Estimate_100__reduce_cython__(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_8Estimate_100__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate *__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__", 1);

  /* "(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(1, 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.Estimate.__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_8Estimate_103__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_8Estimate_102__setstate_cython__, "Estimate.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_8Estimate_103__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_103__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_102__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_8Estimate_103__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8Estimate_102__setstate_cython__(((struct __pyx_obj_4yoda_4core_Estimate *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8Estimate_102__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate *__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__", 1);

  /* "(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(1, 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.Estimate.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":7
 *     """
 * 
 *     cdef c.Estimate0D* estptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Estimate0D *> self.ptr()
 * 
 */

static YODA::Estimate0D *__pyx_f_4yoda_4core_10Estimate0D_estptr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  YODA::Estimate0D *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/Estimate0D.pyx":8
 * 
 *     cdef c.Estimate0D* estptr(self) except NULL:
 *         return <c.Estimate0D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, path="", title=""):
 */
  __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, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Estimate0D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":7
 *     """
 * 
 *     cdef c.Estimate0D* estptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Estimate0D *> self.ptr()
 * 
 */

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

/* "include/Estimate0D.pyx":10
 *         return <c.Estimate0D *> self.ptr()
 * 
 *     def __init__(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Estimate0D(<string>path,
 *                                                  <string>title))
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_10Estimate0D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_10Estimate0D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_VARARGS(((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] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 10, __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] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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(13, 10, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 10, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D___init__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_10Estimate0D___init__(struct __pyx_obj_4yoda_4core_Estimate0D *__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::Estimate0D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/Estimate0D.pyx":11
 * 
 *     def __init__(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Estimate0D(<string>path,             # <<<<<<<<<<<<<<
 *                                                  <string>title))
 * 
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 11, __pyx_L1_error)

  /* "include/Estimate0D.pyx":12
 *     def __init__(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Estimate0D(<string>path,
 *                                                  <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 12, __pyx_L1_error)

  /* "include/Estimate0D.pyx":11
 * 
 *     def __init__(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Estimate0D(<string>path,             # <<<<<<<<<<<<<<
 *                                                  <string>title))
 * 
 */
  try {
    __pyx_t_3 = new YODA::Estimate0D(((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, 11, __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, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Estimate0D.pyx":10
 *         return <c.Estimate0D *> self.ptr()
 * 
 *     def __init__(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Estimate0D(<string>path,
 *                                                  <string>title))
 */

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

/* "include/Estimate0D.pyx":14
 *                                                  <string>title))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_2__repr__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/Estimate0D.pyx":15
 * 
 *     def __repr__(self):
 *         val = self.val()             # <<<<<<<<<<<<<<
 *         #lo,hi = self.quadSum()
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(13, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_val = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":17
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(13, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_val);
  __Pyx_GIVEREF(__pyx_v_val);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_val)) __PYX_ERR(13, 17, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(13, 17, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Estimate0D_value_2e_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 17, __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/Estimate0D.pyx":14
 *                                                  <string>title))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         val = self.val()
 *         #lo,hi = self.quadSum()
 */

  /* 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.Estimate0D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":19
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Estimate0D.
 *         Clone this Estimate0Dr."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_5clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_4clone, "Estimate0D.clone(self)\nNone -> Estimate0D.\n        Clone this Estimate0Dr.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_5clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_5clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_4clone};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_5clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10Estimate0D_4clone(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_4clone(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  YODA::Estimate0D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/Estimate0D.pyx":22
 *         """None -> Estimate0D.
 *         Clone this Estimate0Dr."""
 *         return cutil.new_owned_cls(Estimate0D, self.estptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def setVal(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 22, __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, 22, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":19
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Estimate0D.
 *         Clone this Estimate0Dr."""
 */

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

/* "include/Estimate0D.pyx":24
 *         return cutil.new_owned_cls(Estimate0D, self.estptr().newclone())
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_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_10Estimate0D_6setVal, "Estimate0D.setVal(self, value)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_7setVal = {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_7setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_6setVal};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_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_value = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,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_value)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 24, __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, "setVal") < 0)) __PYX_ERR(13, 24, __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_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVal", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.setVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_6setVal(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_value);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_6setVal(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVal", 1);

  /* "include/Estimate0D.pyx":25
 * 
 *     def setVal(self, value):
 *        self.estptr().setVal(value)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 25, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(13, 25, __pyx_L1_error)
  try {
    __pyx_t_1->setVal(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 25, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":24
 *         return cutil.new_owned_cls(Estimate0D, self.estptr().newclone())
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */

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

/* "include/Estimate0D.pyx":28
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_9setErr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_8setErr, "Estimate0D.setErr(self, *es)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_9setErr = {"setErr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_9setErr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_8setErr};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_9setErr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErr (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setErr", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_8setErr(((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_8setErr(struct __pyx_obj_4yoda_4core_Estimate0D *__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;
  YODA::Estimate0D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __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("setErr", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Estimate0D.pyx":29
 * 
 *     def setErr(self, *es):
 *        source = None             # <<<<<<<<<<<<<<
 *        es = list(es)
 *        if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Estimate0D.pyx":30
 *     def setErr(self, *es):
 *        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(13, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":31
 *        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(13, 31, __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/Estimate0D.pyx":32
 *        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(13, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate0D.pyx":33
 *        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(13, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate0D.pyx":31
 *        source = None
 *        es = list(es)
 *        if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *            source = es[-1]
 *            es = es[:-1]
 */
  }

  /* "include/Estimate0D.pyx":34
 *            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/Estimate0D.pyx":35
 *            es = es[:-1]
 *        errs = es
 *        if source is None:             # <<<<<<<<<<<<<<
 *            source = ""
 *        #if isinstance(source, str):
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Estimate0D.pyx":36
 *        errs = es
 *        if source is None:
 *            source = ""             # <<<<<<<<<<<<<<
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Estimate0D.pyx":35
 *            es = es[:-1]
 *        errs = es
 *        if source is None:             # <<<<<<<<<<<<<<
 *            source = ""
 *        #if isinstance(source, str):
 */
  }

  /* "include/Estimate0D.pyx":39
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:             # <<<<<<<<<<<<<<
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(13, 39, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Estimate0D.pyx":40
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> 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(13, 40, __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(13, 40, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Estimate0D.pyx":41
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)             # <<<<<<<<<<<<<<
 *                return
 *            errs = errs[0]
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 41, __pyx_L1_error)
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_util); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 41, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 41, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __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(13, 41, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_9 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 41, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 41, __pyx_L1_error)
      try {
        __pyx_t_5->setErr(__pyx_t_10, ((std::string)__pyx_t_11));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(13, 41, __pyx_L1_error)
      }

      /* "include/Estimate0D.pyx":42
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return             # <<<<<<<<<<<<<<
 *            errs = errs[0]
 *        self.estptr().setErr(tuple(errs), <string> source)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Estimate0D.pyx":40
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:
 *            if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return
 */
    }

    /* "include/Estimate0D.pyx":43
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 *                return
 *            errs = errs[0]             # <<<<<<<<<<<<<<
 *        self.estptr().setErr(tuple(errs), <string> 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(13, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Estimate0D.pyx":39
 *        #if isinstance(source, str):
 *        #    source = source.encode('utf-8')
 *        if len(errs) == 1:             # <<<<<<<<<<<<<<
 *            if not hasattr(errs[0], "__iter__"):
 *                self.estptr().setErr(util.read_symmetric(errs[0]), <string> source)
 */
  }

  /* "include/Estimate0D.pyx":44
 *                return
 *            errs = errs[0]
 *        self.estptr().setErr(tuple(errs), <string> source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 44, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 44, __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(13, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 44, __pyx_L1_error)
  try {
    __pyx_t_5->setErr(__pyx_t_10, ((std::string)__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 44, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":28
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Estimate0D.setErr", __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/Estimate0D.pyx":47
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_11set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_10set, "Estimate0D.set(self, val, errs, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_11set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_11set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_10set};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_11set(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_errs = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,&__pyx_n_s_errs,&__pyx_n_s_source,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_val)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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_errs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 0, 2, 3, 1); __PYX_ERR(13, 47, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "set") < 0)) __PYX_ERR(13, 47, __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_val = values[0];
    __pyx_v_errs = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 0, 2, 3, __pyx_nargs); __PYX_ERR(13, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_10set(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_val, __pyx_v_errs, __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_10set(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_errs, 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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 1);

  /* "include/Estimate0D.pyx":48
 * 
 *     def set(self, val, errs, source = ""):
 *        self.setVal(val)             # <<<<<<<<<<<<<<
 *        self.setErr(errs, source)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setVal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
    __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, 48, __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/Estimate0D.pyx":49
 *     def set(self, val, errs, source = ""):
 *        self.setVal(val)
 *        self.setErr(errs, source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_errs, __pyx_v_source};
    __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(13, 49, __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/Estimate0D.pyx":47
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */

  /* 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.Estimate0D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":52
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_12reset, "Estimate0D.reset(self)\n\n        () -> None\n\n        Reset the Estimate0Ds to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_13reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_12reset};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10Estimate0D_12reset(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_12reset(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/Estimate0D.pyx":58
 *         Reset the Estimate0Ds to the unfilled state.
 *         """
 *         self.estptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def val(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 58, __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, 58, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":52
 * 
 * 
 *     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.Estimate0D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":60
 *         self.estptr().reset()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_14val, "Estimate0D.val(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_15val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_14val};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10Estimate0D_14val(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_14val(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__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", 1);

  /* "include/Estimate0D.pyx":61
 * 
 *     def val(self):
 *        return self.estptr().val()             # <<<<<<<<<<<<<<
 * 
 *     def errDownUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 61, __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, 61, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":60
 *         self.estptr().reset()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */

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

/* "include/Estimate0D.pyx":63
 *        return self.estptr().val()
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_17errDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_16errDownUp, "Estimate0D.errDownUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_17errDownUp = {"errDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_17errDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_16errDownUp};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_17errDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errDownUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "errDownUp") < 0)) __PYX_ERR(13, 63, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errDownUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 63, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errDownUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_16errDownUp(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_16errDownUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("errDownUp", 1);

  /* "include/Estimate0D.pyx":64
 * 
 *     def errDownUp(self, source = ""):
 *        return tuple(self.estptr().errDownUp(source))             # <<<<<<<<<<<<<<
 * 
 *     def err(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 64, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 64, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errDownUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 64, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":63
 *        return self.estptr().val()
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */

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

/* "include/Estimate0D.pyx":66
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_19err(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_18err, "Estimate0D.err(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_19err = {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_19err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_18err};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_19err(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("err (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 66, __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, "err") < 0)) __PYX_ERR(13, 66, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("err", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.err", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_18err(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_18err(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("err", 1);

  /* "include/Estimate0D.pyx":67
 * 
 *     def err(self, source = ""):
 *        return tuple(self.estptr().err(source))             # <<<<<<<<<<<<<<
 * 
 *     def errNegPos(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 67, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 67, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->err(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 67, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":66
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */

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

/* "include/Estimate0D.pyx":69
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_21errNegPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_20errNegPos, "Estimate0D.errNegPos(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_21errNegPos = {"errNegPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_21errNegPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_20errNegPos};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_21errNegPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errNegPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "errNegPos") < 0)) __PYX_ERR(13, 69, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errNegPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errNegPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_20errNegPos(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_20errNegPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("errNegPos", 1);

  /* "include/Estimate0D.pyx":70
 * 
 *     def errNegPos(self, source = ""):
 *        return tuple(self.estptr().errNegPos(source))             # <<<<<<<<<<<<<<
 * 
 *     def errDown(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 70, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 70, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errNegPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 70, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":69
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */

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

/* "include/Estimate0D.pyx":72
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_23errDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_22errDown, "Estimate0D.errDown(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_23errDown = {"errDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_23errDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_22errDown};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_23errDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errDown (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 72, __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, "errDown") < 0)) __PYX_ERR(13, 72, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errDown", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errDown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_22errDown(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_22errDown(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("errDown", 1);

  /* "include/Estimate0D.pyx":73
 * 
 *     def errDown(self, source = ""):
 *        return self.estptr().errDown(source)             # <<<<<<<<<<<<<<
 * 
 *     def errUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 73, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 73, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errDown(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 73, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":72
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */

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

/* "include/Estimate0D.pyx":75
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_25errUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_24errUp, "Estimate0D.errUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_25errUp = {"errUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_25errUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_24errUp};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_25errUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 75, __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, "errUp") < 0)) __PYX_ERR(13, 75, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 75, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_24errUp(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_24errUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("errUp", 1);

  /* "include/Estimate0D.pyx":76
 * 
 *     def errUp(self, source = ""):
 *        return self.estptr().errUp(source)             # <<<<<<<<<<<<<<
 * 
 *     def errNeg(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 76, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 76, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 76, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":75
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */

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

/* "include/Estimate0D.pyx":78
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_27errNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_26errNeg, "Estimate0D.errNeg(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_27errNeg = {"errNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_27errNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_26errNeg};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_27errNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "errNeg") < 0)) __PYX_ERR(13, 78, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 78, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_26errNeg(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_26errNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("errNeg", 1);

  /* "include/Estimate0D.pyx":79
 * 
 *     def errNeg(self, source = ""):
 *        return self.estptr().errNeg(source)             # <<<<<<<<<<<<<<
 * 
 *     def errPos(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 79, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 79, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 79, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":78
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */

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

/* "include/Estimate0D.pyx":81
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_29errPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_28errPos, "Estimate0D.errPos(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_29errPos = {"errPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_29errPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_28errPos};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_29errPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "errPos") < 0)) __PYX_ERR(13, 81, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 81, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.errPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_28errPos(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_28errPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("errPos", 1);

  /* "include/Estimate0D.pyx":82
 * 
 *     def errPos(self, source = ""):
 *        return self.estptr().errPos(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrDownUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 82, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 82, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 82, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":81
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */

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

/* "include/Estimate0D.pyx":84
 *        return self.estptr().errPos(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_31relErrDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_30relErrDownUp, "Estimate0D.relErrDownUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_31relErrDownUp = {"relErrDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_31relErrDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_30relErrDownUp};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_31relErrDownUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrDownUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "relErrDownUp") < 0)) __PYX_ERR(13, 84, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrDownUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 84, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relErrDownUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_30relErrDownUp(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_30relErrDownUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relErrDownUp", 1);

  /* "include/Estimate0D.pyx":85
 * 
 *     def relErrDownUp(self, source = ""):
 *        return tuple(self.estptr().relErrDownUp(source))             # <<<<<<<<<<<<<<
 * 
 *     def relErr(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 85, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 85, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrDownUp(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 85, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":84
 *        return self.estptr().errPos(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */

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

/* "include/Estimate0D.pyx":87
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_33relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_32relErr, "Estimate0D.relErr(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_33relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_33relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_32relErr};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_33relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 87, __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, "relErr") < 0)) __PYX_ERR(13, 87, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 87, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_32relErr(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_32relErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relErr", 1);

  /* "include/Estimate0D.pyx":88
 * 
 *     def relErr(self, source = ""):
 *        return tuple(self.estptr().relErr(source))             # <<<<<<<<<<<<<<
 * 
 *     def relErrDown(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 88, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 88, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 88, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":87
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */

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

/* "include/Estimate0D.pyx":90
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_35relErrDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_34relErrDown, "Estimate0D.relErrDown(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_35relErrDown = {"relErrDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_35relErrDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_34relErrDown};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_35relErrDown(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrDown (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 90, __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, "relErrDown") < 0)) __PYX_ERR(13, 90, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrDown", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 90, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relErrDown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_34relErrDown(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_34relErrDown(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("relErrDown", 1);

  /* "include/Estimate0D.pyx":91
 * 
 *     def relErrDown(self, source = ""):
 *        return self.estptr().relErrDown(source)             # <<<<<<<<<<<<<<
 * 
 *     def relErrUp(self, source = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 91, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 91, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrDown(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 91, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":90
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */

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

/* "include/Estimate0D.pyx":93
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_37relErrUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_36relErrUp, "Estimate0D.relErrUp(self, source='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_37relErrUp = {"relErrUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_37relErrUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_36relErrUp};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_37relErrUp(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrUp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "relErrUp") < 0)) __PYX_ERR(13, 93, __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_source = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrUp", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 93, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relErrUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_36relErrUp(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_36relErrUp(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("relErrUp", 1);

  /* "include/Estimate0D.pyx":94
 * 
 *     def relErrUp(self, source = ""):
 *        return self.estptr().relErrUp(source)             # <<<<<<<<<<<<<<
 * 
 *     def quadSum(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 94, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 94, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relErrUp(__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)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":93
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */

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

/* "include/Estimate0D.pyx":96
 *        return self.estptr().relErrUp(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_39quadSum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_38quadSum, "Estimate0D.quadSum(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_39quadSum = {"quadSum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_39quadSum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_38quadSum};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_39quadSum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 96, __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, "quadSum") < 0)) __PYX_ERR(13, 96, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSum", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 96, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.quadSum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_38quadSum(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_38quadSum(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("quadSum", 1);

  /* "include/Estimate0D.pyx":97
 * 
 *     def quadSum(self, pat_match = ""):
 *        return tuple(self.estptr().quadSum(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def quadSumNeg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 97, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 97, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSum(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 97, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":96
 *        return self.estptr().relErrUp(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */

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

/* "include/Estimate0D.pyx":99
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_41quadSumNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_40quadSumNeg, "Estimate0D.quadSumNeg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_41quadSumNeg = {"quadSumNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_41quadSumNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_40quadSumNeg};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_41quadSumNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "quadSumNeg") < 0)) __PYX_ERR(13, 99, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 99, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.quadSumNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_40quadSumNeg(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_40quadSumNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("quadSumNeg", 1);

  /* "include/Estimate0D.pyx":100
 * 
 *     def quadSumNeg(self, pat_match = ""):
 *        return self.estptr().quadSumNeg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def quadSumPos(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 100, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 100, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 100, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":99
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */

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

/* "include/Estimate0D.pyx":102
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_43quadSumPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_42quadSumPos, "Estimate0D.quadSumPos(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_43quadSumPos = {"quadSumPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_43quadSumPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_42quadSumPos};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_43quadSumPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quadSumPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "quadSumPos") < 0)) __PYX_ERR(13, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("quadSumPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 102, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.quadSumPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_42quadSumPos(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_42quadSumPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("quadSumPos", 1);

  /* "include/Estimate0D.pyx":103
 * 
 *     def quadSumPos(self, pat_match = ""):
 *        return self.estptr().quadSumPos(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def totalErr(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 103, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 103, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->quadSumPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 103, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":102
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */

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

/* "include/Estimate0D.pyx":105
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_45totalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_44totalErr, "Estimate0D.totalErr(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_45totalErr = {"totalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_45totalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_44totalErr};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_45totalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "totalErr") < 0)) __PYX_ERR(13, 105, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("totalErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.totalErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_44totalErr(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_44totalErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("totalErr", 1);

  /* "include/Estimate0D.pyx":106
 * 
 *     def totalErr(self, pat_match = ""):
 *        return tuple(self.estptr().totalErr(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErr(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 106, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 106, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->totalErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 106, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":105
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */

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

/* "include/Estimate0D.pyx":108
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_47relTotalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_46relTotalErr, "Estimate0D.relTotalErr(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_47relTotalErr = {"relTotalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_47relTotalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_46relTotalErr};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_47relTotalErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "relTotalErr") < 0)) __PYX_ERR(13, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 108, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relTotalErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_46relTotalErr(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_46relTotalErr(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  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("relTotalErr", 1);

  /* "include/Estimate0D.pyx":109
 * 
 *     def relTotalErr(self, pat_match = ""):
 *        return tuple(self.estptr().relTotalErr(pat_match))             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrNeg(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 109, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 109, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 109, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":108
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */

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

/* "include/Estimate0D.pyx":111
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_49relTotalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_48relTotalErrNeg, "Estimate0D.relTotalErrNeg(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_49relTotalErrNeg = {"relTotalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_49relTotalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_48relTotalErrNeg};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_49relTotalErrNeg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrNeg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 111, __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, "relTotalErrNeg") < 0)) __PYX_ERR(13, 111, __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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrNeg", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 111, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relTotalErrNeg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_48relTotalErrNeg(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_48relTotalErrNeg(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("relTotalErrNeg", 1);

  /* "include/Estimate0D.pyx":112
 * 
 *     def relTotalErrNeg(self, pat_match = ""):
 *        return self.estptr().relTotalErrNeg(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def relTotalErrPos(self, pat_match = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 112, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 112, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrNeg(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 112, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":111
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */

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

/* "include/Estimate0D.pyx":114
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_51relTotalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_50relTotalErrPos, "Estimate0D.relTotalErrPos(self, pat_match='')");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_51relTotalErrPos = {"relTotalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_51relTotalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_50relTotalErrPos};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_51relTotalErrPos(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relTotalErrPos (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    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_pat_match);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "relTotalErrPos") < 0)) __PYX_ERR(13, 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_pat_match = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relTotalErrPos", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.relTotalErrPos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_50relTotalErrPos(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_50relTotalErrPos(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_pat_match) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __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("relTotalErrPos", 1);

  /* "include/Estimate0D.pyx":115
 * 
 *     def relTotalErrPos(self, pat_match = ""):
 *        return self.estptr().relTotalErrPos(pat_match)             # <<<<<<<<<<<<<<
 * 
 *     def hasSource(self, str source):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 115, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 115, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->relTotalErrPos(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 115, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":114
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */

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

/* "include/Estimate0D.pyx":117
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_53hasSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_52hasSource, "Estimate0D.hasSource(self, str source)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_53hasSource = {"hasSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_53hasSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_52hasSource};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_53hasSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasSource (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 117, __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, "hasSource") < 0)) __PYX_ERR(13, 117, __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 = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("hasSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 117, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.hasSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(13, 117, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_52hasSource(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_52hasSource(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__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("hasSource", 1);

  /* "include/Estimate0D.pyx":118
 * 
 *     def hasSource(self, str source):
 *        return self.estptr().hasSource(<string> source)             # <<<<<<<<<<<<<<
 * 
 *     ## In-place special methods
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 118, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 118, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->hasSource(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 118, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":117
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */

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

/* "include/Estimate0D.pyx":122
 *     ## In-place special methods
 * 
 *     def __iadd__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         c.Estimate0D_iadd_Estimate0D(self.estptr(), other.estptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_55__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_55__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 122, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_54__iadd__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_54__iadd__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  YODA::Estimate0D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/Estimate0D.pyx":123
 * 
 *     def __iadd__(Estimate0D self, Estimate0D other):
 *         c.Estimate0D_iadd_Estimate0D(self.estptr(), other.estptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 123, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 123, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Estimate0D.pyx":124
 *     def __iadd__(Estimate0D self, Estimate0D other):
 *         c.Estimate0D_iadd_Estimate0D(self.estptr(), other.estptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(Estimate0D self, Estimate0D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":122
 *     ## In-place special methods
 * 
 *     def __iadd__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         c.Estimate0D_iadd_Estimate0D(self.estptr(), other.estptr())
 *         return self
 */

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

/* "include/Estimate0D.pyx":126
 *         return self
 * 
 *     def __isub__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         c.Estimate0D_isub_Estimate0D(self.estptr(), other.estptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_57__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_57__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 126, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_56__isub__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_56__isub__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  YODA::Estimate0D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/Estimate0D.pyx":127
 * 
 *     def __isub__(Estimate0D self, Estimate0D other):
 *         c.Estimate0D_isub_Estimate0D(self.estptr(), other.estptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 127, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 127, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Estimate0D.pyx":128
 *     def __isub__(Estimate0D self, Estimate0D other):
 *         c.Estimate0D_isub_Estimate0D(self.estptr(), other.estptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def sources(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":126
 *         return self
 * 
 *     def __isub__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         c.Estimate0D_isub_Estimate0D(self.estptr(), other.estptr())
 *         return self
 */

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

/* "include/Estimate0D.pyx":130
 *         return self
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_59sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_58sources, "Estimate0D.sources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_59sources = {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_59sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_58sources};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_59sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_58sources(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_58sources(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::vector<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("sources", 1);

  /* "include/Estimate0D.pyx":131
 * 
 *     def sources(self):
 *        return self.estptr().sources()             # <<<<<<<<<<<<<<
 * 
 *     def numErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 131, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sources();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 131, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":130
 *         return self
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */

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

/* "include/Estimate0D.pyx":133
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_61numErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_60numErrs, "Estimate0D.numErrs(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_61numErrs = {"numErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_61numErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_60numErrs};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_61numErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_60numErrs(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_60numErrs(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__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("numErrs", 1);

  /* "include/Estimate0D.pyx":134
 * 
 *     def numErrs(self):
 *        return self.estptr().numErrs()             # <<<<<<<<<<<<<<
 * 
 *     def rmSource(self, str source):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 134, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 134, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":133
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */

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

/* "include/Estimate0D.pyx":136
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_63rmSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_62rmSource, "Estimate0D.rmSource(self, str source)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_63rmSource = {"rmSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_63rmSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_62rmSource};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_63rmSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmSource (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 136, __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, "rmSource") < 0)) __PYX_ERR(13, 136, __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 = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 136, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.rmSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(13, 136, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_62rmSource(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_62rmSource(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__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("rmSource", 1);

  /* "include/Estimate0D.pyx":137
 * 
 *     def rmSource(self, str source):
 *       return self.estptr().rmSource(<string> source)             # <<<<<<<<<<<<<<
 * 
 *     def rmErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 137, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 137, __pyx_L1_error)
  try {
    __pyx_t_1->rmSource(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 137, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":136
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */

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

/* "include/Estimate0D.pyx":139
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_65rmErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_64rmErrs, "Estimate0D.rmErrs(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_65rmErrs = {"rmErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_65rmErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_64rmErrs};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_65rmErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_64rmErrs(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_64rmErrs(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmErrs", 1);

  /* "include/Estimate0D.pyx":140
 * 
 *     def rmErrs(self):
 *       return self.estptr().rmErrs()             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 140, __pyx_L1_error)
  try {
    __pyx_t_1->rmErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 140, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":139
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */

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

/* "include/Estimate0D.pyx":142
 *       return self.estptr().rmErrs()
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_66lengthContent, "Estimate0D.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_67lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_66lengthContent};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "lengthContent") < 0)) __PYX_ERR(13, 142, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_66lengthContent(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_66lengthContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  bool __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("lengthContent", 1);

  /* "include/Estimate0D.pyx":144
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 144, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 144, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->lengthContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 144, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":142
 *       return self.estptr().rmErrs()
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

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

/* "include/Estimate0D.pyx":146
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         self.estptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_68serializeContent, "Estimate0D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_69serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_68serializeContent};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "serializeContent") < 0)) __PYX_ERR(13, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(13, 146, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_68serializeContent(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_68serializeContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  bool __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/Estimate0D.pyx":148
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         self.estptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 148, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 148, __pyx_L1_error)
  try {
    __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 148, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":146
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         self.estptr().serializeContent(fixed_length)
 */

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

/* "include/Estimate0D.pyx":150
 *         self.estptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_70deserializeContent, "Estimate0D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_71deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_70deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 150, __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, "deserializeContent") < 0)) __PYX_ERR(13, 150, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 150, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_70deserializeContent(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_70deserializeContent(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Estimate0D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/Estimate0D.pyx":153
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.estptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 153, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(13, 153, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(13, 153, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(13, 153, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(13, 153, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(13, 153, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(13, 153, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Estimate0D.pyx":154
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.estptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 154, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 154, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":150
 *         self.estptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Estimate0D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":156
 *         self.estptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_72lengthMeta, "Estimate0D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_73lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_72lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 156, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 156, __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, "lengthMeta") < 0)) __PYX_ERR(13, 156, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 156, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_72lengthMeta(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_72lengthMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/Estimate0D.pyx":158
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 158, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 158, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 158, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->lengthMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 158, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":156
 *         self.estptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

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

/* "include/Estimate0D.pyx":160
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_74serializeMeta, "Estimate0D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_75serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_74serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 160, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 160, __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, "serializeMeta") < 0)) __PYX_ERR(13, 160, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_74serializeMeta(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_74serializeMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/Estimate0D.pyx":162
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         self.estptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 162, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 162, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 162, __pyx_L1_error)
  try {
    __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 162, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":160
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 */

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

/* "include/Estimate0D.pyx":164
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_76deserializeMeta, "Estimate0D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_77deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_76deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 164, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 164, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "deserializeMeta") < 0)) __PYX_ERR(13, 164, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(13, 164, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_76deserializeMeta(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_76deserializeMeta(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Estimate0D *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/Estimate0D.pyx":167
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 167, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(13, 167, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(13, 167, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 167, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(13, 167, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(13, 167, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 167, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(13, 167, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(13, 167, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Estimate0D.pyx":168
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, factor):
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 168, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 168, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(13, 168, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 168, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":164
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Estimate0D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Estimate0D.pyx":170
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         self.estptr().scale(factor)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_79scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_78scale, "Estimate0D.scale(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_79scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_79scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_78scale};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_79scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "scale") < 0)) __PYX_ERR(13, 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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 170, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_78scale(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_78scale(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 1);

  /* "include/Estimate0D.pyx":171
 * 
 *     def scale(self, factor):
 *         self.estptr().scale(factor)             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", pat_match = ""):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 171, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(13, 171, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 171, __pyx_L1_error)
  }

  /* "include/Estimate0D.pyx":170
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         self.estptr().scale(factor)
 * 
 */

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

/* "include/Estimate0D.pyx":173
 *         self.estptr().scale(factor)
 * 
 *     def mkScatter(self, path = "", pat_match = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_81mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10Estimate0D_80mkScatter, "Estimate0D.mkScatter(self, path='', pat_match='')\nNone -> Scatter1D.\n\n        Make a new Scatter1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_81mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_81mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_80mkScatter};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_81mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_pat_match = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_pat_match,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 173, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_match);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "mkScatter") < 0)) __PYX_ERR(13, 173, __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_pat_match = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 173, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_80mkScatter(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v_path, __pyx_v_pat_match);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_80mkScatter(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match) {
  YODA::Scatter1D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Estimate0D *__pyx_t_1;
  std::string __pyx_t_2;
  std::string __pyx_t_3;
  YODA::Scatter1D __pyx_t_4;
  YODA::Scatter1D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/Estimate0D.pyx":177
 * 
 *         Make a new Scatter1D."""
 *         s = <c.Scatter1D> self.estptr().mkScatter(path, pat_match)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter1D, s.newclone())
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 177, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 177, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 177, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->mkScatter(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 177, __pyx_L1_error)
  }
  __pyx_v_s = ((YODA::Scatter1D)__pyx_t_4);

  /* "include/Estimate0D.pyx":178
 *         Make a new Scatter1D."""
 *         s = <c.Scatter1D> self.estptr().mkScatter(path, pat_match)
 *         return cutil.new_owned_cls(Scatter1D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     ## Unbound special methods
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_5 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 178, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":173
 *         self.estptr().scale(factor)
 * 
 *     def mkScatter(self, path = "", pat_match = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 * 
 */

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

/* "include/Estimate0D.pyx":181
 * 
 *     ## Unbound special methods
 *     def __add__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_add_Estimate0D(self.estptr(), other.estptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_83__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_83__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 181, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_82__add__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_82__add__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Estimate0D *__pyx_t_2;
  YODA::Estimate0D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/Estimate0D.pyx":182
 *     ## Unbound special methods
 *     def __add__(Estimate0D self, Estimate0D other):
 *         e = Estimate0D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(e, c.Estimate0D_add_Estimate0D(self.estptr(), other.estptr()))
 *         return e
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_e = ((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":183
 *     def __add__(Estimate0D self, Estimate0D other):
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_add_Estimate0D(self.estptr(), other.estptr()))             # <<<<<<<<<<<<<<
 *         return e
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 183, __pyx_L1_error)
  __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 183, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_e), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":184
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_add_Estimate0D(self.estptr(), other.estptr()))
 *         return e             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Estimate0D self, Estimate0D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_e);
  __pyx_r = ((PyObject *)__pyx_v_e);
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":181
 * 
 *     ## Unbound special methods
 *     def __add__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_add_Estimate0D(self.estptr(), other.estptr()))
 */

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

/* "include/Estimate0D.pyx":186
 *         return e
 * 
 *     def __sub__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_sub_Estimate0D(self.estptr(), other.estptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_85__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_85__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 186, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_84__sub__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_84__sub__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Estimate0D *__pyx_t_2;
  YODA::Estimate0D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/Estimate0D.pyx":187
 * 
 *     def __sub__(Estimate0D self, Estimate0D other):
 *         e = Estimate0D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(e, c.Estimate0D_sub_Estimate0D(self.estptr(), other.estptr()))
 *         return e
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_e = ((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":188
 *     def __sub__(Estimate0D self, Estimate0D other):
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_sub_Estimate0D(self.estptr(), other.estptr()))             # <<<<<<<<<<<<<<
 *         return e
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 188, __pyx_L1_error)
  __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate0D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->estptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Estimate0D *)NULL))) __PYX_ERR(13, 188, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_e), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Estimate0D.pyx":189
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_sub_Estimate0D(self.estptr(), other.estptr()))
 *         return e             # <<<<<<<<<<<<<<
 * 
 *     def __div__(Estimate0D self, Estimate0D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_e);
  __pyx_r = ((PyObject *)__pyx_v_e);
  goto __pyx_L0;

  /* "include/Estimate0D.pyx":186
 *         return e
 * 
 *     def __sub__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         e = Estimate0D()
 *         cutil.set_owned_ptr(e, c.Estimate0D_sub_Estimate0D(self.estptr(), other.estptr()))
 */

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

/* "include/Estimate0D.pyx":191
 *         return e
 * 
 *     def __div__(Estimate0D self, Estimate0D 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_10Estimate0D_87__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_87__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 191, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_86__div__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_86__div__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/Estimate0D.pyx":192
 * 
 *     def __div__(Estimate0D self, Estimate0D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Estimate0D self, Estimate0D 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, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 192, __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/Estimate0D.pyx":191
 *         return e
 * 
 *     def __div__(Estimate0D self, Estimate0D 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.Estimate0D.__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/Estimate0D.pyx":194
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Estimate0D self, Estimate0D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_89__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_89__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Estimate0D, 1, "other", 0))) __PYX_ERR(13, 194, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_88__truediv__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Estimate0D *)__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_10Estimate0D_88__truediv__(struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Estimate0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/Estimate0D.pyx":195
 * 
 *     def __truediv__(Estimate0D self, Estimate0D 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, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 195, __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/Estimate0D.pyx":194
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Estimate0D self, Estimate0D 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.Estimate0D.__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_10Estimate0D_91__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_10Estimate0D_90__reduce_cython__, "Estimate0D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_91__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_91__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_90__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_91__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10Estimate0D_90__reduce_cython__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_90__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate0D *__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__", 1);

  /* "(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(1, 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.Estimate0D.__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_10Estimate0D_93__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_10Estimate0D_92__setstate_cython__, "Estimate0D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_10Estimate0D_93__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_93__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_92__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_10Estimate0D_93__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Estimate0D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10Estimate0D_92__setstate_cython__(((struct __pyx_obj_4yoda_4core_Estimate0D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10Estimate0D_92__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Estimate0D *__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__", 1);

  /* "(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(1, 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.Estimate0D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2, efficiency = False):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9divide(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_8divide, "divide(ao1, ao2, efficiency=False)\n(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D\n    Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods.");
static PyMethodDef __pyx_mdef_4yoda_4core_9divide = {"divide", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9divide, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8divide};
static PyObject *__pyx_pw_4yoda_4core_9divide(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;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divide (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ao1,&__pyx_n_s_ao2,&__pyx_n_s_efficiency,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
    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_ao1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 26, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("divide", 0, 2, 3, 1); __PYX_ERR(2, 26, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_efficiency);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 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(2, 26, __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_ao1 = values[0];
    __pyx_v_ao2 = values[1];
    __pyx_v_efficiency = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divide", 0, 2, 3, __pyx_nargs); __PYX_ERR(2, 26, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_8divide(__pyx_self, __pyx_v_ao1, __pyx_v_ao2, __pyx_v_efficiency);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8divide(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao1, PyObject *__pyx_v_ao2, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divide", 1);

  /* "include/Functions.pyx":29
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):             # <<<<<<<<<<<<<<
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_ao1)) != ((PyObject *)Py_TYPE(__pyx_v_ao2)));
  if (unlikely(__pyx_t_1)) {

    /* "include/Functions.pyx":30
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")             # <<<<<<<<<<<<<<
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, efficiency)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 30, __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(2, 30, __pyx_L1_error)

    /* "include/Functions.pyx":29
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):             # <<<<<<<<<<<<<<
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 */
  }

  /* "include/Functions.pyx":31
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):             # <<<<<<<<<<<<<<
 *         return ao1.divideBy(ao2, efficiency)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 */
  __pyx_t_2 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ao1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Counter, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(2, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ao1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Binned, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(2, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/Functions.pyx":32
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, efficiency)             # <<<<<<<<<<<<<<
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao1, __pyx_n_s_divideBy); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_ao2, __pyx_v_efficiency};
      __pyx_t_2 = __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_2)) __PYX_ERR(2, 32, __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/Functions.pyx":31
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):             # <<<<<<<<<<<<<<
 *         return ao1.divideBy(ao2, efficiency)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 */
  }

  /* "include/Functions.pyx":33
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, efficiency)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 33, __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(2, 33, __pyx_L1_error)

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2, efficiency = False):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __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":36
 * 
 * 
 * def efficiency(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11efficiency(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_10efficiency, "efficiency(ao1, ao2)\n(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D\n    Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods.");
static PyMethodDef __pyx_mdef_4yoda_4core_11efficiency = {"efficiency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11efficiency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10efficiency};
static PyObject *__pyx_pw_4yoda_4core_11efficiency(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("efficiency (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ao1,&__pyx_n_s_ao2,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 36, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("efficiency", 1, 2, 2, 1); __PYX_ERR(2, 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, "efficiency") < 0)) __PYX_ERR(2, 36, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("efficiency", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.efficiency", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10efficiency(__pyx_self, __pyx_v_ao1, __pyx_v_ao2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10efficiency(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao1, PyObject *__pyx_v_ao2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("efficiency", 1);

  /* "include/Functions.pyx":39
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):             # <<<<<<<<<<<<<<
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_ao1)) != ((PyObject *)Py_TYPE(__pyx_v_ao2)));
  if (unlikely(__pyx_t_1)) {

    /* "include/Functions.pyx":40
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")             # <<<<<<<<<<<<<<
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, True)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 40, __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(2, 40, __pyx_L1_error)

    /* "include/Functions.pyx":39
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):             # <<<<<<<<<<<<<<
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 */
  }

  /* "include/Functions.pyx":41
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):             # <<<<<<<<<<<<<<
 *         return ao1.divideBy(ao2, True)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 */
  __pyx_t_2 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ao1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Counter, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(2, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_Str(((PyObject *)Py_TYPE(__pyx_v_ao1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Binned, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(2, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/Functions.pyx":42
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, True)             # <<<<<<<<<<<<<<
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao1, __pyx_n_s_divideBy); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_ao2, Py_True};
      __pyx_t_2 = __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_2)) __PYX_ERR(2, 42, __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/Functions.pyx":41
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):             # <<<<<<<<<<<<<<
 *         return ao1.divideBy(ao2, True)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")
 */
  }

  /* "include/Functions.pyx":43
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, True)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 43, __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(2, 43, __pyx_L1_error)

  /* "include/Functions.pyx":36
 * 
 * 
 * def efficiency(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */

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

/* "include/Functions.pyx":46
 * 
 * 
 * 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("linspace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 46, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 46, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, 1); __PYX_ERR(2, 46, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 46, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, 2); __PYX_ERR(2, 46, __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(2, 46, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 46, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("linspace", 1);

  /* "include/Functions.pyx":50
 *     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(2, 50, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xmin); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 50, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xmax); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 50, __pyx_L1_error)
  try {
    __pyx_t_4 = YODA::linspace(__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(2, 50, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":46
 * 
 * 
 * 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_5);
  __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":53
 * 
 * 
 * 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("logspace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 53, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 53, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, 1); __PYX_ERR(2, 53, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 53, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, 2); __PYX_ERR(2, 53, __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(2, 53, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 53, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("logspace", 1);

  /* "include/Functions.pyx":57
 *     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(2, 57, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xmin); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 57, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xmax); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 57, __pyx_L1_error)
  try {
    __pyx_t_4 = YODA::logspace(__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(2, 57, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":53
 * 
 * 
 * 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_5);
  __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":60
 * 
 * 
 * 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pdfspace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,&__pyx_n_s_fn,&__pyx_n_s_nsample,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 60, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 60, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 1); __PYX_ERR(2, 60, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 60, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 2); __PYX_ERR(2, 60, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 60, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 3); __PYX_ERR(2, 60, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 60, __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(2, 60, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, __pyx_nargs); __PYX_ERR(2, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  unsigned 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", 1);

  /* "include/Functions.pyx":72
 *     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(2, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_v_nsample); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 72, __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(2, 72, __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":73
 *     """
 *     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(2, 73, __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(2, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(2, 73, __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":74
 *     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(2, 74, __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(2, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 74, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 74, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 74, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 74, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 74, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 74, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 74, __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(2, 74, __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
    if (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;
      }
    }
    #endif
    {
      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(2, 74, __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(2, 74, __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(2, 74, __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(2, 74, __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(2, 74, __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(2, 74, __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":75
 *     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(2, 75, __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(2, 75, __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(2, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 75, __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))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 75, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 75, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 75, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 75, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 75, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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(2, 75, __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":77
 *     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(2, 77, __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(2, 77, __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":78
 *     #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":79
 *     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(2, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin)) __PYX_ERR(2, 79, __pyx_L1_error);
  __pyx_v_xedges = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "include/Functions.pyx":80
 *     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(2, 80, __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(2, 80, __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(2, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 80, __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))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 80, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 80, __pyx_L1_error)
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 80, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 80, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) 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(2, 80, __pyx_L1_error)
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 80, __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(2, 80, __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":81
 *     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(2, 81, __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(2, 81, __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":82
 *     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(2, 82, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(2, 82, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_11) {

      /* "include/Functions.pyx":83
 *         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":84
 *         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(2, 84, __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(2, 84, __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(2, 84, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "include/Functions.pyx":82
 *     for i in range(nsample-1):
 *         asum += areas[i]
 *         if asum > da:             # <<<<<<<<<<<<<<
 *             asum = 0
 *             xedges.append(xs[i+1])
 */
    }

    /* "include/Functions.pyx":80
 *     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":85
 *             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(2, 85, __pyx_L1_error)

  /* "include/Functions.pyx":86
 *             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 = __Pyx_PyList_GET_SIZE(__pyx_v_xedges); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(2, 86, __pyx_L1_error)
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 86, __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(2, 86, __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(2, 86, __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(2, 86, __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(2, 86, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(2, 86, __pyx_L1_error)
  #endif

  /* "include/Functions.pyx":87
 *     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":60
 * 
 * 
 * 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":90
 * 
 * 
 * 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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_binedges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 90, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 90, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("index_between", 1, 2, 2, 1); __PYX_ERR(2, 90, __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(2, 90, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index_between", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 90, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("index_between", 1);

  /* "include/Functions.pyx":94
 *     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(2, 94, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_binedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 94, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::index_between(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 94, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":90
 * 
 * 
 * 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_4);
  __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":97
 * 
 * 
 * def effNumEntries(weights):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the effective number of entries given a list of weights."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_21effNumEntries(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_20effNumEntries, "effNumEntries(weights)\n(list[float]) -> float\n    Return the effective number of entries given a list of weights.");
static PyMethodDef __pyx_mdef_4yoda_4core_21effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_21effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_20effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_21effNumEntries(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_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_weights,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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 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, "effNumEntries") < 0)) __PYX_ERR(2, 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_weights = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_20effNumEntries(__pyx_self, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_20effNumEntries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __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", 1);

  /* "include/Functions.pyx":100
 *     """(list[float]) -> float
 *     Return the effective number of entries given a list of weights."""
 *     return c.effNumEntries(weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 100, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::effNumEntries(__pyx_t_1);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 100, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":97
 * 
 * 
 * def effNumEntries(weights):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the effective number of entries given a list of weights."""
 */

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

/* "include/Functions.pyx":103
 * 
 * 
 * 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_23mean(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_22mean, "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_23mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_23mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_22mean};
static PyObject *__pyx_pw_4yoda_4core_23mean(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 103, __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(2, 103, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_22mean(__pyx_self, __pyx_v_sample);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_22mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __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", 1);

  /* "include/Functions.pyx":106
 *     """(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(2, 106, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::mean(__pyx_t_1);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 106, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":103
 * 
 * 
 * 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_3);
  __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":109
 * 
 * 
 * def mean(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted mean of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_25mean(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_24mean, "mean(sample, weights)\n(list[float], list[float]) -> float\n    Return the weighted mean of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_25mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_25mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_24mean};
static PyObject *__pyx_pw_4yoda_4core_25mean(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;
  PyObject *__pyx_v_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,&__pyx_n_s_weights,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_sample)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 109, __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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 109, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mean", 1, 2, 2, 1); __PYX_ERR(2, 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, "mean") < 0)) __PYX_ERR(2, 109, __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_sample = values[0];
    __pyx_v_weights = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_24mean(__pyx_self, __pyx_v_sample, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_24mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<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("mean", 1);

  /* "include/Functions.pyx":112
 *     """(list[float], list[float]) -> float
 *     Return the weighted mean of the entries in the provided sample list."""
 *     return c.mean(sample, weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 112, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 112, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::mean(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 112, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":109
 * 
 * 
 * def mean(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted mean of the entries in the provided sample list."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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":115
 * 
 * 
 * def variance(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted variance of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_27variance(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_26variance, "variance(sample, weights)\n(list[float], list[float]) -> float\n    Return the weighted variance of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_27variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_27variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_26variance};
static PyObject *__pyx_pw_4yoda_4core_27variance(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;
  PyObject *__pyx_v_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,&__pyx_n_s_weights,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_sample)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 115, __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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 115, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("variance", 1, 2, 2, 1); __PYX_ERR(2, 115, __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, "variance") < 0)) __PYX_ERR(2, 115, __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_sample = values[0];
    __pyx_v_weights = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("variance", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 115, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_26variance(__pyx_self, __pyx_v_sample, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_26variance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<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("variance", 1);

  /* "include/Functions.pyx":118
 *     """(list[float], list[float]) -> float
 *     Return the weighted variance of the entries in the provided sample list."""
 *     return c.variance(sample, weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 118, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 118, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::variance(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 118, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":115
 * 
 * 
 * def variance(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted variance of the entries in the provided sample list."""
 */

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

/* "include/Functions.pyx":121
 * 
 * 
 * def stdDev(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard deviation of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_29stdDev(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_28stdDev, "stdDev(sample, weights)\n(list[float], list[float]) -> float\n    Return the weighted standard deviation of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_29stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_29stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_28stdDev};
static PyObject *__pyx_pw_4yoda_4core_29stdDev(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;
  PyObject *__pyx_v_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,&__pyx_n_s_weights,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_sample)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 121, __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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 121, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("stdDev", 1, 2, 2, 1); __PYX_ERR(2, 121, __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, "stdDev") < 0)) __PYX_ERR(2, 121, __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_sample = values[0];
    __pyx_v_weights = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdDev", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 121, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_28stdDev(__pyx_self, __pyx_v_sample, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_28stdDev(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<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("stdDev", 1);

  /* "include/Functions.pyx":124
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard deviation of the entries in the provided sample list."""
 *     return c.stdDev(sample, weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 124, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 124, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::stdDev(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 124, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":121
 * 
 * 
 * def stdDev(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard deviation of the entries in the provided sample list."""
 */

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

/* "include/Functions.pyx":127
 * 
 * 
 * def stdErr(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard error of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_31stdErr(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_30stdErr, "stdErr(sample, weights)\n(list[float], list[float]) -> float\n    Return the weighted standard error of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_31stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_31stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_30stdErr};
static PyObject *__pyx_pw_4yoda_4core_31stdErr(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;
  PyObject *__pyx_v_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,&__pyx_n_s_weights,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_sample)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 127, __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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 127, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("stdErr", 1, 2, 2, 1); __PYX_ERR(2, 127, __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, "stdErr") < 0)) __PYX_ERR(2, 127, __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_sample = values[0];
    __pyx_v_weights = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_30stdErr(__pyx_self, __pyx_v_sample, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_30stdErr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<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("stdErr", 1);

  /* "include/Functions.pyx":130
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard error of the entries in the provided sample list."""
 *     return c.stdErr(sample, weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 130, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 130, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::stdErr(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 130, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":127
 * 
 * 
 * def stdErr(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard error of the entries in the provided sample list."""
 */

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

/* "include/Functions.pyx":133
 * 
 * 
 * def RMS(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted RMS of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_33RMS(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_32RMS, "RMS(sample, weights)\n(list[float], list[float]) -> float\n    Return the weighted RMS of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_33RMS = {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_33RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_32RMS};
static PyObject *__pyx_pw_4yoda_4core_33RMS(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;
  PyObject *__pyx_v_weights = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("RMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,&__pyx_n_s_weights,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_sample)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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_weights)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 133, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("RMS", 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, "RMS") < 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_sample = values[0];
    __pyx_v_weights = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("RMS", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.RMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_32RMS(__pyx_self, __pyx_v_sample, __pyx_v_weights);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_32RMS(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample, PyObject *__pyx_v_weights) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<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("RMS", 1);

  /* "include/Functions.pyx":136
 *     """(list[float], list[float]) -> float
 *     Return the weighted RMS of the entries in the provided sample list."""
 *     return c.RMS(sample, weights)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 136, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_weights); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 136, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::RMS(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 136, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":133
 * 
 * 
 * def RMS(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted RMS of the entries in the provided sample list."""
 */

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

/* "include/Functions.pyx":139
 * 
 * 
 * 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_35covariance(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_34covariance, "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_35covariance = {"covariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_35covariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_34covariance};
static PyObject *__pyx_pw_4yoda_4core_35covariance(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 139, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 139, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("covariance", 1, 2, 2, 1); __PYX_ERR(2, 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, "covariance") < 0)) __PYX_ERR(2, 139, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covariance", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_34covariance(__pyx_self, __pyx_v_sample1, __pyx_v_sample2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_34covariance(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;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covariance", 1);

  /* "include/Functions.pyx":142
 *     """(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(2, 142, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 142, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::covariance(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 142, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":139
 * 
 * 
 * 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_4);
  __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":145
 * 
 * 
 * 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_37correlation(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_36correlation, "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_37correlation = {"correlation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_37correlation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_36correlation};
static PyObject *__pyx_pw_4yoda_4core_37correlation(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("correlation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 145, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 145, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("correlation", 1, 2, 2, 1); __PYX_ERR(2, 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, "correlation") < 0)) __PYX_ERR(2, 145, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("correlation", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_36correlation(__pyx_self, __pyx_v_sample1, __pyx_v_sample2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_36correlation(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;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("correlation", 1);

  /* "include/Functions.pyx":148
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 *     return c.correlation(sample1, sample2)             # <<<<<<<<<<<<<<
 * 
 * def naiveChi2(sample1, sample2, errors1 = [], errors2 = []):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_sample1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 148, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 148, __pyx_L1_error)
  try {
    __pyx_t_3 = YODA::correlation(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 148, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":145
 * 
 * 
 * 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_4);
  __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/Functions.pyx":150
 *     return c.correlation(sample1, sample2)
 * 
 * def naiveChi2(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted chi2 statistic of the two provided sample lists.
 */

static PyObject *__pyx_pf_4yoda_4core_68__defaults__(CYTHON_UNUSED PyObject *__pyx_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("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors1);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors1)) __PYX_ERR(2, 150, __pyx_L1_error);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors2);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_errors2)) __PYX_ERR(2, 150, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(2, 150, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(2, 150, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

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

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_39naiveChi2(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_38naiveChi2, "naiveChi2(sample1, sample2, errors1=[], errors2=[])\n(list[float], list[float], list[float], list[float] -> float\n   Return the error-weighted chi2 statistic of the two provided sample lists.\n\n   Note that this calculation is rather naive as it neglects the error breakdowns that\n   may be available for the curves being compared. More sophisticated comparisons will\n   require a separate analysis based on the Estimate objects utilising the full\n   covariance information.");
static PyMethodDef __pyx_mdef_4yoda_4core_39naiveChi2 = {"naiveChi2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_39naiveChi2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_38naiveChi2};
static PyObject *__pyx_pw_4yoda_4core_39naiveChi2(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;
  PyObject *__pyx_v_errors1 = 0;
  PyObject *__pyx_v_errors2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("naiveChi2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,&__pyx_n_s_errors1,&__pyx_n_s_errors2,0};
    __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_errors1);
    values[3] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_errors2);
    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_sample1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 150, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("naiveChi2", 0, 2, 4, 1); __PYX_ERR(2, 150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errors1);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errors2);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 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, "naiveChi2") < 0)) __PYX_ERR(2, 150, __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_sample1 = values[0];
    __pyx_v_sample2 = values[1];
    __pyx_v_errors1 = values[2];
    __pyx_v_errors2 = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("naiveChi2", 0, 2, 4, __pyx_nargs); __PYX_ERR(2, 150, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.naiveChi2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_38naiveChi2(__pyx_self, __pyx_v_sample1, __pyx_v_sample2, __pyx_v_errors1, __pyx_v_errors2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_38naiveChi2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2, PyObject *__pyx_v_errors1, PyObject *__pyx_v_errors2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<double>  __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  std::vector<double>  __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("naiveChi2", 1);

  /* "include/Functions.pyx":158
 *    require a separate analysis based on the Estimate objects utilising the full
 *    covariance information."""
 *    return c.naiveChi2(sample1, sample2, errors1, errors2)             # <<<<<<<<<<<<<<
 * 
 * def naiveChi2reduced(sample1, sample2, errors1 = [], errors2 = []):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 158, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 158, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_errors1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 158, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_vector_from_py_double(__pyx_v_errors2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 158, __pyx_L1_error)
  try {
    __pyx_t_5 = YODA::naiveChi2(__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(2, 158, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":150
 *     return c.correlation(sample1, sample2)
 * 
 * def naiveChi2(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted chi2 statistic of the two provided sample lists.
 */

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

/* "include/Functions.pyx":160
 *    return c.naiveChi2(sample1, sample2, errors1, errors2)
 * 
 * def naiveChi2reduced(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted reduced chi2 statistic of the two provided sample lists.
 */

static PyObject *__pyx_pf_4yoda_4core_70__defaults__(CYTHON_UNUSED PyObject *__pyx_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("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors1);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors1)) __PYX_ERR(2, 160, __pyx_L1_error);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors2);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_errors2)) __PYX_ERR(2, 160, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(2, 160, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(2, 160, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

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

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_41naiveChi2reduced(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_40naiveChi2reduced, "naiveChi2reduced(sample1, sample2, errors1=[], errors2=[])\n(list[float], list[float], list[float], list[float] -> float\n   Return the error-weighted reduced chi2 statistic of the two provided sample lists.\n\n   Note that this calculation is rather naive as it neglects the error breakdowns that\n   may be available for the curves being compared. More sophisticated comparisons will\n   require a separate analysis based on the Estimate objects utilising the full\n   covariance information.");
static PyMethodDef __pyx_mdef_4yoda_4core_41naiveChi2reduced = {"naiveChi2reduced", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_41naiveChi2reduced, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_40naiveChi2reduced};
static PyObject *__pyx_pw_4yoda_4core_41naiveChi2reduced(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;
  PyObject *__pyx_v_errors1 = 0;
  PyObject *__pyx_v_errors2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("naiveChi2reduced (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,&__pyx_n_s_errors1,&__pyx_n_s_errors2,0};
    __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self);
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_errors1);
    values[3] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_errors2);
    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_sample1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("naiveChi2reduced", 0, 2, 4, 1); __PYX_ERR(2, 160, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errors1);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errors2);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __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, "naiveChi2reduced") < 0)) __PYX_ERR(2, 160, __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_sample1 = values[0];
    __pyx_v_sample2 = values[1];
    __pyx_v_errors1 = values[2];
    __pyx_v_errors2 = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("naiveChi2reduced", 0, 2, 4, __pyx_nargs); __PYX_ERR(2, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.naiveChi2reduced", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_40naiveChi2reduced(__pyx_self, __pyx_v_sample1, __pyx_v_sample2, __pyx_v_errors1, __pyx_v_errors2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_40naiveChi2reduced(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2, PyObject *__pyx_v_errors1, PyObject *__pyx_v_errors2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<double>  __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  std::vector<double>  __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("naiveChi2reduced", 1);

  /* "include/Functions.pyx":168
 *    require a separate analysis based on the Estimate objects utilising the full
 *    covariance information."""
 *    return c.naiveChi2reduced(sample1, sample2, errors1, errors2)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_sample1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 168, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 168, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_errors1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 168, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_vector_from_py_double(__pyx_v_errors2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 168, __pyx_L1_error)
  try {
    __pyx_t_5 = YODA::naiveChi2reduced(__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(2, 168, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":160
 *    return c.naiveChi2(sample1, sample2, errors1, errors2)
 * 
 * def naiveChi2reduced(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted reduced chi2 statistic of the two provided sample lists.
 */

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

/* "include/IO.pyx":17
 * 
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):             # <<<<<<<<<<<<<<
 *     if not patterns:
 *         patterns = [ ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_43_prep_patterns(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_42_prep_patterns, "_prep_patterns(patterns)");
static PyMethodDef __pyx_mdef_4yoda_4core_43_prep_patterns = {"_prep_patterns", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_43_prep_patterns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_42_prep_patterns};
static PyObject *__pyx_pw_4yoda_4core_43_prep_patterns(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_patterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_prep_patterns (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_patterns,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_patterns)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 17, __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, "_prep_patterns") < 0)) __PYX_ERR(3, 17, __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_patterns = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_prep_patterns", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 17, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core._prep_patterns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_42_prep_patterns(__pyx_self, __pyx_v_patterns);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_42_prep_patterns(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_patterns) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("_prep_patterns", 0);
  __Pyx_INCREF(__pyx_v_patterns);

  /* "include/IO.pyx":18
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):
 *     if not patterns:             # <<<<<<<<<<<<<<
 *         patterns = [ ]
 *     elif not isinstance(patterns, (list,tuple)):
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_patterns); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 18, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "include/IO.pyx":19
 * def _prep_patterns(patterns):
 *     if not patterns:
 *         patterns = [ ]             # <<<<<<<<<<<<<<
 *     elif not isinstance(patterns, (list,tuple)):
 *         patterns = [patterns]
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 19, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/IO.pyx":18
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):
 *     if not patterns:             # <<<<<<<<<<<<<<
 *         patterns = [ ]
 *     elif not isinstance(patterns, (list,tuple)):
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":20
 *     if not patterns:
 *         patterns = [ ]
 *     elif not isinstance(patterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *         patterns = [patterns]
 *     return ','.join(patterns)
 */
  __pyx_t_1 = PyList_Check(__pyx_v_patterns); 
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_1 = PyTuple_Check(__pyx_v_patterns); 
  __pyx_t_2 = __pyx_t_1;
  __pyx_L4_bool_binop_done:;
  __pyx_t_1 = (!__pyx_t_2);
  if (__pyx_t_1) {

    /* "include/IO.pyx":21
 *         patterns = [ ]
 *     elif not isinstance(patterns, (list,tuple)):
 *         patterns = [patterns]             # <<<<<<<<<<<<<<
 *     return ','.join(patterns)
 * 
 */
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_patterns);
    __Pyx_GIVEREF(__pyx_v_patterns);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_patterns)) __PYX_ERR(3, 21, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/IO.pyx":20
 *     if not patterns:
 *         patterns = [ ]
 *     elif not isinstance(patterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *         patterns = [patterns]
 *     return ','.join(patterns)
 */
  }
  __pyx_L3:;

  /* "include/IO.pyx":22
 *     elif not isinstance(patterns, (list,tuple)):
 *         patterns = [patterns]
 *     return ','.join(patterns)             # <<<<<<<<<<<<<<
 * 
 * def _mapTypes(cpptype):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__5, __pyx_v_patterns); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":17
 * 
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):             # <<<<<<<<<<<<<<
 *     if not patterns:
 *         patterns = [ ]
 */

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

/* "include/IO.pyx":24
 *     return ','.join(patterns)
 * 
 * def _mapTypes(cpptype):             # <<<<<<<<<<<<<<
 *     if 'Binned' not in cpptype:
 *         return cpptype
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_45_mapTypes(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_44_mapTypes, "_mapTypes(cpptype)");
static PyMethodDef __pyx_mdef_4yoda_4core_45_mapTypes = {"_mapTypes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_45_mapTypes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_44_mapTypes};
static PyObject *__pyx_pw_4yoda_4core_45_mapTypes(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_cpptype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mapTypes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cpptype,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_cpptype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 24, __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, "_mapTypes") < 0)) __PYX_ERR(3, 24, __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_cpptype = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mapTypes", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core._mapTypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_44_mapTypes(__pyx_self, __pyx_v_cpptype);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_44_mapTypes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cpptype) {
  PyObject *__pyx_v_pos = NULL;
  PyObject *__pyx_v_base = NULL;
  PyObject *__pyx_v_N = 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;
  unsigned int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mapTypes", 1);

  /* "include/IO.pyx":25
 * 
 * def _mapTypes(cpptype):
 *     if 'Binned' not in cpptype:             # <<<<<<<<<<<<<<
 *         return cpptype
 *     pos = cpptype.find('<')
 */
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Binned, __pyx_v_cpptype, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 25, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":26
 * def _mapTypes(cpptype):
 *     if 'Binned' not in cpptype:
 *         return cpptype             # <<<<<<<<<<<<<<
 *     pos = cpptype.find('<')
 *     base = cpptype[6:pos] # remove leading 'Binned' and axes tuple
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_cpptype);
    __pyx_r = __pyx_v_cpptype;
    goto __pyx_L0;

    /* "include/IO.pyx":25
 * 
 * def _mapTypes(cpptype):
 *     if 'Binned' not in cpptype:             # <<<<<<<<<<<<<<
 *         return cpptype
 *     pos = cpptype.find('<')
 */
  }

  /* "include/IO.pyx":27
 *     if 'Binned' not in cpptype:
 *         return cpptype
 *     pos = cpptype.find('<')             # <<<<<<<<<<<<<<
 *     base = cpptype[6:pos] # remove leading 'Binned' and axes tuple
 *     N = str(len(cpptype[pos+1:-1].split(','))) # count axes
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_cpptype, __pyx_n_s_find); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_s__6};
    __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(3, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_pos = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "include/IO.pyx":28
 *         return cpptype
 *     pos = cpptype.find('<')
 *     base = cpptype[6:pos] # remove leading 'Binned' and axes tuple             # <<<<<<<<<<<<<<
 *     N = str(len(cpptype[pos+1:-1].split(','))) # count axes
 *     return base+N+'D'
 */
  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_cpptype, 6, 0, NULL, &__pyx_v_pos, NULL, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_base = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "include/IO.pyx":29
 *     pos = cpptype.find('<')
 *     base = cpptype[6:pos] # remove leading 'Binned' and axes tuple
 *     N = str(len(cpptype[pos+1:-1].split(','))) # count axes             # <<<<<<<<<<<<<<
 *     return base+N+'D'
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_pos, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_cpptype, 0, -1L, &__pyx_t_3, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 29, __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_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 29, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_s__5};
    __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(3, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(3, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Str(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_N = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/IO.pyx":30
 *     base = cpptype[6:pos] # remove leading 'Binned' and axes tuple
 *     N = str(len(cpptype[pos+1:-1].split(','))) # count axes
 *     return base+N+'D'             # <<<<<<<<<<<<<<
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyNumber_Add(__pyx_v_base, __pyx_v_N); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_n_s_D); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 30, __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":24
 *     return ','.join(patterns)
 * 
 * def _mapTypes(cpptype):             # <<<<<<<<<<<<<<
 *     if 'Binned' not in cpptype:
 *         return cpptype
 */

  /* 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._mapTypes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pos);
  __Pyx_XDECREF(__pyx_v_base);
  __Pyx_XDECREF(__pyx_v_N);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":33
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 * cdef list _aobjects_to_list(vector[c.AnalysisObject*]* aobjects):             # <<<<<<<<<<<<<<
 *     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_out = 0;
  YODA::AnalysisObject *__pyx_v_ao;
  size_t __pyx_v_i;
  PyObject *__pyx_v_pytype = NULL;
  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;
  PyObject *__pyx_t_5 = NULL;
  std::string __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_aobjects_to_list", 1);

  /* "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):
 *     cdef list out = []             # <<<<<<<<<<<<<<
 *     cdef c.AnalysisObject* ao
 *     cdef size_t i
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":37
 *     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":38
 *     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()
 *         pytype = _mapTypes(ao.type())
 */
    __pyx_v_ao = ((*__pyx_v_aobjects)[__pyx_v_i]);

    /* "include/IO.pyx":40
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         pytype = _mapTypes(ao.type())             # <<<<<<<<<<<<<<
 *         newao = cutil.new_owned_cls(globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_mapTypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    try {
      __pyx_t_6 = __pyx_v_ao->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 40, __pyx_L1_error)
    }
    __pyx_t_7 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":41
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         pytype = _mapTypes(ao.type())
 *         newao = cutil.new_owned_cls(globals()[pytype], ao)             # <<<<<<<<<<<<<<
 *         ## try setting axis configuration for binned objects
 *         try:
 */
    __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_pytype); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __pyx_f_4yoda_4util_new_owned_cls(__pyx_t_5, __pyx_v_ao); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_newao, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":43
 *         newao = cutil.new_owned_cls(globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 *         try:             # <<<<<<<<<<<<<<
 *             newao._set_config()
 *         except:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      /*try:*/ {

        /* "include/IO.pyx":44
 *         ## try setting axis configuration for binned objects
 *         try:
 *             newao._set_config()             # <<<<<<<<<<<<<<
 *         except:
 *             pass
 */
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 44, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = NULL;
        __pyx_t_9 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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_9 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 44, __pyx_L5_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/IO.pyx":43
 *         newao = cutil.new_owned_cls(globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 *         try:             # <<<<<<<<<<<<<<
 *             newao._set_config()
 *         except:
 */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "include/IO.pyx":45
 *         try:
 *             newao._set_config()
 *         except:             # <<<<<<<<<<<<<<
 *             pass
 *         out.append(newao)
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L12_try_end:;
    }

    /* "include/IO.pyx":47
 *         except:
 *             pass
 *         out.append(newao)             # <<<<<<<<<<<<<<
 *     return out
 * 
 */
    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_out, __pyx_v_newao); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(3, 47, __pyx_L1_error)
  }

  /* "include/IO.pyx":48
 *             pass
 *         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":33
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 * cdef list _aobjects_to_list(vector[c.AnalysisObject*]* aobjects):             # <<<<<<<<<<<<<<
 *     cdef list out = []
 *     cdef c.AnalysisObject* ao
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __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_pytype);
  __Pyx_XDECREF(__pyx_v_newao);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":51
 * 
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects):             # <<<<<<<<<<<<<<
 *     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_out = 0;
  YODA::AnalysisObject *__pyx_v_ao;
  size_t __pyx_v_i;
  PyObject *__pyx_v_pytype = NULL;
  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;
  PyObject *__pyx_t_5 = NULL;
  std::string __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_aobjects_to_dict", 1);

  /* "include/IO.pyx":52
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects):
 *     cdef dict out = {}             # <<<<<<<<<<<<<<
 *     # from collections import OrderedDict
 *     # OrderedDict out = OrderedDict()
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":57
 *     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":58
 *     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()
 *         pytype = _mapTypes(ao.type())
 */
    __pyx_v_ao = ((*__pyx_v_aobjects)[__pyx_v_i]);

    /* "include/IO.pyx":60
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         pytype = _mapTypes(ao.type())             # <<<<<<<<<<<<<<
 *         newao = cutil.new_owned_cls( globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_mapTypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    try {
      __pyx_t_6 = __pyx_v_ao->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 60, __pyx_L1_error)
    }
    __pyx_t_7 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":61
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         pytype = _mapTypes(ao.type())
 *         newao = cutil.new_owned_cls( globals()[pytype], ao)             # <<<<<<<<<<<<<<
 *         ## try setting axis configuration for binned objects
 *         try:
 */
    __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_pytype); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __pyx_f_4yoda_4util_new_owned_cls(__pyx_t_5, __pyx_v_ao); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_newao, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":63
 *         newao = cutil.new_owned_cls( globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 *         try:             # <<<<<<<<<<<<<<
 *             newao._set_config()
 *         except:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      /*try:*/ {

        /* "include/IO.pyx":64
 *         ## try setting axis configuration for binned objects
 *         try:
 *             newao._set_config()             # <<<<<<<<<<<<<<
 *         except:
 *             pass
 */
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 64, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = NULL;
        __pyx_t_9 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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_9 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 64, __pyx_L5_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/IO.pyx":63
 *         newao = cutil.new_owned_cls( globals()[pytype], ao)
 *         ## try setting axis configuration for binned objects
 *         try:             # <<<<<<<<<<<<<<
 *             newao._set_config()
 *         except:
 */
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "include/IO.pyx":65
 *         try:
 *             newao._set_config()
 *         except:             # <<<<<<<<<<<<<<
 *             pass
 *         out[newao.path()] = newao
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_L12_try_end:;
    }

    /* "include/IO.pyx":67
 *         except:
 *             pass
 *         out[newao.path()] = newao             # <<<<<<<<<<<<<<
 *     return out
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (unlikely((PyDict_SetItem(__pyx_v_out, __pyx_t_1, __pyx_v_newao) < 0))) __PYX_ERR(3, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "include/IO.pyx":68
 *             pass
 *         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":51
 * 
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     # from collections import OrderedDict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __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_pytype);
  __Pyx_XDECREF(__pyx_v_newao);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":71
 * 
 * ## 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, size_t]]* idxMap):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, size_t]].iterator it = idxMap.begin()
 */

static PyObject *__pyx_f_4yoda_4core__idxMap_to_dict(std::unordered_map<std::string,std::unordered_map<std::string,size_t> >  *__pyx_v_idxMap) {
  PyObject *__pyx_v_out = 0;
  std::unordered_map<std::string,std::unordered_map<std::string,size_t> > ::iterator __pyx_v_it;
  PyObject *__pyx_v_innerDict = 0;
  std::unordered_map<std::string,size_t> ::iterator __pyx_v_it_inner;
  std::string __pyx_v_objType;
  std::unordered_map<std::string,size_t>  __pyx_v_nestedMap;
  std::string __pyx_v_path;
  size_t __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,size_t>  __pyx_t_4;
  size_t __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", 1);

  /* "include/IO.pyx":72
 * ## 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, size_t]]* idxMap):
 *     cdef dict out = {}             # <<<<<<<<<<<<<<
 *     cdef unordered_map[string, unordered_map[string, size_t]].iterator it = idxMap.begin()
 *     cdef dict innerDict = {}
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":73
 * cdef dict _idxMap_to_dict(unordered_map[string, unordered_map[string, size_t]]* idxMap):
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, size_t]].iterator it = idxMap.begin()             # <<<<<<<<<<<<<<
 *     cdef dict innerDict = {}
 *     cdef unordered_map[string, size_t].iterator it_inner
 */
  __pyx_v_it = __pyx_v_idxMap->begin();

  /* "include/IO.pyx":74
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, size_t]].iterator it = idxMap.begin()
 *     cdef dict innerDict = {}             # <<<<<<<<<<<<<<
 *     cdef unordered_map[string, size_t].iterator it_inner
 * 
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_innerDict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":77
 *     cdef unordered_map[string, size_t].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":78
 * 
 *     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":79
 *     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":80
 *         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(3, 80, __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":81
 *         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":83
 *         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":84
 * 
 *         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":85
 *         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":86
 *             path = deref(it_inner).first
 *             binNum = deref(it_inner).second
 *             innerDict[path] = binNum             # <<<<<<<<<<<<<<
 *             inc(it_inner)
 * 
 */
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_binNum); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely((PyDict_SetItem(__pyx_v_innerDict, __pyx_t_6, __pyx_t_1) < 0))) __PYX_ERR(3, 86, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/IO.pyx":87
 *             binNum = deref(it_inner).second
 *             innerDict[path] = binNum
 *             inc(it_inner)             # <<<<<<<<<<<<<<
 * 
 *         out[objType] = innerDict
 */
      (void)((++__pyx_v_it_inner));
    }

    /* "include/IO.pyx":89
 *             inc(it_inner)
 * 
 *         out[objType] = innerDict             # <<<<<<<<<<<<<<
 *         inc(it)
 * 
 */
    __pyx_t_1 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_v_objType); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_out, __pyx_t_1, __pyx_v_innerDict) < 0))) __PYX_ERR(3, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "include/IO.pyx":90
 * 
 *         out[objType] = innerDict
 *         inc(it)             # <<<<<<<<<<<<<<
 * 
 *     return out
 */
    (void)((++__pyx_v_it));
  }

  /* "include/IO.pyx":92
 *         inc(it)
 * 
 *     return out             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "include/IO.pyx":71
 * 
 * ## 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, size_t]]* idxMap):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, size_t]].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":95
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_47_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_46_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_47_bytestr_from_file = {"_bytestr_from_file", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_47_bytestr_from_file, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_46_bytestr_from_file};
static PyObject *__pyx_pw_4yoda_4core_47_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 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, "_bytestr_from_file") < 0)) __PYX_ERR(3, 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_file_or_filename = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bytestr_from_file", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_46_bytestr_from_file(__pyx_self, __pyx_v_file_or_filename);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_46_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;
  unsigned 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", 1);

  /* "include/IO.pyx":102
 *     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(3, 102, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":103
 *     """
 *     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(3, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __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, 103, __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":102
 *     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":104
 *     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__7, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":105
 *         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(3, 105, __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(3, 105, __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(3, 105, __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(3, 105, __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
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __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(3, 105, __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":104
 *     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":107
 *         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(3, 107, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_file_or_filename);
      __Pyx_GIVEREF(__pyx_v_file_or_filename);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_file_or_filename)) __PYX_ERR(3, 107, __pyx_L1_error);
      __Pyx_INCREF(__pyx_n_s_rb);
      __Pyx_GIVEREF(__pyx_n_s_rb);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_rb)) __PYX_ERR(3, 107, __pyx_L1_error);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 107, __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(3, 107, __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(3, 107, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = NULL;
      __pyx_t_5 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
        __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(3, 107, __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":108
 *     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(3, 108, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_2 = NULL;
            __pyx_t_5 = 0;
            #if CYTHON_UNPACK_METHODS
            if (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;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
              __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(3, 108, __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":107
 *         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(3, 107, __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(3, 107, __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(3, 107, __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(3, 107, __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(3, 107, __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__8, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 107, __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":109
 *         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(3, 109, __pyx_L1_error) }
  __pyx_t_12 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)(&PyString_Type)));
  if (__pyx_t_12) {

    /* "include/IO.pyx":110
 *             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(3, 110, __pyx_L1_error) }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      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(3, 110, __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":109
 *         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":111
 *     if type(s) is str:
 *         s = s.encode("utf-8")
 *     return s             # <<<<<<<<<<<<<<
 * 
 * def _str_to_file(s, file_or_filename):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_v_s)) { __Pyx_RaiseUnboundLocalError("s"); __PYX_ERR(3, 111, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_v_s);
  __pyx_r = __pyx_v_s;
  goto __pyx_L0;

  /* "include/IO.pyx":95
 * 
 * 
 * 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":113
 *     return s
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_49_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_48_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_49_str_to_file = {"_str_to_file", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_49_str_to_file, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_48_str_to_file};
static PyObject *__pyx_pw_4yoda_4core_49_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_s,&__pyx_n_s_file_or_filename,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 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_file_or_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 113, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_str_to_file", 1, 2, 2, 1); __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, "_str_to_file") < 0)) __PYX_ERR(3, 113, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_str_to_file", 1, 2, 2, __pyx_nargs); __PYX_ERR(3, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_48_str_to_file(__pyx_self, __pyx_v_s, __pyx_v_file_or_filename);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_48_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;
  unsigned 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", 1);

  /* "include/IO.pyx":120
 *     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(3, 120, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":121
 *     """
 *     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(3, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      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(3, 121, __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":120
 *     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":122
 *     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__7, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 122, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":123
 *         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(3, 123, __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(3, 123, __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(3, 123, __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
    if (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;
      }
    }
    #endif
    {
      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(3, 123, __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":122
 *     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":125
 *         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(3, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_file_or_filename);
      __Pyx_GIVEREF(__pyx_v_file_or_filename);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_file_or_filename)) __PYX_ERR(3, 125, __pyx_L1_error);
      __Pyx_INCREF(__pyx_n_s_w);
      __Pyx_GIVEREF(__pyx_n_s_w);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_w)) __PYX_ERR(3, 125, __pyx_L1_error);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 125, __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(3, 125, __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(3, 125, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = NULL;
      __pyx_t_5 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
        __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(3, 125, __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":126
 *     else:
 *         with open(file_or_filename, "w") as f:
 *             f.write(s)             # <<<<<<<<<<<<<<
 * 
 * def _istxt(x):
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 126, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = NULL;
            __pyx_t_5 = 0;
            #if CYTHON_UNPACK_METHODS
            if (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;
              }
            }
            #endif
            {
              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(3, 126, __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":125
 *         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(3, 125, __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(3, 125, __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(3, 125, __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(3, 125, __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(3, 125, __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__8, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 125, __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":113
 *     return s
 * 
 * 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":128
 *             f.write(s)
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_51_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_50_istxt, "_istxt(x)");
static PyMethodDef __pyx_mdef_4yoda_4core_51_istxt = {"_istxt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_51_istxt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_50_istxt};
static PyObject *__pyx_pw_4yoda_4core_51_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_istxt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 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, "_istxt") < 0)) __PYX_ERR(3, 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_x = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_istxt", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 128, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_50_istxt(__pyx_self, __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_50_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", 1);

  /* "include/IO.pyx":129
 * 
 * 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(3, 129, __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(3, 129, __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__9, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 129, __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(3, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "include/IO.pyx":130
 * 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(3, 130, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(3, 130, __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(3, 130, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(3, 130, __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(3, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/IO.pyx":129
 * 
 * def _istxt(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return type(x) in [unicode, str]
 *     else:
 */
  }

  /* "include/IO.pyx":132
 *         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(3, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "include/IO.pyx":128
 *             f.write(s)
 * 
 * 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":134
 *         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_53_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_52_mktxtifstr, "_mktxtifstr(x)");
static PyMethodDef __pyx_mdef_4yoda_4core_53_mktxtifstr = {"_mktxtifstr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_53_mktxtifstr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_52_mktxtifstr};
static PyObject *__pyx_pw_4yoda_4core_53_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mktxtifstr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 134, __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(3, 134, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mktxtifstr", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 134, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_52_mktxtifstr(__pyx_self, __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_52_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", 1);

  /* "include/IO.pyx":135
 * 
 * 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(3, 135, __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(3, 135, __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__9, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 135, __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(3, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "include/IO.pyx":136
 * 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(3, 136, __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":135
 * 
 * def _mktxtifstr(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return unicode(x) if type(x) is str else x
 *     return x
 */
  }

  /* "include/IO.pyx":137
 *     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":134
 *         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":145
 * ##
 * 
 * def read(filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_55read(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_54read, "read(filename, asdict=True, patterns='', unpatterns='')\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_55read = {"read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_55read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_54read};
static PyObject *__pyx_pw_4yoda_4core_55read(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_True)));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_kp_s__2)));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((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_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 145, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 145, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 145, __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] = __Pyx_Arg_NewRef_FASTCALL(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, "read") < 0)) __PYX_ERR(3, 145, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read", 0, 1, 4, __pyx_nargs); __PYX_ERR(3, 145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_54read(__pyx_self, __pyx_v_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_54read(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;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  std::string __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  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("read", 0);
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF(__pyx_v_patterns);
  __Pyx_INCREF(__pyx_v_unpatterns);

  /* "include/IO.pyx":160
 *     cdef vector[c.AnalysisObject*] aobjects
 *     cdef c.istringstream iss
 *     filename = _mktxtifstr(filename)             # <<<<<<<<<<<<<<
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_mktxtifstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(3, 160, __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":161
 *     cdef c.istringstream iss
 *     filename = _mktxtifstr(filename)
 *     patterns = _prep_patterns(patterns)             # <<<<<<<<<<<<<<
 *     unpatterns = _prep_patterns(unpatterns)
 *     if _istxt(filename):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_patterns};
    __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, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":162
 *     filename = _mktxtifstr(filename)
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)             # <<<<<<<<<<<<<<
 *     if _istxt(filename):
 *         c.IO_read_from_file(filename, aobjects, patterns, unpatterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_unpatterns};
    __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, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_unpatterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":163
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 *     if _istxt(filename):             # <<<<<<<<<<<<<<
 *         c.IO_read_from_file(filename, aobjects, patterns, unpatterns)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_istxt); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(3, 163, __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(3, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/IO.pyx":164
 *     unpatterns = _prep_patterns(unpatterns)
 *     if _istxt(filename):
 *         c.IO_read_from_file(filename, aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 *     else:
 *         s = _bytestr_from_file(filename)
 */
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 164, __pyx_L1_error)
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_patterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 164, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_unpatterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 164, __pyx_L1_error)
    try {
      YODA::read(__pyx_t_6, __pyx_v_aobjects, __pyx_t_7, __pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 164, __pyx_L1_error)
    }

    /* "include/IO.pyx":163
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 *     if _istxt(filename):             # <<<<<<<<<<<<<<
 *         c.IO_read_from_file(filename, aobjects, patterns, unpatterns)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":166
 *         c.IO_read_from_file(filename, aobjects, patterns, unpatterns)
 *     else:
 *         s = _bytestr_from_file(filename)             # <<<<<<<<<<<<<<
 *         iss.str(s)
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda', patterns, unpatterns)
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      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(3, 166, __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":167
 *     else:
 *         s = _bytestr_from_file(filename)
 *         iss.str(s)             # <<<<<<<<<<<<<<
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda', patterns, unpatterns)
 * 
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 167, __pyx_L1_error)
    (void)(__pyx_v_iss.str(__pyx_t_8));

    /* "include/IO.pyx":168
 *         s = _bytestr_from_file(filename)
 *         iss.str(s)
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda', patterns, unpatterns)             # <<<<<<<<<<<<<<
 * 
 *     if asdict:
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_n_b_yoda); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 168, __pyx_L1_error)
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_patterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 168, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_unpatterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 168, __pyx_L1_error)
    try {
      YODA::read(__pyx_v_iss, __pyx_v_aobjects, __pyx_t_8, __pyx_t_7, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 168, __pyx_L1_error)
    }
  }
  __pyx_L3:;

  /* "include/IO.pyx":170
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda', patterns, unpatterns)
 * 
 *     if asdict:             # <<<<<<<<<<<<<<
 *         d = _aobjects_to_dict(&aobjects)
 *         try:
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(3, 170, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "include/IO.pyx":171
 * 
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects)             # <<<<<<<<<<<<<<
 *         try:
 *             import collections
 */
    __pyx_t_1 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_d = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":172
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects)
 *         try:             # <<<<<<<<<<<<<<
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      /*try:*/ {

        /* "include/IO.pyx":173
 *         d = _aobjects_to_dict(&aobjects)
 *         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(3, 173, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_collections = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "include/IO.pyx":174
 *         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(3, 174, __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(3, 174, __pyx_L5_error)
        }
        __pyx_t_12 = __Pyx_PyDict_Items(__pyx_v_d); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 174, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = PySequence_List(__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 174, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_3 = ((PyObject*)__pyx_t_13);
        __pyx_t_13 = 0;
        __pyx_t_14 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(3, 174, __pyx_L5_error)
        __pyx_t_13 = NULL;
        __pyx_t_4 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
            __pyx_t_4 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __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_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 174, __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":172
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects)
 *         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_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "include/IO.pyx":175
 *             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(3, 175, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_3);

        /* "include/IO.pyx":176
 *             return collections.OrderedDict(sorted(d.items()))
 *         except:
 *             return d             # <<<<<<<<<<<<<<
 *     else:
 *         return _aobjects_to_list(&aobjects)
 */
        __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":172
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects)
 *         try:             # <<<<<<<<<<<<<<
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      goto __pyx_L1_error;
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      goto __pyx_L0;
      __pyx_L8_except_return:;
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      goto __pyx_L0;
    }

    /* "include/IO.pyx":170
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda', patterns, unpatterns)
 * 
 *     if asdict:             # <<<<<<<<<<<<<<
 *         d = _aobjects_to_dict(&aobjects)
 *         try:
 */
  }

  /* "include/IO.pyx":178
 *             return d
 *     else:
 *         return _aobjects_to_list(&aobjects)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "include/IO.pyx":145
 * ##
 * 
 * def read(filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     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_12);
  __Pyx_XDECREF(__pyx_t_13);
  __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_XDECREF(__pyx_v_patterns);
  __Pyx_XDECREF(__pyx_v_unpatterns);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":181
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_57readYODA(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_56readYODA, "readYODA(file_or_filename, asdict=True, patterns='', unpatterns='')\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_57readYODA = {"readYODA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_57readYODA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_56readYODA};
static PyObject *__pyx_pw_4yoda_4core_57readYODA(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readYODA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_True)));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_kp_s__2)));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((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_file_or_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 181, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 181, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 181, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 181, __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(3, 181, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("readYODA", 0, 1, 4, __pyx_nargs); __PYX_ERR(3, 181, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_56readYODA(__pyx_self, __pyx_v_file_or_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_56readYODA(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;
  unsigned int __pyx_t_4;
  std::string __pyx_t_5;
  std::string __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("readYODA", 0);
  __Pyx_INCREF(__pyx_v_patterns);
  __Pyx_INCREF(__pyx_v_unpatterns);

  /* "include/IO.pyx":195
 *     cdef c.istringstream iss
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)             # <<<<<<<<<<<<<<
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(3, 195, __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":196
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)             # <<<<<<<<<<<<<<
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 196, __pyx_L1_error)
  (void)(__pyx_v_iss.str(__pyx_t_5));

  /* "include/IO.pyx":197
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)             # <<<<<<<<<<<<<<
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderYODA_create().read(iss, aobjects, patterns, unpatterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_patterns};
    __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, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":198
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)             # <<<<<<<<<<<<<<
 *     c.ReaderYODA_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_unpatterns};
    __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, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_unpatterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":199
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderYODA_create().read(iss, aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 *     return _aobjects_to_dict(&aobjects) if asdict \
 *         else _aobjects_to_list(&aobjects)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_patterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 199, __pyx_L1_error)
  __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_unpatterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 199, __pyx_L1_error)
  try {
    YODA::ReaderYODA::create().read(__pyx_v_iss, __pyx_v_aobjects, __pyx_t_5, __pyx_t_6);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 199, __pyx_L1_error)
  }

  /* "include/IO.pyx":200
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderYODA_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \             # <<<<<<<<<<<<<<
 *         else _aobjects_to_list(&aobjects)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(3, 200, __pyx_L1_error)
  if (__pyx_t_7) {
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {

    /* "include/IO.pyx":201
 *     c.ReaderYODA_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \
 *         else _aobjects_to_list(&aobjects)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 201, __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":181
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     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_XDECREF(__pyx_v_patterns);
  __Pyx_XDECREF(__pyx_v_unpatterns);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":204
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_59readFLAT(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_58readFLAT, "readFLAT(file_or_filename, asdict=True, patterns='', unpatterns='')\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_59readFLAT = {"readFLAT", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_59readFLAT, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_58readFLAT};
static PyObject *__pyx_pw_4yoda_4core_59readFLAT(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readFLAT (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_True)));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_kp_s__2)));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((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_file_or_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 204, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 204, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 204, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 204, __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(3, 204, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("readFLAT", 0, 1, 4, __pyx_nargs); __PYX_ERR(3, 204, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_58readFLAT(__pyx_self, __pyx_v_file_or_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_58readFLAT(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;
  unsigned int __pyx_t_4;
  std::string __pyx_t_5;
  std::string __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("readFLAT", 0);
  __Pyx_INCREF(__pyx_v_patterns);
  __Pyx_INCREF(__pyx_v_unpatterns);

  /* "include/IO.pyx":218
 *     cdef c.istringstream iss
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)             # <<<<<<<<<<<<<<
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(3, 218, __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":219
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)             # <<<<<<<<<<<<<<
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 219, __pyx_L1_error)
  (void)(__pyx_v_iss.str(__pyx_t_5));

  /* "include/IO.pyx":220
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)             # <<<<<<<<<<<<<<
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderFLAT_create().read(iss, aobjects, patterns, unpatterns)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_patterns};
    __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, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":221
 *     iss.str(s)
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)             # <<<<<<<<<<<<<<
 *     c.ReaderFLAT_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_prep_patterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_unpatterns};
    __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, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_unpatterns, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":222
 *     patterns = _prep_patterns(patterns)
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderFLAT_create().read(iss, aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 *     return _aobjects_to_dict(&aobjects) if asdict \
 *         else _aobjects_to_list(&aobjects)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_patterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 222, __pyx_L1_error)
  __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_unpatterns); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 222, __pyx_L1_error)
  try {
    YODA::ReaderFLAT::create().read(__pyx_v_iss, __pyx_v_aobjects, __pyx_t_5, __pyx_t_6);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 222, __pyx_L1_error)
  }

  /* "include/IO.pyx":223
 *     unpatterns = _prep_patterns(unpatterns)
 *     c.ReaderFLAT_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \             # <<<<<<<<<<<<<<
 *         else _aobjects_to_list(&aobjects)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(3, 223, __pyx_L1_error)
  if (__pyx_t_7) {
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {

    /* "include/IO.pyx":224
 *     c.ReaderFLAT_create().read(iss, aobjects, patterns, unpatterns)
 *     return _aobjects_to_dict(&aobjects) if asdict \
 *         else _aobjects_to_list(&aobjects)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 224, __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":204
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     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_XDECREF(__pyx_v_patterns);
  __Pyx_XDECREF(__pyx_v_unpatterns);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":231
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_61write(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_60write, "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_61write = {"write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_61write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_60write};
static PyObject *__pyx_pw_4yoda_4core_61write(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_filename,&__pyx_n_s_precision,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 231, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 231, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, 1); __PYX_ERR(3, 231, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 231, __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(3, 231, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 231, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_60write(__pyx_self, __pyx_v_ana_objs, __pyx_v_filename, __pyx_v_precision);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_60write(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;
  unsigned 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_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 1);

  /* "include/IO.pyx":239
 *     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(3, 239, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 239, __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(3, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __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(3, 239, __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(3, 239, __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(3, 239, __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 (;;) {
      {
        Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 239, __pyx_L1_error)
        #endif
        if (__pyx_t_10 >= __pyx_temp) 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(3, 239, __pyx_L1_error)
      #else
      __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 239, __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(3, 239, __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(3, 239, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 239, __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(3, 239, __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(3, 239, __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, 239, __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(3, 239, __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":240
 *     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(3, 240, __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(3, 240, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_ana_objs)) __PYX_ERR(3, 240, __pyx_L1_error);
      __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":241
 *     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(3, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(3, 241, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_14)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 241, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) 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(3, 241, __pyx_L1_error)
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 241, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) 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(3, 241, __pyx_L1_error)
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 241, __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(3, 241, __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(3, 241, __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":242
 *               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(3, 242, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_15);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(3, 242, __pyx_L1_error)
    }

    /* "include/IO.pyx":241
 *     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":243
 *     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_6libcpp_6string_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 243, __pyx_L1_error)
  __pyx_t_17 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 243, __pyx_L1_error)
  try {
    YODA::write(__pyx_t_16, __pyx_v_vec, __pyx_t_17);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 243, __pyx_L1_error)
  }

  /* "include/IO.pyx":231
 * ##
 * 
 * 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":247
 * 
 * 
 * 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_63writeYODA(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_62writeYODA, "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_63writeYODA = {"writeYODA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_63writeYODA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_62writeYODA};
static PyObject *__pyx_pw_4yoda_4core_63writeYODA(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeYODA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 247, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 247, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeYODA", 0, 2, 3, 1); __PYX_ERR(3, 247, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 247, __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(3, 247, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeYODA", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 247, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_62writeYODA(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_62writeYODA(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;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  int __pyx_t_11;
  std::string __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeYODA", 1);

  /* "include/IO.pyx":255
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \             # <<<<<<<<<<<<<<
 *              if issubclass(type(ana_objs), AnalysisObject) 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(3, 255, __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(3, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __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, 255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {

    /* "include/IO.pyx":256
 *     cdef AnalysisObject a
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \
 *              if issubclass(type(ana_objs), AnalysisObject) else ana_objs             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
    __pyx_t_7 = PyObject_IsSubclass(((PyObject *)Py_TYPE(__pyx_v_ana_objs)), ((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 256, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":255
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \             # <<<<<<<<<<<<<<
 *              if issubclass(type(ana_objs), AnalysisObject) else ana_objs
 *     for a in aolist:
 */
      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_ana_objs)) __PYX_ERR(3, 255, __pyx_L1_error);
      __pyx_t_4 = __pyx_t_3;
      __pyx_t_3 = 0;
    } else {

      /* "include/IO.pyx":256
 *     cdef AnalysisObject a
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \
 *              if issubclass(type(ana_objs), AnalysisObject) else ana_objs             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
      __Pyx_INCREF(__pyx_v_ana_objs);
      __pyx_t_4 = __pyx_v_ana_objs;
    }
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":257
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \
 *              if issubclass(type(ana_objs), AnalysisObject) 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(3, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 257, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 257, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 257, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 257, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 257, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__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, 257, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(3, 257, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "include/IO.pyx":258
 *              if issubclass(type(ana_objs), AnalysisObject) else ana_objs
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterYODA_create()
 *     if precision >= 0:
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(3, 258, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(3, 258, __pyx_L1_error)
    }

    /* "include/IO.pyx":257
 *     aolist = list(ana_objs.values()) if hasattr(ana_objs, "values") else [ana_objs] \
 *              if issubclass(type(ana_objs), AnalysisObject) 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":259
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()             # <<<<<<<<<<<<<<
 *     if precision >= 0:
 *         w.setPrecision(precision)
 */
  __pyx_v_w = (&YODA::WriterYODA::create());

  /* "include/IO.pyx":260
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_precision, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 260, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":261
 *     w = & c.WriterYODA_create()
 *     if precision >= 0:
 *         w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 261, __pyx_L1_error)
    __pyx_v_w->setPrecision(__pyx_t_11);

    /* "include/IO.pyx":260
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  }

  /* "include/IO.pyx":262
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_istxt); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":263
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 263, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_12, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 263, __pyx_L1_error)
    }

    /* "include/IO.pyx":262
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L7;
  }

  /* "include/IO.pyx":265
 *         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(3, 265, __pyx_L1_error)
    }

    /* "include/IO.pyx":266
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_file_or_filename};
      __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;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 266, __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;
  }
  __pyx_L7:;

  /* "include/IO.pyx":247
 * 
 * 
 * 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":269
 * 
 * 
 * def writeYODA1(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA1 format.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_65writeYODA1(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_64writeYODA1, "writeYODA1(ana_objs, file_or_filename, precision=-1)\n\n    Write data objects to the provided file in YODA1 format.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_65writeYODA1 = {"writeYODA1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_65writeYODA1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_64writeYODA1};
static PyObject *__pyx_pw_4yoda_4core_65writeYODA1(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeYODA1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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_file_or_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 269, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeYODA1", 0, 2, 3, 1); __PYX_ERR(3, 269, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __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, "writeYODA1") < 0)) __PYX_ERR(3, 269, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeYODA1", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 269, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.writeYODA1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_64writeYODA1(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_64writeYODA1(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;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  int __pyx_t_11;
  std::string __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeYODA1", 1);

  /* "include/IO.pyx":277
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(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(3, 277, __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(3, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __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, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {

    /* "include/IO.pyx":278
 *     cdef AnalysisObject a
 *     aolist = list(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(3, 278, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":277
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(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_4 = __pyx_v_ana_objs;
    } else {

      /* "include/IO.pyx":278
 *     cdef AnalysisObject a
 *     aolist = list(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_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_ana_objs)) __PYX_ERR(3, 278, __pyx_L1_error);
      __pyx_t_4 = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":279
 *     aolist = list(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.WriterYODA1_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(3, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 279, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 279, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 279, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 279, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 279, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 279, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 279, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__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, 279, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(3, 279, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "include/IO.pyx":280
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterYODA1_create()
 *     if precision >= 0:
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(3, 280, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(3, 280, __pyx_L1_error)
    }

    /* "include/IO.pyx":279
 *     aolist = list(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.WriterYODA1_create()
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/IO.pyx":281
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA1_create()             # <<<<<<<<<<<<<<
 *     if precision >= 0:
 *         w.setPrecision(precision)
 */
  __pyx_v_w = (&YODA::WriterYODA1::create());

  /* "include/IO.pyx":282
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA1_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_precision, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 282, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":283
 *     w = & c.WriterYODA1_create()
 *     if precision >= 0:
 *         w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 283, __pyx_L1_error)
    __pyx_v_w->setPrecision(__pyx_t_11);

    /* "include/IO.pyx":282
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA1_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  }

  /* "include/IO.pyx":284
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_istxt); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":285
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 285, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_12, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 285, __pyx_L1_error)
    }

    /* "include/IO.pyx":284
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L7;
  }

  /* "include/IO.pyx":287
 *         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(3, 287, __pyx_L1_error)
    }

    /* "include/IO.pyx":288
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_file_or_filename};
      __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;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 288, __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;
  }
  __pyx_L7:;

  /* "include/IO.pyx":269
 * 
 * 
 * def writeYODA1(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA1 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.writeYODA1", __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":291
 * 
 * 
 * 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_67writeFLAT(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_66writeFLAT, "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_67writeFLAT = {"writeFLAT", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_67writeFLAT, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_66writeFLAT};
static PyObject *__pyx_pw_4yoda_4core_67writeFLAT(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeFLAT (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 291, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 291, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeFLAT", 0, 2, 3, 1); __PYX_ERR(3, 291, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 291, __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(3, 291, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeFLAT", 0, 2, 3, __pyx_nargs); __PYX_ERR(3, 291, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_66writeFLAT(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_66writeFLAT(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;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  int __pyx_t_11;
  std::string __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeFLAT", 1);

  /* "include/IO.pyx":299
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(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(3, 299, __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(3, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __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, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {

    /* "include/IO.pyx":300
 *     cdef AnalysisObject a
 *     aolist = list(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(3, 300, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":299
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = list(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_4 = __pyx_v_ana_objs;
    } else {

      /* "include/IO.pyx":300
 *     cdef AnalysisObject a
 *     aolist = list(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_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_ana_objs)) __PYX_ERR(3, 300, __pyx_L1_error);
      __pyx_t_4 = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":301
 *     aolist = list(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(3, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 301, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__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, 301, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(3, 301, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "include/IO.pyx":302
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterFLAT_create()
 *     if precision >= 0:
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(3, 302, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(3, 302, __pyx_L1_error)
    }

    /* "include/IO.pyx":301
 *     aolist = list(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":303
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()             # <<<<<<<<<<<<<<
 *     if precision >= 0:
 *         w.setPrecision(precision)
 */
  __pyx_v_w = (&YODA::WriterFLAT::create());

  /* "include/IO.pyx":304
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_precision, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 304, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":305
 *     w = & c.WriterFLAT_create()
 *     if precision >= 0:
 *         w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 305, __pyx_L1_error)
    __pyx_v_w->setPrecision(__pyx_t_11);

    /* "include/IO.pyx":304
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()
 *     if precision >= 0:             # <<<<<<<<<<<<<<
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  }

  /* "include/IO.pyx":306
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_istxt); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 306, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":307
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 307, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_12, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 307, __pyx_L1_error)
    }

    /* "include/IO.pyx":306
 *     if precision >= 0:
 *         w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L7;
  }

  /* "include/IO.pyx":309
 *         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(3, 309, __pyx_L1_error)
    }

    /* "include/IO.pyx":310
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_file_or_filename};
      __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;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 310, __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;
  }
  __pyx_L7:;

  /* "include/IO.pyx":291
 * 
 * 
 * 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/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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(14, 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:;
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __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;
  YODA::Point *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 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(14, 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:;
}

/* "include/Point.pyx":24
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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;
  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("dim", 1);

  /* "include/Point.pyx":28
 * 
 *         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(14, 28, __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, 28, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":24
 * 
 * 
 *     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":31
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 31, __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(14, 31, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(14, 31, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/Point.pyx":34
 *         """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(14, 34, __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(14, 34, __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(14, 34, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":31
 * 
 * 
 *     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":36
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_val,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 36, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVal", 1, 2, 2, 1); __PYX_ERR(14, 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, "setVal") < 0)) __PYX_ERR(14, 36, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(14, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/Point.pyx":40
 * 
 *         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(14, 40, __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(14, 40, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(14, 40, __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(14, 40, __pyx_L1_error)
  }

  /* "include/Point.pyx":36
 *         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":50
 *     #    return util.read_error_pair(self.pptr().errs(i))
 * 
 *     def setErr(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_9setErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_8setErr, "Point.setErr(self, i, e)\n(int, float) -> None\n\n        Set symmetric errors on axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_9setErr = {"setErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_9setErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_8setErr};
static PyObject *__pyx_pw_4yoda_4core_5Point_9setErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 50, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 50, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErr", 1, 2, 2, 1); __PYX_ERR(14, 50, __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(14, 50, __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_e = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(14, 50, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_8setErr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_8setErr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e) {
  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("setErr", 1);

  /* "include/Point.pyx":55
 *         Set symmetric errors on axis i.
 *         """
 *         self.pptr().setErr(i, e)             # <<<<<<<<<<<<<<
 * 
 *     def setErrs(self, i, *es):
 */
  __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(14, 55, __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(14, 55, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(14, 55, __pyx_L1_error)
  try {
    __pyx_t_1->setErr(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 55, __pyx_L1_error)
  }

  /* "include/Point.pyx":50
 *     #    return util.read_error_pair(self.pptr().errs(i))
 * 
 *     def setErr(self, i, e):             # <<<<<<<<<<<<<<
 *         """(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.setErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":57
 *         self.pptr().setErr(i, e)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_11setErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_10setErrs, "Point.setErrs(self, i, *es)\n\n        (int, float) -> None\n        (int, [float, float]) -> None\n        (int, float, float) -> None\n\n        Set asymmetric errors on axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_11setErrs = {"setErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_11setErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_10setErrs};
static PyObject *__pyx_pw_4yoda_4core_5Point_11setErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __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};
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 57, __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(14, 57, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrs", 0, 1, 1, __pyx_nargs); __PYX_ERR(14, 57, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_10setErrs(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_10setErrs(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  YODA::Point *__pyx_t_9;
  size_t __pyx_t_10;
  std::pair<double,double>  __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setErrs", 1);

  /* "include/Point.pyx":65
 *         Set asymmetric errors on axis i.
 *         """
 *         errs=list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Point.pyx":66
 *         """
 *         errs=list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0])
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(14, 66, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/Point.pyx":67
 *         errs=list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(i,errs[0])
 *                 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(14, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/Point.pyx":68
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0])             # <<<<<<<<<<<<<<
 *                 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(14, 68, __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(14, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_i, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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(14, 68, __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/Point.pyx":69
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0])
 *                 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":67
 *         errs=list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(i,errs[0])
 *                 return
 */
    }

    /* "include/Point.pyx":70
 *                 self.setErr(i,errs[0])
 *                 return
 *             errs=errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(i, tuple(errs))
 */
    __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(14, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point.pyx":66
 *         """
 *         errs=list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0])
 */
  }

  /* "include/Point.pyx":72
 *             errs=errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(i, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::Point *)NULL))) __PYX_ERR(14, 72, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(14, 72, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  try {
    __pyx_t_9->setErrs(__pyx_t_10, __pyx_t_11);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 72, __pyx_L1_error)
  }

  /* "include/Point.pyx":57
 *         self.pptr().setErr(i, e)
 * 
 *     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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point.setErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":82
 *     #    return self.pptr().errMinus(i)
 * 
 *     def setErrMinus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_13setErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_12setErrMinus, "Point.setErrMinus(self, i, e)\n(int, float) -> None\n\n        Set minus error on axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_13setErrMinus = {"setErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_13setErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_12setErrMinus};
static PyObject *__pyx_pw_4yoda_4core_5Point_13setErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 82, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 82, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErrMinus", 1, 2, 2, 1); __PYX_ERR(14, 82, __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(14, 82, __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_e = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrMinus", 1, 2, 2, __pyx_nargs); __PYX_ERR(14, 82, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_12setErrMinus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_12setErrMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e) {
  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("setErrMinus", 1);

  /* "include/Point.pyx":87
 *         Set minus error on axis i.
 *         """
 *         self.pptr().setErrMinus(i, e)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(14, 87, __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(14, 87, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(14, 87, __pyx_L1_error)
  try {
    __pyx_t_1->setErrMinus(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 87, __pyx_L1_error)
  }

  /* "include/Point.pyx":82
 *     #    return self.pptr().errMinus(i)
 * 
 *     def setErrMinus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(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.setErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":97
 *     #    return self.pptr().errPlus(i)
 * 
 *     def setErrPlus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_15setErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14setErrPlus, "Point.setErrPlus(self, i, e)\n(int, float) -> None\n\n        Set plus error on axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_15setErrPlus = {"setErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_15setErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_14setErrPlus};
static PyObject *__pyx_pw_4yoda_4core_5Point_15setErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 97, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 97, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErrPlus", 1, 2, 2, 1); __PYX_ERR(14, 97, __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(14, 97, __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_e = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrPlus", 1, 2, 2, __pyx_nargs); __PYX_ERR(14, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_14setErrPlus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_14setErrPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e) {
  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("setErrPlus", 1);

  /* "include/Point.pyx":102
 *         Set plus error on axis i.
 *         """
 *         self.pptr().setErrPlus(i, e)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(14, 102, __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(14, 102, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(14, 102, __pyx_L1_error)
  try {
    __pyx_t_1->setErrPlus(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 102, __pyx_L1_error)
  }

  /* "include/Point.pyx":97
 *     #    return self.pptr().errPlus(i)
 * 
 *     def setErrPlus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(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.setErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":130
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_17scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16scale, "Point.scale(self, i, scale)\n(int, float) -> None\n\n        Scale values on axis i\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_17scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_17scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_16scale};
static PyObject *__pyx_pw_4yoda_4core_5Point_17scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 130, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(14, 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, "scale") < 0)) __PYX_ERR(14, 130, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(14, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_16scale(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_16scale(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", 1);

  /* "include/Point.pyx":135
 *         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(14, 135, __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(14, 135, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(14, 135, __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(14, 135, __pyx_L1_error)
  }

  /* "include/Point.pyx":130
 * 
 * 
 *     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_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_5Point_18__reduce_cython__, "Point.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_18__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Point_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18__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_18__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__", 1);

  /* "(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(1, 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_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_5Point_20__setstate_cython__, "Point.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_20__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Point_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_20__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_20__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__", 1);

  /* "(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(1, 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/generated/Axis.pyx":17
 *       str axisT
 * 
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[double]*> self.ptr()
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 */

static CYTHON_INLINE YODA::Axis<double>  *__pyx_f_4yoda_4core_4Axis_axis_d_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  YODA::Axis<double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Axis.pyx":18
 * 
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:
 *         return <c.Axis[double]*> self.ptr()             # <<<<<<<<<<<<<<
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 *         return <c.Axis[int]*> 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, 18, __pyx_L1_error)
  __pyx_r = ((YODA::Axis<double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Axis.pyx":17
 *       str axisT
 * 
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[double]*> self.ptr()
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 */

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

/* "include/generated/Axis.pyx":19
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:
 *         return <c.Axis[double]*> self.ptr()
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[int]*> self.ptr()
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:
 */

static CYTHON_INLINE YODA::Axis<int>  *__pyx_f_4yoda_4core_4Axis_axis_i_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  YODA::Axis<int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Axis.pyx":20
 *         return <c.Axis[double]*> self.ptr()
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 *         return <c.Axis[int]*> self.ptr()             # <<<<<<<<<<<<<<
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:
 *         return <c.Axis[string]*> 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, 20, __pyx_L1_error)
  __pyx_r = ((YODA::Axis<int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Axis.pyx":19
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:
 *         return <c.Axis[double]*> self.ptr()
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[int]*> self.ptr()
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:
 */

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

/* "include/generated/Axis.pyx":21
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 *         return <c.Axis[int]*> self.ptr()
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Axis<std::string>  *__pyx_f_4yoda_4core_4Axis_axis_s_ptr(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  YODA::Axis<std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Axis.pyx":22
 *         return <c.Axis[int]*> self.ptr()
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:
 *         return <c.Axis[string]*> 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(4, 22, __pyx_L1_error)
  __pyx_r = ((YODA::Axis<std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Axis.pyx":21
 *     cdef inline c.Axis[int]* axis_i_ptr(self) except NULL:
 *         return <c.Axis[int]*> self.ptr()
 *     cdef inline c.Axis[string]* axis_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Axis[string]*> self.ptr()
 * 
 */

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

/* "include/generated/Axis.pyx":24
 *         return <c.Axis[string]*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self.axisT = ''
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_4Axis_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_4Axis_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_4Axis___init__(((struct __pyx_obj_4yoda_4core_Axis *)__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_4Axis___init__(struct __pyx_obj_4yoda_4core_Axis *__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__", 1);

  /* "include/generated/Axis.pyx":25
 * 
 *     def __init__(self, *args, **kwargs):
 *         self.axisT = ''             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->axisT);
  __Pyx_DECREF(__pyx_v_self->axisT);
  __pyx_v_self->axisT = __pyx_kp_s__2;

  /* "include/generated/Axis.pyx":26
 *     def __init__(self, *args, **kwargs):
 *         self.axisT = ''
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 26, __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, 26, __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_Axis__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Axis__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(4, 26, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(4, 26, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(4, 26, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 26, __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, 26, __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, 26, __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/generated/Axis.pyx":24
 *         return <c.Axis[string]*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self.axisT = ''
 *         util.try_loop([self.__init1, self.__init2], *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.Axis.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Axis.pyx":28
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Axis[double]())
 *         self.axisT = 'd'
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_3_Axis__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_2__init1, "Axis.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_3_Axis__init1 = {"_Axis__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_3_Axis__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_2__init1};
static PyObject *__pyx_pw_4yoda_4core_4Axis_3_Axis__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Axis__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_Axis__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Axis__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_2__init1(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_4Axis_2__init1(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Axis<double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Axis__init1", 1);

  /* "include/generated/Axis.pyx":29
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Axis[double]())             # <<<<<<<<<<<<<<
 *         self.axisT = 'd'
 * 
 */
  try {
    __pyx_t_1 = new YODA::Axis<double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 29, __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(4, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Axis.pyx":30
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Axis[double]())
 *         self.axisT = 'd'             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, edges):
 */
  __Pyx_INCREF(__pyx_n_s_d);
  __Pyx_GIVEREF(__pyx_n_s_d);
  __Pyx_GOTREF(__pyx_v_self->axisT);
  __Pyx_DECREF(__pyx_v_self->axisT);
  __pyx_v_self->axisT = __pyx_n_s_d;

  /* "include/generated/Axis.pyx":28
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Axis[double]())
 *         self.axisT = 'd'
 */

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

/* "include/generated/Axis.pyx":32
 *         self.axisT = 'd'
 * 
 *     def __init2(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] edges_d
 *         cdef vector[int] edges_i
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_5_Axis__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_4Axis_4__init2, "Axis.__init2(self, edges)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_5_Axis__init2 = {"_Axis__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_5_Axis__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_4__init2};
static PyObject *__pyx_pw_4yoda_4core_4Axis_5_Axis__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_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Axis__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 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, "_Axis__init2") < 0)) __PYX_ERR(4, 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_edges = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Axis__init2", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis._Axis__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_4__init2(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Axis.pyx":38
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'
 */

static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_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(4, 38, __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_4Axis_12_Axis__init2_2generator2, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Axis__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(4, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Axis._Axis__init2.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_4Axis_12_Axis__init2_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(4, 38, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(4, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(4, 38, __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(4, 38, __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, 38, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 38, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 38, __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, 38, __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(4, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 38, __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;
}
static PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_5generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Axis.pyx":42
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):
 *           edges_i = list(int(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'
 */

static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_3genexpr(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(4, 42, __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_4Axis_12_Axis__init2_5generator3, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Axis__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Axis._Axis__init2.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_4Axis_12_Axis__init2_5generator3(__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;
  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(4, 42, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(4, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(4, 42, __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(4, 42, __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, 42, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 42, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 42, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 42, __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, 42, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 42, __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;
}
static PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_8generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Axis.pyx":46
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):
 *           edges_s = list(str(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 *           self.axisT = 's'
 */

static PyObject *__pyx_pf_4yoda_4core_4Axis_12_Axis__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_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_5_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_5_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(4, 46, __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_4Axis_12_Axis__init2_8generator4, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Axis__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(4, 46, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Axis._Axis__init2.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_4Axis_12_Axis__init2_8generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_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(4, 46, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(4, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(4, 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(4, 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(4, 46, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 46, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 46, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 46, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 46, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 46, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 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(4, 46, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 46, __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/generated/Axis.pyx":32
 *         self.axisT = 'd'
 * 
 *     def __init2(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] edges_d
 *         cdef vector[int] edges_i
 */

static PyObject *__pyx_pf_4yoda_4core_4Axis_4__init2(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_edges) {
  std::vector<double>  __pyx_v_edges_d;
  std::vector<int>  __pyx_v_edges_i;
  std::vector<std::string>  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_2generator2 = 0;
  PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_5generator3 = 0;
  PyObject *__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_8generator4 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  std::vector<double>  __pyx_t_5;
  YODA::Axis<double>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::Axis<int>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  YODA::Axis<std::string>  *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Axis__init2", 1);

  /* "include/generated/Axis.pyx":36
 *         cdef vector[int] edges_i
 *         cdef vector[string] edges_s
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default             # <<<<<<<<<<<<<<
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_edges); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(4, 36, __pyx_L1_error)
  __pyx_t_2 = (!(__pyx_t_1 != 0));
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_edges, __pyx_n_s_append); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 36, __pyx_L1_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/generated/Axis.pyx":37
 *         cdef vector[string] edges_s
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default
 *         if isinstance(edges[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = list(float(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {

    /* "include/generated/Axis.pyx":38
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_4Axis_12_Axis__init2_genexpr(NULL, __pyx_v_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __pyx_convert_vector_from_py_double(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);

    /* "include/generated/Axis.pyx":39
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))             # <<<<<<<<<<<<<<
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):
 */
    try {
      __pyx_t_6 = new YODA::Axis<double> (__pyx_v_edges_d);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 39, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "include/generated/Axis.pyx":40
 *           edges_d = list(float(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'             # <<<<<<<<<<<<<<
 *         elif isinstance(edges[0], int):
 *           edges_i = list(int(x) for x in edges)
 */
    __Pyx_INCREF(__pyx_n_s_d);
    __Pyx_GIVEREF(__pyx_n_s_d);
    __Pyx_GOTREF(__pyx_v_self->axisT);
    __Pyx_DECREF(__pyx_v_self->axisT);
    __pyx_v_self->axisT = __pyx_n_s_d;

    /* "include/generated/Axis.pyx":37
 *         cdef vector[string] edges_s
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default
 *         if isinstance(edges[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = list(float(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 */
    goto __pyx_L4;
  }

  /* "include/generated/Axis.pyx":41
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = list(int(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyInt_Check(__pyx_t_3); 
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/Axis.pyx":42
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):
 *           edges_i = list(int(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'
 */
    __pyx_t_3 = __pyx_pf_4yoda_4core_4Axis_12_Axis__init2_3genexpr(NULL, __pyx_v_edges); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_int(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 42, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/Axis.pyx":43
 *         elif isinstance(edges[0], int):
 *           edges_i = list(int(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))             # <<<<<<<<<<<<<<
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):
 */
    try {
      __pyx_t_8 = new YODA::Axis<int> (__pyx_v_edges_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 43, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/Axis.pyx":44
 *           edges_i = list(int(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'             # <<<<<<<<<<<<<<
 *         elif isinstance(edges[0], str):
 *           edges_s = list(str(x) for x in edges)
 */
    __Pyx_INCREF(__pyx_n_s_i);
    __Pyx_GIVEREF(__pyx_n_s_i);
    __Pyx_GOTREF(__pyx_v_self->axisT);
    __Pyx_DECREF(__pyx_v_self->axisT);
    __pyx_v_self->axisT = __pyx_n_s_i;

    /* "include/generated/Axis.pyx":41
 *           cutil.set_owned_ptr(self, new c.Axis[double](edges_d))
 *           self.axisT = 'd'
 *         elif isinstance(edges[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = list(int(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 */
    goto __pyx_L4;
  }

  /* "include/generated/Axis.pyx":45
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = list(str(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(__pyx_t_2)) {

    /* "include/generated/Axis.pyx":46
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):
 *           edges_s = list(str(x) for x in edges)             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 *           self.axisT = 's'
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_4Axis_12_Axis__init2_6genexpr(NULL, __pyx_v_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_9 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 46, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9);

    /* "include/generated/Axis.pyx":47
 *         elif isinstance(edges[0], str):
 *           edges_s = list(str(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))             # <<<<<<<<<<<<<<
 *           self.axisT = 's'
 *         else:
 */
    try {
      __pyx_t_10 = new YODA::Axis<std::string> (__pyx_v_edges_s);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 47, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "include/generated/Axis.pyx":48
 *           edges_s = list(str(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 *           self.axisT = 's'             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown edge type encountered!")
 */
    __Pyx_INCREF(__pyx_n_s_s);
    __Pyx_GIVEREF(__pyx_n_s_s);
    __Pyx_GOTREF(__pyx_v_self->axisT);
    __Pyx_DECREF(__pyx_v_self->axisT);
    __pyx_v_self->axisT = __pyx_n_s_s;

    /* "include/generated/Axis.pyx":45
 *           cutil.set_owned_ptr(self, new c.Axis[int](edges_i))
 *           self.axisT = 'i'
 *         elif isinstance(edges[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = list(str(x) for x in edges)
 *           cutil.set_owned_ptr(self, new c.Axis[string](edges_s))
 */
    goto __pyx_L4;
  }

  /* "include/generated/Axis.pyx":50
 *           self.axisT = 's'
 *         else:
 *           raise RuntimeError("Unknown edge type encountered!")             # <<<<<<<<<<<<<<
 * 
 *     #def copy(self):
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 50, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "include/generated/Axis.pyx":32
 *         self.axisT = 'd'
 * 
 *     def __init2(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] edges_d
 *         cdef vector[int] edges_i
 */

  /* 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_AddTraceback("yoda.core.Axis._Axis__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_2generator2);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_5generator3);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_4Axis_12_Axis__init2_8generator4);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Axis.pyx":55
 *     #    return cutil.set_owned_ptr(self, new c.Axis(deref(self.aptr())))
 * 
 *     def numBins(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_7numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_6numBins, "Axis.numBins(self, includeOverflows=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_7numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_7numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_6numBins};
static PyObject *__pyx_pw_4yoda_4core_4Axis_7numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 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, "numBins") < 0)) __PYX_ERR(4, 55, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 55, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_6numBins(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_6numBins(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::Axis<int>  *__pyx_t_6;
  YODA::Axis<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/Axis.pyx":56
 * 
 *     def numBins(self, includeOverflows=False):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().numBins(includeOverflows)
 *         if self.axisT == 'i':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 56, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":57
 *     def numBins(self, includeOverflows=False):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().numBins(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 57, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 57, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBins(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 57, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":56
 * 
 *     def numBins(self, includeOverflows=False):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().numBins(includeOverflows)
 *         if self.axisT == 'i':
 */
  }

  /* "include/generated/Axis.pyx":58
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().numBins(includeOverflows)
 *         if self.axisT == 's':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 58, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":59
 *           return self.axis_d_ptr().numBins(includeOverflows)
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().numBins(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().numBins(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_4Axis_axis_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Axis<int>  *)NULL))) __PYX_ERR(4, 59, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 59, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBins(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 59, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":58
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().numBins(includeOverflows)
 *         if self.axisT == 's':
 */
  }

  /* "include/generated/Axis.pyx":60
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().numBins(includeOverflows)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().numBins(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 60, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":61
 *           return self.axis_i_ptr().numBins(includeOverflows)
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().numBins(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_4Axis_axis_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Axis<std::string>  *)NULL))) __PYX_ERR(4, 61, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 61, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBins(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 61, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":60
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().numBins(includeOverflows)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().numBins(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":62
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().numBins(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def type(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 62, __pyx_L1_error)

  /* "include/generated/Axis.pyx":55
 *     #    return cutil.set_owned_ptr(self, new c.Axis(deref(self.aptr())))
 * 
 *     def numBins(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 */

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

/* "include/generated/Axis.pyx":64
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def type(self):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_9type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_8type, "Axis.type(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_9type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_9type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_8type};
static PyObject *__pyx_pw_4yoda_4core_4Axis_9type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4Axis_8type(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_4Axis_8type(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::Axis<int>  *__pyx_t_5;
  YODA::Axis<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 1);

  /* "include/generated/Axis.pyx":65
 * 
 *     def type(self):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().type()
 *         if self.axisT == 'i':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 65, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":66
 *     def type(self):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().type()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 66, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 66, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":65
 * 
 *     def type(self):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().type()
 *         if self.axisT == 'i':
 */
  }

  /* "include/generated/Axis.pyx":67
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().type()
 *         if self.axisT == 's':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 67, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":68
 *           return self.axis_d_ptr().type()
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().type()             # <<<<<<<<<<<<<<
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().type()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_4Axis_axis_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Axis<int>  *)NULL))) __PYX_ERR(4, 68, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 68, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":67
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().type()
 *         if self.axisT == 's':
 */
  }

  /* "include/generated/Axis.pyx":69
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().type()
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().type()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 69, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":70
 *           return self.axis_i_ptr().type()
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().type()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_4Axis_axis_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Axis<std::string>  *)NULL))) __PYX_ERR(4, 70, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 70, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":69
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().type()
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().type()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":71
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().type()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def index(self, edge):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 71, __pyx_L1_error)

  /* "include/generated/Axis.pyx":64
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def type(self):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 */

  /* 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.Axis.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Axis.pyx":73
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def index(self, edge):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_11index(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_10index, "Axis.index(self, edge)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_11index = {"index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_11index, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_10index};
static PyObject *__pyx_pw_4yoda_4core_4Axis_11index(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edge = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("index (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edge,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_edge)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 73, __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, "index") < 0)) __PYX_ERR(4, 73, __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_edge = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 73, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_10index(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_edge);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_10index(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_edge) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::Axis<int>  *__pyx_t_6;
  int __pyx_t_7;
  YODA::Axis<std::string>  *__pyx_t_8;
  std::string __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("index", 1);

  /* "include/generated/Axis.pyx":74
 * 
 *     def index(self, edge):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().index(edge)
 *         if self.axisT == 'i':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 74, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":75
 *     def index(self, edge):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().index(edge)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 75, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_edge); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 75, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->index(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 75, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":74
 * 
 *     def index(self, edge):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().index(edge)
 *         if self.axisT == 'i':
 */
  }

  /* "include/generated/Axis.pyx":76
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().index(edge)
 *         if self.axisT == 's':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 76, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":77
 *           return self.axis_d_ptr().index(edge)
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().index(edge)             # <<<<<<<<<<<<<<
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().index(edge)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_4Axis_axis_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Axis<int>  *)NULL))) __PYX_ERR(4, 77, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_edge); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 77, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->index(__pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 77, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":76
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().index(edge)
 *         if self.axisT == 's':
 */
  }

  /* "include/generated/Axis.pyx":78
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().index(edge)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().index(edge)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 78, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":79
 *           return self.axis_i_ptr().index(edge)
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().index(edge)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_4Axis_axis_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Axis<std::string>  *)NULL))) __PYX_ERR(4, 79, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_edge); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 79, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->index(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 79, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":78
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().index(edge)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().index(edge)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":80
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().index(edge)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def width(self, index):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 80, __pyx_L1_error)

  /* "include/generated/Axis.pyx":73
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def index(self, edge):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 */

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

/* "include/generated/Axis.pyx":82
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def width(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_13width(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_12width, "Axis.width(self, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_13width = {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_13width, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_12width};
static PyObject *__pyx_pw_4yoda_4core_4Axis_13width(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("width (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 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, "width") < 0)) __PYX_ERR(4, 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("width", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 82, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_12width(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_12width(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("width", 1);

  /* "include/generated/Axis.pyx":83
 * 
 *     def width(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().width(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 83, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":84
 *     def width(self, index):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 84, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 84, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->width(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 84, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":83
 * 
 *     def width(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().width(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":85
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def max(self, index):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 85, __pyx_L1_error)

  /* "include/generated/Axis.pyx":82
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def width(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)
 */

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

/* "include/generated/Axis.pyx":87
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def max(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_15max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_14max, "Axis.max(self, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_15max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_15max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_14max};
static PyObject *__pyx_pw_4yoda_4core_4Axis_15max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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, "max") < 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 87, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_14max(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_14max(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("max", 1);

  /* "include/generated/Axis.pyx":88
 * 
 *     def max(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().max(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 88, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":89
 *     def max(self, index):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 89, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 89, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->max(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 89, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":88
 * 
 *     def max(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().max(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":90
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def min(self, index):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 90, __pyx_L1_error)

  /* "include/generated/Axis.pyx":87
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def max(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)
 */

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

/* "include/generated/Axis.pyx":92
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def min(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_17min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_16min, "Axis.min(self, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_17min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_17min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_16min};
static PyObject *__pyx_pw_4yoda_4core_4Axis_17min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 92, __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, "min") < 0)) __PYX_ERR(4, 92, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_16min(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_16min(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("min", 1);

  /* "include/generated/Axis.pyx":93
 * 
 *     def min(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().min(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 93, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":94
 *     def min(self, index):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 94, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 94, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->min(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 94, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":93
 * 
 *     def min(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().min(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":95
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def mid(self, index):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 95, __pyx_L1_error)

  /* "include/generated/Axis.pyx":92
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def min(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)
 */

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

/* "include/generated/Axis.pyx":97
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def mid(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_19mid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_18mid, "Axis.mid(self, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_19mid = {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_19mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_18mid};
static PyObject *__pyx_pw_4yoda_4core_4Axis_19mid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 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, "mid") < 0)) __PYX_ERR(4, 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mid", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_18mid(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_18mid(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mid", 1);

  /* "include/generated/Axis.pyx":98
 * 
 *     def mid(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().mid(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 98, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":99
 *     def mid(self, index):
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<double>  *)NULL))) __PYX_ERR(4, 99, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 99, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->mid(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 99, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":98
 * 
 *     def mid(self, index):
 *         if self.axisT == 'd':             # <<<<<<<<<<<<<<
 *           return self.axis_d_ptr().mid(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":100
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def edge(self, index):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 100, __pyx_L1_error)

  /* "include/generated/Axis.pyx":97
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def mid(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)
 */

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

/* "include/generated/Axis.pyx":102
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def edge(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_21edge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4Axis_20edge, "Axis.edge(self, index)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_21edge = {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_21edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_20edge};
static PyObject *__pyx_pw_4yoda_4core_4Axis_21edge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 102, __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, "edge") < 0)) __PYX_ERR(4, 102, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edge", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 102, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_20edge(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_20edge(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Axis<int>  *__pyx_t_2;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::Axis<std::string>  *__pyx_t_6;
  std::string __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edge", 1);

  /* "include/generated/Axis.pyx":103
 * 
 *     def edge(self, index):
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().edge(index)
 *         if self.axisT == 's':
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 103, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":104
 *     def edge(self, index):
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)             # <<<<<<<<<<<<<<
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().edge(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_4Axis_axis_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Axis<int>  *)NULL))) __PYX_ERR(4, 104, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 104, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->edge(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 104, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":103
 * 
 *     def edge(self, index):
 *         if self.axisT == 'i':             # <<<<<<<<<<<<<<
 *           return self.axis_i_ptr().edge(index)
 *         if self.axisT == 's':
 */
  }

  /* "include/generated/Axis.pyx":105
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().edge(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->axisT, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 105, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Axis.pyx":106
 *           return self.axis_i_ptr().edge(index)
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().edge(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_4Axis_axis_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Axis<std::string>  *)NULL))) __PYX_ERR(4, 106, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 106, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->edge(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(4, 106, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/Axis.pyx":105
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 *         if self.axisT == 's':             # <<<<<<<<<<<<<<
 *           return self.axis_s_ptr().edge(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/Axis.pyx":107
 *         if self.axisT == 's':
 *           return self.axis_s_ptr().edge(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(4, 107, __pyx_L1_error)

  /* "include/generated/Axis.pyx":102
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def edge(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 */

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

/* "include/generated/Axis.pyx":110
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Axis[%s]>' % self.type()
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_4Axis_22__repr__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/generated/Axis.pyx":111
 * 
 *     def __repr__(self):
 *         return '<Axis[%s]>' % self.type()             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 111, __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_Axis_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 111, __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/generated/Axis.pyx":110
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Axis[%s]>' % self.type()
 * 
 */

  /* 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.Axis.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Axis.pyx":15
 * 
 *     cdef public:
 *       str axisT             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.Axis[double]* axis_d_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_4Axis_5axisT_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_4Axis_5axisT_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_5axisT___get__(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_4Axis_5axisT___get__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->axisT);
  __pyx_r = __pyx_v_self->axisT;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_4Axis_5axisT_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_4Axis_5axisT_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_5axisT_2__set__(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_4Axis_5axisT_2__set__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(4, 15, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->axisT);
  __Pyx_DECREF(__pyx_v_self->axisT);
  __pyx_v_self->axisT = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_4Axis_5axisT_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_4Axis_5axisT_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_5axisT_4__del__(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_4Axis_5axisT_4__del__(struct __pyx_obj_4yoda_4core_Axis *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->axisT);
  __Pyx_DECREF(__pyx_v_self->axisT);
  __pyx_v_self->axisT = ((PyObject*)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __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_4Axis_25__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_4Axis_24__reduce_cython__, "Axis.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_25__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_25__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_24__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_4Axis_25__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4Axis_24__reduce_cython__(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_4Axis_24__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Axis *__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__", 1);

  /* "(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(1, 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.Axis.__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_4Axis_27__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_4Axis_26__setstate_cython__, "Axis.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_4Axis_27__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_27__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_26__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_4Axis_27__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Axis.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_4Axis_26__setstate_cython__(((struct __pyx_obj_4yoda_4core_Axis *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4Axis_26__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Axis *__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__", 1);

  /* "(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(1, 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.Axis.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":14
 *         """A bin-content wrapper in 1D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 14, __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, "__init__") < 0)) __PYX_ERR(5, 14, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 14, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper___init__(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Bin1D.pyx":15
 * 
 *         def __init__(self):
 *             self._index   = None             # <<<<<<<<<<<<<<
 *             self._indices = None
 *             self._binning = None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, Py_None) < 0) __PYX_ERR(5, 15, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":16
 *         def __init__(self):
 *             self._index   = None
 *             self._indices = None             # <<<<<<<<<<<<<<
 *             self._binning = None
 *             self._masked  = False
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, Py_None) < 0) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":17
 *             self._index   = None
 *             self._indices = None
 *             self._binning = None             # <<<<<<<<<<<<<<
 *             self._masked  = False
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, Py_None) < 0) __PYX_ERR(5, 17, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":18
 *             self._indices = None
 *             self._binning = None
 *             self._masked  = False             # <<<<<<<<<<<<<<
 * 
 *         def setBinning(self, binning):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, Py_False) < 0) __PYX_ERR(5, 18, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":14
 *         """A bin-content wrapper in 1D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

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

/* "include/generated/Bin1D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_3setBinning(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_3setBinning = {"setBinning", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_3setBinning, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_3setBinning(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_binning = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setBinning (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binning_2,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 20, __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_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, 1); __PYX_ERR(5, 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, "setBinning") < 0)) __PYX_ERR(5, 20, __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_self = values[0];
    __pyx_v_binning = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 20, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.setBinning", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_2setBinning(__pyx_self, __pyx_v_self, __pyx_v_binning);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setBinning", 1);

  /* "include/generated/Bin1D.pyx":21
 * 
 *         def setBinning(self, binning):
 *             self._binning = binning             # <<<<<<<<<<<<<<
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(5, 21, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

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

/* "include/generated/Bin1D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_5setIndices(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_5setIndices = {"setIndices", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_5setIndices, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_5setIndices(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setIndices (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_isMasked,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 23, __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_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 1); __PYX_ERR(5, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 2); __PYX_ERR(5, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 3); __PYX_ERR(5, 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, "setIndices") < 0)) __PYX_ERR(5, 23, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_isMasked = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, __pyx_nargs); __PYX_ERR(5, 23, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.setIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_4setIndices(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked) {
  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("setIndices", 1);

  /* "include/generated/Bin1D.pyx":24
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(5, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":25
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(5, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":26
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(5, 26, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin1D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_7attach(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_7attach = {"attach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_7attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_7attach(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_binning = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("attach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_binning_2,&__pyx_n_s_isMasked,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
    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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 28, __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_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 1); __PYX_ERR(5, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 2); __PYX_ERR(5, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 3); __PYX_ERR(5, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 28, __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, "attach") < 0)) __PYX_ERR(5, 28, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_binning = values[3];
    __pyx_v_isMasked = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, __pyx_nargs); __PYX_ERR(5, 28, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_6attach(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_binning, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked) {
  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("attach", 1);

  /* "include/generated/Bin1D.pyx":29
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._binning = binning
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(5, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":30
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._binning = binning
 *             self._masked  = isMasked
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(5, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":31
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._binning = binning             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(5, 31, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":32
 *             self._indices = list(indexArr)
 *             self._binning = binning
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def index(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(5, 32, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin1D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_9index(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_9index = {"index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_9index, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_9index(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("index (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 34, __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, "index") < 0)) __PYX_ERR(5, 34, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 34, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_8index(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_8index(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("index", 1);

  /* "include/generated/Bin1D.pyx":35
 * 
 *         def index(self):
 *             return self._index             # <<<<<<<<<<<<<<
 * 
 *         def isMasked(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

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

/* "include/generated/Bin1D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_11isMasked(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_11isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_11isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_11isMasked(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 37, __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, "isMasked") < 0)) __PYX_ERR(5, 37, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 37, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_10isMasked(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_10isMasked(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("isMasked", 1);

  /* "include/generated/Bin1D.pyx":38
 * 
 *         def isMasked(self):
 *             return self._masked             # <<<<<<<<<<<<<<
 * 
 *         def dVol(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_masked); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

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

/* "include/generated/Bin1D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_13dVol(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_13dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_13dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_13dVol(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 40, __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, "dVol") < 0)) __PYX_ERR(5, 40, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 40, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_12dVol(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_vol = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/Bin1D.pyx":41
 * 
 *         def dVol(self):
 *             vol = 1.0             # <<<<<<<<<<<<<<
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 */
  __Pyx_INCREF(__pyx_float_1_0);
  __pyx_v_vol = __pyx_float_1_0;

  /* "include/generated/Bin1D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 42, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(5, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(5, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      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, 42, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/generated/Bin1D.pyx":43
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)             # <<<<<<<<<<<<<<
 *             return vol
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_dim, __pyx_v_idx};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 43, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_7 = PyNumber_InPlaceMultiply(__pyx_v_vol, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_vol, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "include/generated/Bin1D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":44
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 *             return vol             # <<<<<<<<<<<<<<
 * 
 *         def width(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vol);
  __pyx_r = __pyx_v_vol;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

  /* 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.Bin1D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vol);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_15width(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_15width = {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_15width, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_15width(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("width (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 46, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 46, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, 1); __PYX_ERR(5, 46, __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, "width") < 0)) __PYX_ERR(5, 46, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 46, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_14width(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("width", 1);

  /* "include/generated/Bin1D.pyx":47
 * 
 *         def width(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 47, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 47, __pyx_L1_error)
  #endif

  /* "include/generated/Bin1D.pyx":48
 *         def width(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin1D.pyx":49
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0             # <<<<<<<<<<<<<<
 * 
 *         def max(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(__pyx_float_1_0);
    __pyx_t_3 = __pyx_float_1_0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_17max(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_17max(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 51, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 51, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, 1); __PYX_ERR(5, 51, __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, "max") < 0)) __PYX_ERR(5, 51, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 51, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_16max(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("max", 1);

  /* "include/generated/Bin1D.pyx":52
 * 
 *         def max(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 52, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 52, __pyx_L1_error)
  #endif

  /* "include/generated/Bin1D.pyx":53
 *         def max(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin1D.pyx":54
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def min(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_19min(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_19min(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 56, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 56, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, 1); __PYX_ERR(5, 56, __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, "min") < 0)) __PYX_ERR(5, 56, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_18min(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("min", 1);

  /* "include/generated/Bin1D.pyx":57
 * 
 *         def min(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 57, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 57, __pyx_L1_error)
  #endif

  /* "include/generated/Bin1D.pyx":58
 *         def min(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin1D.pyx":59
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def mid(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_min); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_21mid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_21mid = {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_21mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_21mid(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 61, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, 1); __PYX_ERR(5, 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, "mid") < 0)) __PYX_ERR(5, 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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 61, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_20mid(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("mid", 1);

  /* "include/generated/Bin1D.pyx":62
 * 
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 62, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 62, __pyx_L1_error)
  #endif

  /* "include/generated/Bin1D.pyx":63
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin1D.pyx":64
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def edge(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_mid); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_23edge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_23edge = {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_23edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_23edge(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 66, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 66, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, 1); __PYX_ERR(5, 66, __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, "edge") < 0)) __PYX_ERR(5, 66, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_22edge(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("edge", 1);

  /* "include/generated/Bin1D.pyx":67
 * 
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 67, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 67, __pyx_L1_error)
  #endif

  /* "include/generated/Bin1D.pyx":68
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin1D.pyx":69
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def dLen(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dLen(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_25dLen(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_25dLen = {"dLen", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_25dLen, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_25dLen(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dLen (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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, "dLen") < 0)) __PYX_ERR(5, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dLen", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 71, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.dLen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_24dLen(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_24dLen(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dLen", 1);

  /* "include/generated/Bin1D.pyx":72
 * 
 *         def dLen(self):
 *             return self.dVol()             # <<<<<<<<<<<<<<
 * 
 *         def xWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dVol); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 72, __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/generated/Bin1D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dLen(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

  /* 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.Bin1D.BinWrapper.dLen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_27xWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_27xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_27xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_27xWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 74, __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, "xWidth") < 0)) __PYX_ERR(5, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_26xWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_26xWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 1);

  /* "include/generated/Bin1D.pyx":75
 * 
 *         def xWidth(self):
 *             return self.width(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 75, __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/generated/Bin1D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(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.Bin1D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_29xMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_29xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_29xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_29xMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 77, __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, "xMax") < 0)) __PYX_ERR(5, 77, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 77, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_28xMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_28xMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Bin1D.pyx":78
 * 
 *         def xMax(self):
 *             return self.max(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 78, __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/generated/Bin1D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(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.Bin1D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_31xMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_31xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_31xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_31xMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 80, __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, "xMin") < 0)) __PYX_ERR(5, 80, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 80, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_30xMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_30xMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Bin1D.pyx":81
 * 
 *         def xMin(self):
 *             return self.min(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 81, __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/generated/Bin1D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(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.Bin1D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_33xMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_33xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_33xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_33xMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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, "xMid") < 0)) __PYX_ERR(5, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_32xMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_32xMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 1);

  /* "include/generated/Bin1D.pyx":84
 * 
 *         def xMid(self):
 *             return self.mid(0)             # <<<<<<<<<<<<<<
 * 
 *         def xEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 84, __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/generated/Bin1D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(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.Bin1D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_35xEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_35xEdge = {"xEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_35xEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin1D_10BinWrapper_35xEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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, "xEdge") < 0)) __PYX_ERR(5, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin1D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_34xEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin1D_10BinWrapper_34xEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdge", 1);

  /* "include/generated/Bin1D.pyx":87
 * 
 *         def xEdge(self):
 *             return self.edge(0)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 87, __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/generated/Bin1D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(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.Bin1D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D.pyx":10
 * cimport util
 * 
 * cdef Bin1D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 1D."""
 */

static PyObject *__pyx_f_4yoda_4core_Bin1D(PyObject *__pyx_v_superclass) {
  PyObject *__pyx_v_BinWrapper = 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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bin1D", 1);

  /* "include/generated/Bin1D.pyx":11
 * 
 * cdef Bin1D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 1D."""
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_superclass);
  __Pyx_GIVEREF(__pyx_v_superclass);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_superclass)) __PYX_ERR(5, 11, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BinWrapper, __pyx_n_s_Bin1D_locals_BinWrapper, (PyObject *) NULL, __pyx_n_s_yoda_core, __pyx_kp_s_A_bin_content_wrapper_in_1D); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2 != __pyx_t_1) {
    if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_1) < 0))) __PYX_ERR(5, 11, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":14
 *         """A bin-content wrapper in 1D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_1__init__, 0, __pyx_n_s_Bin1D_locals_BinWrapper___init, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(5, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_3setBinning, 0, __pyx_n_s_Bin1D_locals_BinWrapper_setBinni, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setBinning, __pyx_t_1) < 0) __PYX_ERR(5, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_5setIndices, 0, __pyx_n_s_Bin1D_locals_BinWrapper_setIndic, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setIndices, __pyx_t_1) < 0) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_7attach, 0, __pyx_n_s_Bin1D_locals_BinWrapper_attach, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__21);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_attach, __pyx_t_1) < 0) __PYX_ERR(5, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_9index, 0, __pyx_n_s_Bin1D_locals_BinWrapper_index, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_index, __pyx_t_1) < 0) __PYX_ERR(5, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_11isMasked, 0, __pyx_n_s_Bin1D_locals_BinWrapper_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_isMasked, __pyx_t_1) < 0) __PYX_ERR(5, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_13dVol, 0, __pyx_n_s_Bin1D_locals_BinWrapper_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dVol, __pyx_t_1) < 0) __PYX_ERR(5, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_15width, 0, __pyx_n_s_Bin1D_locals_BinWrapper_width, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_width, __pyx_t_1) < 0) __PYX_ERR(5, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_17max, 0, __pyx_n_s_Bin1D_locals_BinWrapper_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_max, __pyx_t_1) < 0) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_19min, 0, __pyx_n_s_Bin1D_locals_BinWrapper_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_min, __pyx_t_1) < 0) __PYX_ERR(5, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_21mid, 0, __pyx_n_s_Bin1D_locals_BinWrapper_mid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mid, __pyx_t_1) < 0) __PYX_ERR(5, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_23edge, 0, __pyx_n_s_Bin1D_locals_BinWrapper_edge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_edge, __pyx_t_1) < 0) __PYX_ERR(5, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dLen(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_25dLen, 0, __pyx_n_s_Bin1D_locals_BinWrapper_dLen, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dLen, __pyx_t_1) < 0) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_27xWidth, 0, __pyx_n_s_Bin1D_locals_BinWrapper_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xWidth, __pyx_t_1) < 0) __PYX_ERR(5, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_29xMax, 0, __pyx_n_s_Bin1D_locals_BinWrapper_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMax, __pyx_t_1) < 0) __PYX_ERR(5, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_31xMin, 0, __pyx_n_s_Bin1D_locals_BinWrapper_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMin, __pyx_t_1) < 0) __PYX_ERR(5, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_33xMid, 0, __pyx_n_s_Bin1D_locals_BinWrapper_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMid, __pyx_t_1) < 0) __PYX_ERR(5, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin1D_10BinWrapper_35xEdge, 0, __pyx_n_s_Bin1D_locals_BinWrapper_xEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xEdge, __pyx_t_1) < 0) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin1D.pyx":11
 * 
 * cdef Bin1D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 1D."""
 * 
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BinWrapper, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_BinWrapper = __pyx_t_1;
  __pyx_t_1 = 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;

  /* "include/generated/Bin1D.pyx":90
 * 
 * 
 *     return BinWrapper             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_BinWrapper);
  __pyx_r = __pyx_v_BinWrapper;
  goto __pyx_L0;

  /* "include/generated/Bin1D.pyx":10
 * cimport util
 * 
 * cdef Bin1D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 1D."""
 */

  /* 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_AddTraceback("yoda.core.Bin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_BinWrapper);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":14
 *         """A bin-content wrapper in 2D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 14, __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, "__init__") < 0)) __PYX_ERR(15, 14, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 14, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper___init__(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Bin2D.pyx":15
 * 
 *         def __init__(self):
 *             self._index   = None             # <<<<<<<<<<<<<<
 *             self._indices = None
 *             self._binning = None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, Py_None) < 0) __PYX_ERR(15, 15, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":16
 *         def __init__(self):
 *             self._index   = None
 *             self._indices = None             # <<<<<<<<<<<<<<
 *             self._binning = None
 *             self._masked  = False
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, Py_None) < 0) __PYX_ERR(15, 16, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":17
 *             self._index   = None
 *             self._indices = None
 *             self._binning = None             # <<<<<<<<<<<<<<
 *             self._masked  = False
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, Py_None) < 0) __PYX_ERR(15, 17, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":18
 *             self._indices = None
 *             self._binning = None
 *             self._masked  = False             # <<<<<<<<<<<<<<
 * 
 *         def setBinning(self, binning):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, Py_False) < 0) __PYX_ERR(15, 18, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":14
 *         """A bin-content wrapper in 2D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

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

/* "include/generated/Bin2D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_3setBinning(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_3setBinning = {"setBinning", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_3setBinning, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_3setBinning(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_binning = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setBinning (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binning_2,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 20, __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_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, 1); __PYX_ERR(15, 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, "setBinning") < 0)) __PYX_ERR(15, 20, __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_self = values[0];
    __pyx_v_binning = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 20, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.setBinning", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_2setBinning(__pyx_self, __pyx_v_self, __pyx_v_binning);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setBinning", 1);

  /* "include/generated/Bin2D.pyx":21
 * 
 *         def setBinning(self, binning):
 *             self._binning = binning             # <<<<<<<<<<<<<<
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(15, 21, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

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

/* "include/generated/Bin2D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_5setIndices(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_5setIndices = {"setIndices", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_5setIndices, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_5setIndices(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setIndices (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_isMasked,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 1); __PYX_ERR(15, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 2); __PYX_ERR(15, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 3); __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, "setIndices") < 0)) __PYX_ERR(15, 23, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_isMasked = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, __pyx_nargs); __PYX_ERR(15, 23, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.setIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_4setIndices(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked) {
  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("setIndices", 1);

  /* "include/generated/Bin2D.pyx":24
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(15, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":25
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(15, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":26
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(15, 26, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin2D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_7attach(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_7attach = {"attach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_7attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_7attach(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_binning = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("attach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_binning_2,&__pyx_n_s_isMasked,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
    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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 28, __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_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 1); __PYX_ERR(15, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 2); __PYX_ERR(15, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 3); __PYX_ERR(15, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 28, __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, "attach") < 0)) __PYX_ERR(15, 28, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_binning = values[3];
    __pyx_v_isMasked = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, __pyx_nargs); __PYX_ERR(15, 28, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_6attach(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_binning, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked) {
  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("attach", 1);

  /* "include/generated/Bin2D.pyx":29
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._binning = binning
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(15, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":30
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._binning = binning
 *             self._masked  = isMasked
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(15, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":31
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._binning = binning             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(15, 31, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":32
 *             self._indices = list(indexArr)
 *             self._binning = binning
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def index(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(15, 32, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin2D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_9index(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_9index = {"index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_9index, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_9index(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("index (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 34, __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, "index") < 0)) __PYX_ERR(15, 34, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 34, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_8index(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_8index(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("index", 1);

  /* "include/generated/Bin2D.pyx":35
 * 
 *         def index(self):
 *             return self._index             # <<<<<<<<<<<<<<
 * 
 *         def isMasked(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

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

/* "include/generated/Bin2D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_11isMasked(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_11isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_11isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_11isMasked(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 37, __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, "isMasked") < 0)) __PYX_ERR(15, 37, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 37, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_10isMasked(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_10isMasked(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("isMasked", 1);

  /* "include/generated/Bin2D.pyx":38
 * 
 *         def isMasked(self):
 *             return self._masked             # <<<<<<<<<<<<<<
 * 
 *         def dVol(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_masked); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

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

/* "include/generated/Bin2D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_13dVol(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_13dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_13dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_13dVol(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 40, __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, "dVol") < 0)) __PYX_ERR(15, 40, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 40, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_12dVol(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_vol = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/Bin2D.pyx":41
 * 
 *         def dVol(self):
 *             vol = 1.0             # <<<<<<<<<<<<<<
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 */
  __Pyx_INCREF(__pyx_float_1_0);
  __pyx_v_vol = __pyx_float_1_0;

  /* "include/generated/Bin2D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 42, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(15, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(15, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(15, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(15, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      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(15, 42, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/generated/Bin2D.pyx":43
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)             # <<<<<<<<<<<<<<
 *             return vol
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_dim, __pyx_v_idx};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 43, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_7 = PyNumber_InPlaceMultiply(__pyx_v_vol, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_vol, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "include/generated/Bin2D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":44
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 *             return vol             # <<<<<<<<<<<<<<
 * 
 *         def width(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vol);
  __pyx_r = __pyx_v_vol;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

  /* 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.Bin2D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vol);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_15width(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_15width = {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_15width, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_15width(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("width (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 46, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 46, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, 1); __PYX_ERR(15, 46, __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, "width") < 0)) __PYX_ERR(15, 46, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 46, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_14width(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("width", 1);

  /* "include/generated/Bin2D.pyx":47
 * 
 *         def width(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(15, 47, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(15, 47, __pyx_L1_error)
  #endif

  /* "include/generated/Bin2D.pyx":48
 *         def width(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin2D.pyx":49
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0             # <<<<<<<<<<<<<<
 * 
 *         def max(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(__pyx_float_1_0);
    __pyx_t_3 = __pyx_float_1_0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_17max(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_17max(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 51, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 51, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, 1); __PYX_ERR(15, 51, __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, "max") < 0)) __PYX_ERR(15, 51, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 51, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_16max(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("max", 1);

  /* "include/generated/Bin2D.pyx":52
 * 
 *         def max(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(15, 52, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(15, 52, __pyx_L1_error)
  #endif

  /* "include/generated/Bin2D.pyx":53
 *         def max(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin2D.pyx":54
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def min(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_19min(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_19min(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 56, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 56, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, 1); __PYX_ERR(15, 56, __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, "min") < 0)) __PYX_ERR(15, 56, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_18min(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("min", 1);

  /* "include/generated/Bin2D.pyx":57
 * 
 *         def min(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(15, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(15, 57, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(15, 57, __pyx_L1_error)
  #endif

  /* "include/generated/Bin2D.pyx":58
 *         def min(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin2D.pyx":59
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def mid(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_min); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_21mid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_21mid = {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_21mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_21mid(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 61, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, 1); __PYX_ERR(15, 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, "mid") < 0)) __PYX_ERR(15, 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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 61, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_20mid(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("mid", 1);

  /* "include/generated/Bin2D.pyx":62
 * 
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(15, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(15, 62, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(15, 62, __pyx_L1_error)
  #endif

  /* "include/generated/Bin2D.pyx":63
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin2D.pyx":64
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def edge(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_mid); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_23edge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_23edge = {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_23edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_23edge(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 66, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 66, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, 1); __PYX_ERR(15, 66, __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, "edge") < 0)) __PYX_ERR(15, 66, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_22edge(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("edge", 1);

  /* "include/generated/Bin2D.pyx":67
 * 
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(15, 67, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(15, 67, __pyx_L1_error)
  #endif

  /* "include/generated/Bin2D.pyx":68
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin2D.pyx":69
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def dArea(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(15, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_25dArea(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_25dArea = {"dArea", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_25dArea, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_25dArea(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dArea (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "dArea") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dArea", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 71, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.dArea", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_24dArea(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_24dArea(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dArea", 1);

  /* "include/generated/Bin2D.pyx":72
 * 
 *         def dArea(self):
 *             return self.dVol()             # <<<<<<<<<<<<<<
 * 
 *         def xWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dVol); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 72, __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/generated/Bin2D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

  /* 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.Bin2D.BinWrapper.dArea", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_27xWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_27xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_27xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_27xWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 74, __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, "xWidth") < 0)) __PYX_ERR(15, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_26xWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_26xWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 1);

  /* "include/generated/Bin2D.pyx":75
 * 
 *         def xWidth(self):
 *             return self.width(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(15, 75, __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/generated/Bin2D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(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.Bin2D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_29xMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_29xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_29xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_29xMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 77, __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, "xMax") < 0)) __PYX_ERR(15, 77, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 77, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_28xMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_28xMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Bin2D.pyx":78
 * 
 *         def xMax(self):
 *             return self.max(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(15, 78, __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/generated/Bin2D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(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.Bin2D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_31xMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_31xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_31xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_31xMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 80, __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, "xMin") < 0)) __PYX_ERR(15, 80, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 80, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_30xMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_30xMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Bin2D.pyx":81
 * 
 *         def xMin(self):
 *             return self.min(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(15, 81, __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/generated/Bin2D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(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.Bin2D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_33xMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_33xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_33xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_33xMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "xMid") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_32xMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_32xMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 1);

  /* "include/generated/Bin2D.pyx":84
 * 
 *         def xMid(self):
 *             return self.mid(0)             # <<<<<<<<<<<<<<
 * 
 *         def xEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(15, 84, __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/generated/Bin2D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(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.Bin2D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_35xEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_35xEdge = {"xEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_35xEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_35xEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "xEdge") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_34xEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_34xEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdge", 1);

  /* "include/generated/Bin2D.pyx":87
 * 
 *         def xEdge(self):
 *             return self.edge(0)             # <<<<<<<<<<<<<<
 * 
 *         def dArea(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(15, 87, __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/generated/Bin2D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(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.Bin2D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":89
 *             return self.edge(0)
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_37dArea(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_37dArea = {"dArea", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_37dArea, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_37dArea(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dArea (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 89, __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, "dArea") < 0)) __PYX_ERR(15, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dArea", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.dArea", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_36dArea(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_36dArea(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dArea", 1);

  /* "include/generated/Bin2D.pyx":90
 * 
 *         def dArea(self):
 *             return self.dVol()             # <<<<<<<<<<<<<<
 * 
 *         def yWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dVol); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 90, __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/generated/Bin2D.pyx":89
 *             return self.edge(0)
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */

  /* 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.Bin2D.BinWrapper.dArea", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":92
 *             return self.dVol()
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_39yWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_39yWidth = {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_39yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_39yWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 92, __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, "yWidth") < 0)) __PYX_ERR(15, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_38yWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_38yWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidth", 1);

  /* "include/generated/Bin2D.pyx":93
 * 
 *         def yWidth(self):
 *             return self.width(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(15, 93, __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/generated/Bin2D.pyx":92
 *             return self.dVol()
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(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.Bin2D.BinWrapper.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":95
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_41yMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_41yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_41yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_41yMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "yMax") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_40yMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_40yMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/Bin2D.pyx":96
 * 
 *         def yMax(self):
 *             return self.max(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(15, 96, __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/generated/Bin2D.pyx":95
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(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.Bin2D.BinWrapper.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":98
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_43yMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_43yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_43yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_43yMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "yMin") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 98, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_42yMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_42yMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/Bin2D.pyx":99
 * 
 *         def yMin(self):
 *             return self.min(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(15, 99, __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/generated/Bin2D.pyx":98
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(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.Bin2D.BinWrapper.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":101
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_45yMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_45yMid = {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_45yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_45yMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 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, "yMid") < 0)) __PYX_ERR(15, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_44yMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_44yMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMid", 1);

  /* "include/generated/Bin2D.pyx":102
 * 
 *         def yMid(self):
 *             return self.mid(1)             # <<<<<<<<<<<<<<
 * 
 *         def yEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(15, 102, __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/generated/Bin2D.pyx":101
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(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.Bin2D.BinWrapper.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":104
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_47yEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_47yEdge = {"yEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_47yEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin2D_10BinWrapper_47yEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 104, __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, "yEdge") < 0)) __PYX_ERR(15, 104, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin2D.BinWrapper.yEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_46yEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin2D_10BinWrapper_46yEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdge", 1);

  /* "include/generated/Bin2D.pyx":105
 * 
 *         def yEdge(self):
 *             return self.edge(1)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(15, 105, __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/generated/Bin2D.pyx":104
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(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.Bin2D.BinWrapper.yEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D.pyx":10
 * cimport util
 * 
 * cdef Bin2D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 2D."""
 */

static PyObject *__pyx_f_4yoda_4core_Bin2D(PyObject *__pyx_v_superclass) {
  PyObject *__pyx_v_BinWrapper = 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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bin2D", 1);

  /* "include/generated/Bin2D.pyx":11
 * 
 * cdef Bin2D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 2D."""
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_superclass);
  __Pyx_GIVEREF(__pyx_v_superclass);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_superclass)) __PYX_ERR(15, 11, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BinWrapper, __pyx_n_s_Bin2D_locals_BinWrapper, (PyObject *) NULL, __pyx_n_s_yoda_core, __pyx_kp_s_A_bin_content_wrapper_in_2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2 != __pyx_t_1) {
    if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_1) < 0))) __PYX_ERR(15, 11, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":14
 *         """A bin-content wrapper in 2D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_1__init__, 0, __pyx_n_s_Bin2D_locals_BinWrapper___init, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(15, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_3setBinning, 0, __pyx_n_s_Bin2D_locals_BinWrapper_setBinni, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setBinning, __pyx_t_1) < 0) __PYX_ERR(15, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_5setIndices, 0, __pyx_n_s_Bin2D_locals_BinWrapper_setIndic, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setIndices, __pyx_t_1) < 0) __PYX_ERR(15, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_7attach, 0, __pyx_n_s_Bin2D_locals_BinWrapper_attach, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__21);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_attach, __pyx_t_1) < 0) __PYX_ERR(15, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_9index, 0, __pyx_n_s_Bin2D_locals_BinWrapper_index, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_index, __pyx_t_1) < 0) __PYX_ERR(15, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_11isMasked, 0, __pyx_n_s_Bin2D_locals_BinWrapper_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_isMasked, __pyx_t_1) < 0) __PYX_ERR(15, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_13dVol, 0, __pyx_n_s_Bin2D_locals_BinWrapper_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dVol, __pyx_t_1) < 0) __PYX_ERR(15, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_15width, 0, __pyx_n_s_Bin2D_locals_BinWrapper_width, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_width, __pyx_t_1) < 0) __PYX_ERR(15, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_17max, 0, __pyx_n_s_Bin2D_locals_BinWrapper_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_max, __pyx_t_1) < 0) __PYX_ERR(15, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_19min, 0, __pyx_n_s_Bin2D_locals_BinWrapper_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_min, __pyx_t_1) < 0) __PYX_ERR(15, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_21mid, 0, __pyx_n_s_Bin2D_locals_BinWrapper_mid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mid, __pyx_t_1) < 0) __PYX_ERR(15, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_23edge, 0, __pyx_n_s_Bin2D_locals_BinWrapper_edge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_edge, __pyx_t_1) < 0) __PYX_ERR(15, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_25dArea, 0, __pyx_n_s_Bin2D_locals_BinWrapper_dArea, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dArea, __pyx_t_1) < 0) __PYX_ERR(15, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_27xWidth, 0, __pyx_n_s_Bin2D_locals_BinWrapper_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xWidth, __pyx_t_1) < 0) __PYX_ERR(15, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_29xMax, 0, __pyx_n_s_Bin2D_locals_BinWrapper_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMax, __pyx_t_1) < 0) __PYX_ERR(15, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_31xMin, 0, __pyx_n_s_Bin2D_locals_BinWrapper_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMin, __pyx_t_1) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_33xMid, 0, __pyx_n_s_Bin2D_locals_BinWrapper_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMid, __pyx_t_1) < 0) __PYX_ERR(15, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_35xEdge, 0, __pyx_n_s_Bin2D_locals_BinWrapper_xEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xEdge, __pyx_t_1) < 0) __PYX_ERR(15, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":89
 *             return self.edge(0)
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_37dArea, 0, __pyx_n_s_Bin2D_locals_BinWrapper_dArea, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dArea, __pyx_t_1) < 0) __PYX_ERR(15, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":92
 *             return self.dVol()
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_39yWidth, 0, __pyx_n_s_Bin2D_locals_BinWrapper_yWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yWidth, __pyx_t_1) < 0) __PYX_ERR(15, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":95
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_41yMax, 0, __pyx_n_s_Bin2D_locals_BinWrapper_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMax, __pyx_t_1) < 0) __PYX_ERR(15, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":98
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_43yMin, 0, __pyx_n_s_Bin2D_locals_BinWrapper_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMin, __pyx_t_1) < 0) __PYX_ERR(15, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":101
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_45yMid, 0, __pyx_n_s_Bin2D_locals_BinWrapper_yMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMid, __pyx_t_1) < 0) __PYX_ERR(15, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":104
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin2D_10BinWrapper_47yEdge, 0, __pyx_n_s_Bin2D_locals_BinWrapper_yEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yEdge, __pyx_t_1) < 0) __PYX_ERR(15, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin2D.pyx":11
 * 
 * cdef Bin2D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 2D."""
 * 
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BinWrapper, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_BinWrapper = __pyx_t_1;
  __pyx_t_1 = 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;

  /* "include/generated/Bin2D.pyx":108
 * 
 * 
 *     return BinWrapper             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_BinWrapper);
  __pyx_r = __pyx_v_BinWrapper;
  goto __pyx_L0;

  /* "include/generated/Bin2D.pyx":10
 * cimport util
 * 
 * cdef Bin2D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 2D."""
 */

  /* 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_AddTraceback("yoda.core.Bin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_BinWrapper);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":14
 *         """A bin-content wrapper in 3D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_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;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 14, __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, "__init__") < 0)) __PYX_ERR(16, 14, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 14, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper___init__(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Bin3D.pyx":15
 * 
 *         def __init__(self):
 *             self._index   = None             # <<<<<<<<<<<<<<
 *             self._indices = None
 *             self._binning = None
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, Py_None) < 0) __PYX_ERR(16, 15, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":16
 *         def __init__(self):
 *             self._index   = None
 *             self._indices = None             # <<<<<<<<<<<<<<
 *             self._binning = None
 *             self._masked  = False
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, Py_None) < 0) __PYX_ERR(16, 16, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":17
 *             self._index   = None
 *             self._indices = None
 *             self._binning = None             # <<<<<<<<<<<<<<
 *             self._masked  = False
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, Py_None) < 0) __PYX_ERR(16, 17, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":18
 *             self._indices = None
 *             self._binning = None
 *             self._masked  = False             # <<<<<<<<<<<<<<
 * 
 *         def setBinning(self, binning):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, Py_False) < 0) __PYX_ERR(16, 18, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":14
 *         """A bin-content wrapper in 3D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */

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

/* "include/generated/Bin3D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_3setBinning(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_3setBinning = {"setBinning", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_3setBinning, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_3setBinning(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_binning = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setBinning (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binning_2,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 20, __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_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, 1); __PYX_ERR(16, 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, "setBinning") < 0)) __PYX_ERR(16, 20, __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_self = values[0];
    __pyx_v_binning = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setBinning", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 20, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.setBinning", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_2setBinning(__pyx_self, __pyx_v_self, __pyx_v_binning);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_2setBinning(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binning) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setBinning", 1);

  /* "include/generated/Bin3D.pyx":21
 * 
 *         def setBinning(self, binning):
 *             self._binning = binning             # <<<<<<<<<<<<<<
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(16, 21, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */

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

/* "include/generated/Bin3D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_5setIndices(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_5setIndices = {"setIndices", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_5setIndices, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_5setIndices(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setIndices (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_isMasked,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 1); __PYX_ERR(16, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 2); __PYX_ERR(16, 23, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, 3); __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, "setIndices") < 0)) __PYX_ERR(16, 23, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_isMasked = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setIndices", 1, 4, 4, __pyx_nargs); __PYX_ERR(16, 23, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.setIndices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_4setIndices(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_4setIndices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_isMasked) {
  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("setIndices", 1);

  /* "include/generated/Bin3D.pyx":24
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(16, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":25
 *         def setIndices(self, binIndex, indexArr, isMasked):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(16, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":26
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(16, 26, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin3D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_7attach(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_7attach = {"attach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_7attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_7attach(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_binIndex = 0;
  PyObject *__pyx_v_indexArr = 0;
  PyObject *__pyx_v_binning = 0;
  PyObject *__pyx_v_isMasked = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("attach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_binIndex,&__pyx_n_s_indexArr,&__pyx_n_s_binning_2,&__pyx_n_s_isMasked,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
    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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __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_binIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 1); __PYX_ERR(16, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_indexArr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 2); __PYX_ERR(16, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binning_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, 3); __PYX_ERR(16, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isMasked);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __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, "attach") < 0)) __PYX_ERR(16, 28, __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_self = values[0];
    __pyx_v_binIndex = values[1];
    __pyx_v_indexArr = values[2];
    __pyx_v_binning = values[3];
    __pyx_v_isMasked = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("attach", 0, 4, 5, __pyx_nargs); __PYX_ERR(16, 28, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_6attach(__pyx_self, __pyx_v_self, __pyx_v_binIndex, __pyx_v_indexArr, __pyx_v_binning, __pyx_v_isMasked);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_6attach(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_binIndex, PyObject *__pyx_v_indexArr, PyObject *__pyx_v_binning, PyObject *__pyx_v_isMasked) {
  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("attach", 1);

  /* "include/generated/Bin3D.pyx":29
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)             # <<<<<<<<<<<<<<
 *             self._indices = list(indexArr)
 *             self._binning = binning
 */
  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_binIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_2, __pyx_t_1) < 0) __PYX_ERR(16, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":30
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)             # <<<<<<<<<<<<<<
 *             self._binning = binning
 *             self._masked  = isMasked
 */
  __pyx_t_1 = PySequence_List(__pyx_v_indexArr); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_indices, __pyx_t_1) < 0) __PYX_ERR(16, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":31
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 *             self._binning = binning             # <<<<<<<<<<<<<<
 *             self._masked  = isMasked
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_binning, __pyx_v_binning) < 0) __PYX_ERR(16, 31, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":32
 *             self._indices = list(indexArr)
 *             self._binning = binning
 *             self._masked  = isMasked             # <<<<<<<<<<<<<<
 * 
 *         def index(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_masked, __pyx_v_isMasked) < 0) __PYX_ERR(16, 32, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */

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

/* "include/generated/Bin3D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_9index(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_9index = {"index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_9index, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_9index(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("index (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 34, __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, "index") < 0)) __PYX_ERR(16, 34, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 34, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_8index(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_8index(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("index", 1);

  /* "include/generated/Bin3D.pyx":35
 * 
 *         def index(self):
 *             return self._index             # <<<<<<<<<<<<<<
 * 
 *         def isMasked(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */

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

/* "include/generated/Bin3D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_11isMasked(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_11isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_11isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_11isMasked(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 37, __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, "isMasked") < 0)) __PYX_ERR(16, 37, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 37, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_10isMasked(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_10isMasked(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("isMasked", 1);

  /* "include/generated/Bin3D.pyx":38
 * 
 *         def isMasked(self):
 *             return self._masked             # <<<<<<<<<<<<<<
 * 
 *         def dVol(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_masked); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */

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

/* "include/generated/Bin3D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_13dVol(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_13dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_13dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_13dVol(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 40, __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, "dVol") < 0)) __PYX_ERR(16, 40, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 40, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_12dVol(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_12dVol(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_vol = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/Bin3D.pyx":41
 * 
 *         def dVol(self):
 *             vol = 1.0             # <<<<<<<<<<<<<<
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 */
  __Pyx_INCREF(__pyx_float_1_0);
  __pyx_v_vol = __pyx_float_1_0;

  /* "include/generated/Bin3D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 42, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(16, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(16, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(16, 42, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(16, 42, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      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(16, 42, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
    __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/generated/Bin3D.pyx":43
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)             # <<<<<<<<<<<<<<
 *             return vol
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_dim, __pyx_v_idx};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 43, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_7 = PyNumber_InPlaceMultiply(__pyx_v_vol, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_vol, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "include/generated/Bin3D.pyx":42
 *         def dVol(self):
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):             # <<<<<<<<<<<<<<
 *                 vol *= self._binning.width(dim, idx)
 *             return vol
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":44
 *             for dim, idx in enumerate(self._indices):
 *                 vol *= self._binning.width(dim, idx)
 *             return vol             # <<<<<<<<<<<<<<
 * 
 *         def width(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vol);
  __pyx_r = __pyx_v_vol;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */

  /* 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.Bin3D.BinWrapper.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vol);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_15width(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_15width = {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_15width, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_15width(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("width (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 46, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 46, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, 1); __PYX_ERR(16, 46, __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, "width") < 0)) __PYX_ERR(16, 46, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("width", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 46, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_14width(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_14width(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("width", 1);

  /* "include/generated/Bin3D.pyx":47
 * 
 *         def width(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(16, 47, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(16, 47, __pyx_L1_error)
  #endif

  /* "include/generated/Bin3D.pyx":48
 *         def width(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin3D.pyx":49
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0             # <<<<<<<<<<<<<<
 * 
 *         def max(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_width); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(__pyx_float_1_0);
    __pyx_t_3 = __pyx_float_1_0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.width", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_17max(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_17max(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 51, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 51, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, 1); __PYX_ERR(16, 51, __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, "max") < 0)) __PYX_ERR(16, 51, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 51, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_16max(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_16max(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("max", 1);

  /* "include/generated/Bin3D.pyx":52
 * 
 *         def max(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(16, 52, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(16, 52, __pyx_L1_error)
  #endif

  /* "include/generated/Bin3D.pyx":53
 *         def max(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin3D.pyx":54
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def min(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_19min(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_19min(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 56, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 56, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, 1); __PYX_ERR(16, 56, __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, "min") < 0)) __PYX_ERR(16, 56, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_18min(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_18min(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("min", 1);

  /* "include/generated/Bin3D.pyx":57
 * 
 *         def min(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(16, 57, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(16, 57, __pyx_L1_error)
  #endif

  /* "include/generated/Bin3D.pyx":58
 *         def min(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin3D.pyx":59
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def mid(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_min); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_21mid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_21mid = {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_21mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_21mid(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 61, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, 1); __PYX_ERR(16, 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, "mid") < 0)) __PYX_ERR(16, 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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mid", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 61, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_20mid(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_20mid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("mid", 1);

  /* "include/generated/Bin3D.pyx":62
 * 
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(16, 62, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(16, 62, __pyx_L1_error)
  #endif

  /* "include/generated/Bin3D.pyx":63
 *         def mid(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin3D.pyx":64
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def edge(self, dim):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_mid); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.mid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_23edge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_23edge = {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_23edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_23edge(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_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_dim,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_self)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 66, __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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 66, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, 1); __PYX_ERR(16, 66, __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, "edge") < 0)) __PYX_ERR(16, 66, __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_self = values[0];
    __pyx_v_dim = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edge", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_22edge(__pyx_self, __pyx_v_self, __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_22edge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_v_config = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  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("edge", 1);

  /* "include/generated/Bin3D.pyx":67
 * 
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))             # <<<<<<<<<<<<<<
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dim, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(16, 67, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(16, 67, __pyx_L1_error)
  #endif

  /* "include/generated/Bin3D.pyx":68
 *         def edge(self, dim):
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()             # <<<<<<<<<<<<<<
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_v_config = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/Bin3D.pyx":69
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None             # <<<<<<<<<<<<<<
 * 
 *         def xWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_config, __pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(16, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_binning); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_dim, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_3 = Py_None;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.edge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_config);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_25xWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_25xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_25xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_25xWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "xWidth") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 71, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_24xWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_24xWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 1);

  /* "include/generated/Bin3D.pyx":72
 * 
 *         def xWidth(self):
 *             return self.width(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(16, 72, __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/generated/Bin3D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(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.Bin3D.BinWrapper.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":74
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_27xMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_27xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_27xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_27xMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 74, __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, "xMax") < 0)) __PYX_ERR(16, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_26xMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_26xMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Bin3D.pyx":75
 * 
 *         def xMax(self):
 *             return self.max(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(16, 75, __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/generated/Bin3D.pyx":74
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(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.Bin3D.BinWrapper.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":77
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_29xMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_29xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_29xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_29xMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 77, __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, "xMin") < 0)) __PYX_ERR(16, 77, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 77, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_28xMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_28xMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Bin3D.pyx":78
 * 
 *         def xMin(self):
 *             return self.min(0)             # <<<<<<<<<<<<<<
 * 
 *         def xMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(16, 78, __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/generated/Bin3D.pyx":77
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(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.Bin3D.BinWrapper.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":80
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_31xMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_31xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_31xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_31xMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 80, __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, "xMid") < 0)) __PYX_ERR(16, 80, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 80, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_30xMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_30xMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 1);

  /* "include/generated/Bin3D.pyx":81
 * 
 *         def xMid(self):
 *             return self.mid(0)             # <<<<<<<<<<<<<<
 * 
 *         def xEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(16, 81, __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/generated/Bin3D.pyx":80
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(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.Bin3D.BinWrapper.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":83
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_33xEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_33xEdge = {"xEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_33xEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_33xEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "xEdge") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_32xEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_32xEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdge", 1);

  /* "include/generated/Bin3D.pyx":84
 * 
 *         def xEdge(self):
 *             return self.edge(0)             # <<<<<<<<<<<<<<
 * 
 *         def yWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(16, 84, __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/generated/Bin3D.pyx":83
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(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.Bin3D.BinWrapper.xEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":86
 *             return self.edge(0)
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_35yWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_35yWidth = {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_35yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_35yWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "yWidth") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_34yWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_34yWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidth", 1);

  /* "include/generated/Bin3D.pyx":87
 * 
 *         def yWidth(self):
 *             return self.width(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(16, 87, __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/generated/Bin3D.pyx":86
 *             return self.edge(0)
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(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.Bin3D.BinWrapper.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":89
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_37yMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_37yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_37yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_37yMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 89, __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, "yMax") < 0)) __PYX_ERR(16, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_36yMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_36yMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/Bin3D.pyx":90
 * 
 *         def yMax(self):
 *             return self.max(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(16, 90, __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/generated/Bin3D.pyx":89
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(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.Bin3D.BinWrapper.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":92
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_39yMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_39yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_39yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_39yMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 92, __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, "yMin") < 0)) __PYX_ERR(16, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_38yMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_38yMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/Bin3D.pyx":93
 * 
 *         def yMin(self):
 *             return self.min(1)             # <<<<<<<<<<<<<<
 * 
 *         def yMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(16, 93, __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/generated/Bin3D.pyx":92
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(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.Bin3D.BinWrapper.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":95
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_41yMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_41yMid = {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_41yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_41yMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "yMid") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_40yMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_40yMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMid", 1);

  /* "include/generated/Bin3D.pyx":96
 * 
 *         def yMid(self):
 *             return self.mid(1)             # <<<<<<<<<<<<<<
 * 
 *         def yEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(16, 96, __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/generated/Bin3D.pyx":95
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(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.Bin3D.BinWrapper.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":98
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_43yEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_43yEdge = {"yEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_43yEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_43yEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "yEdge") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 98, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.yEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_42yEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_42yEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdge", 1);

  /* "include/generated/Bin3D.pyx":99
 * 
 *         def yEdge(self):
 *             return self.edge(1)             # <<<<<<<<<<<<<<
 * 
 *         def zWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_1};
    __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(16, 99, __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/generated/Bin3D.pyx":98
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(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.Bin3D.BinWrapper.yEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":101
 *             return self.edge(1)
 * 
 *         def zWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_45zWidth(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_45zWidth = {"zWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_45zWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_45zWidth(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zWidth (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 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, "zWidth") < 0)) __PYX_ERR(16, 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_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zWidth", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.zWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_44zWidth(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_44zWidth(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zWidth", 1);

  /* "include/generated/Bin3D.pyx":102
 * 
 *         def zWidth(self):
 *             return self.width(2)             # <<<<<<<<<<<<<<
 * 
 *         def zMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_2};
    __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(16, 102, __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/generated/Bin3D.pyx":101
 *             return self.edge(1)
 * 
 *         def zWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(2)
 * 
 */

  /* 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.Bin3D.BinWrapper.zWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":104
 *             return self.width(2)
 * 
 *         def zMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_47zMax(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_47zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_47zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_47zMax(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 104, __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, "zMax") < 0)) __PYX_ERR(16, 104, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMax", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_46zMax(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_46zMax(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 1);

  /* "include/generated/Bin3D.pyx":105
 * 
 *         def zMax(self):
 *             return self.max(2)             # <<<<<<<<<<<<<<
 * 
 *         def zMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_2};
    __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(16, 105, __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/generated/Bin3D.pyx":104
 *             return self.width(2)
 * 
 *         def zMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(2)
 * 
 */

  /* 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.Bin3D.BinWrapper.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":107
 *             return self.max(2)
 * 
 *         def zMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_49zMin(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_49zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_49zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_49zMin(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 107, __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, "zMin") < 0)) __PYX_ERR(16, 107, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMin", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 107, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_48zMin(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_48zMin(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 1);

  /* "include/generated/Bin3D.pyx":108
 * 
 *         def zMin(self):
 *             return self.min(2)             # <<<<<<<<<<<<<<
 * 
 *         def zMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_min); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_2};
    __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(16, 108, __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/generated/Bin3D.pyx":107
 *             return self.max(2)
 * 
 *         def zMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(2)
 * 
 */

  /* 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.Bin3D.BinWrapper.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":110
 *             return self.min(2)
 * 
 *         def zMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_51zMid(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_51zMid = {"zMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_51zMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_51zMid(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 110, __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, "zMid") < 0)) __PYX_ERR(16, 110, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMid", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 110, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.zMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_50zMid(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_50zMid(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMid", 1);

  /* "include/generated/Bin3D.pyx":111
 * 
 *         def zMid(self):
 *             return self.mid(2)             # <<<<<<<<<<<<<<
 * 
 *         def zEdge(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_2};
    __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(16, 111, __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/generated/Bin3D.pyx":110
 *             return self.min(2)
 * 
 *         def zMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(2)
 * 
 */

  /* 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.Bin3D.BinWrapper.zMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":113
 *             return self.mid(2)
 * 
 *         def zEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(2)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_53zEdge(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*/
static PyMethodDef __pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_53zEdge = {"zEdge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_53zEdge, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4yoda_4core_5Bin3D_10BinWrapper_53zEdge(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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zEdge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 113, __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, "zEdge") < 0)) __PYX_ERR(16, 113, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zEdge", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Bin3D.BinWrapper.zEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_52zEdge(__pyx_self, __pyx_v_self);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Bin3D_10BinWrapper_52zEdge(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;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zEdge", 1);

  /* "include/generated/Bin3D.pyx":114
 * 
 *         def zEdge(self):
 *             return self.edge(2)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_edge); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_2};
    __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(16, 114, __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/generated/Bin3D.pyx":113
 *             return self.mid(2)
 * 
 *         def zEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(2)
 * 
 */

  /* 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.Bin3D.BinWrapper.zEdge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin3D.pyx":10
 * cimport util
 * 
 * cdef Bin3D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 3D."""
 */

static PyObject *__pyx_f_4yoda_4core_Bin3D(PyObject *__pyx_v_superclass) {
  PyObject *__pyx_v_BinWrapper = 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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bin3D", 1);

  /* "include/generated/Bin3D.pyx":11
 * 
 * cdef Bin3D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 3D."""
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_superclass);
  __Pyx_GIVEREF(__pyx_v_superclass);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_superclass)) __PYX_ERR(16, 11, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BinWrapper, __pyx_n_s_Bin3D_locals_BinWrapper, (PyObject *) NULL, __pyx_n_s_yoda_core, __pyx_kp_s_A_bin_content_wrapper_in_3D); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2 != __pyx_t_1) {
    if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_1) < 0))) __PYX_ERR(16, 11, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":14
 *         """A bin-content wrapper in 3D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_1__init__, 0, __pyx_n_s_Bin3D_locals_BinWrapper___init, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(16, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_3setBinning, 0, __pyx_n_s_Bin3D_locals_BinWrapper_setBinni, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setBinning, __pyx_t_1) < 0) __PYX_ERR(16, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_5setIndices, 0, __pyx_n_s_Bin3D_locals_BinWrapper_setIndic, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_setIndices, __pyx_t_1) < 0) __PYX_ERR(16, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_7attach, 0, __pyx_n_s_Bin3D_locals_BinWrapper_attach, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__21);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_attach, __pyx_t_1) < 0) __PYX_ERR(16, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_9index, 0, __pyx_n_s_Bin3D_locals_BinWrapper_index, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_index, __pyx_t_1) < 0) __PYX_ERR(16, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_11isMasked, 0, __pyx_n_s_Bin3D_locals_BinWrapper_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_isMasked, __pyx_t_1) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_13dVol, 0, __pyx_n_s_Bin3D_locals_BinWrapper_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_dVol, __pyx_t_1) < 0) __PYX_ERR(16, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_15width, 0, __pyx_n_s_Bin3D_locals_BinWrapper_width, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_width, __pyx_t_1) < 0) __PYX_ERR(16, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_17max, 0, __pyx_n_s_Bin3D_locals_BinWrapper_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_max, __pyx_t_1) < 0) __PYX_ERR(16, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_19min, 0, __pyx_n_s_Bin3D_locals_BinWrapper_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_min, __pyx_t_1) < 0) __PYX_ERR(16, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_21mid, 0, __pyx_n_s_Bin3D_locals_BinWrapper_mid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mid, __pyx_t_1) < 0) __PYX_ERR(16, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_23edge, 0, __pyx_n_s_Bin3D_locals_BinWrapper_edge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_edge, __pyx_t_1) < 0) __PYX_ERR(16, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_25xWidth, 0, __pyx_n_s_Bin3D_locals_BinWrapper_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xWidth, __pyx_t_1) < 0) __PYX_ERR(16, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":74
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_27xMax, 0, __pyx_n_s_Bin3D_locals_BinWrapper_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMax, __pyx_t_1) < 0) __PYX_ERR(16, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":77
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_29xMin, 0, __pyx_n_s_Bin3D_locals_BinWrapper_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMin, __pyx_t_1) < 0) __PYX_ERR(16, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":80
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_31xMid, 0, __pyx_n_s_Bin3D_locals_BinWrapper_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xMid, __pyx_t_1) < 0) __PYX_ERR(16, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":83
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_33xEdge, 0, __pyx_n_s_Bin3D_locals_BinWrapper_xEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_xEdge, __pyx_t_1) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":86
 *             return self.edge(0)
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_35yWidth, 0, __pyx_n_s_Bin3D_locals_BinWrapper_yWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yWidth, __pyx_t_1) < 0) __PYX_ERR(16, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":89
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_37yMax, 0, __pyx_n_s_Bin3D_locals_BinWrapper_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMax, __pyx_t_1) < 0) __PYX_ERR(16, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":92
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_39yMin, 0, __pyx_n_s_Bin3D_locals_BinWrapper_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMin, __pyx_t_1) < 0) __PYX_ERR(16, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":95
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_41yMid, 0, __pyx_n_s_Bin3D_locals_BinWrapper_yMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yMid, __pyx_t_1) < 0) __PYX_ERR(16, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":98
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_43yEdge, 0, __pyx_n_s_Bin3D_locals_BinWrapper_yEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_yEdge, __pyx_t_1) < 0) __PYX_ERR(16, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":101
 *             return self.edge(1)
 * 
 *         def zWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(2)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_45zWidth, 0, __pyx_n_s_Bin3D_locals_BinWrapper_zWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_zWidth, __pyx_t_1) < 0) __PYX_ERR(16, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":104
 *             return self.width(2)
 * 
 *         def zMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(2)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_47zMax, 0, __pyx_n_s_Bin3D_locals_BinWrapper_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_zMax, __pyx_t_1) < 0) __PYX_ERR(16, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":107
 *             return self.max(2)
 * 
 *         def zMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(2)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_49zMin, 0, __pyx_n_s_Bin3D_locals_BinWrapper_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_zMin, __pyx_t_1) < 0) __PYX_ERR(16, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":110
 *             return self.min(2)
 * 
 *         def zMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(2)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_51zMid, 0, __pyx_n_s_Bin3D_locals_BinWrapper_zMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_zMid, __pyx_t_1) < 0) __PYX_ERR(16, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":113
 *             return self.mid(2)
 * 
 *         def zEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(2)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Bin3D_10BinWrapper_53zEdge, 0, __pyx_n_s_Bin3D_locals_BinWrapper_zEdge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_zEdge, __pyx_t_1) < 0) __PYX_ERR(16, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Bin3D.pyx":11
 * 
 * cdef Bin3D(superclass):
 *     class BinWrapper(superclass):             # <<<<<<<<<<<<<<
 *         """A bin-content wrapper in 3D."""
 * 
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BinWrapper, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_BinWrapper = __pyx_t_1;
  __pyx_t_1 = 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;

  /* "include/generated/Bin3D.pyx":117
 * 
 * 
 *     return BinWrapper             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_BinWrapper);
  __pyx_r = __pyx_v_BinWrapper;
  goto __pyx_L0;

  /* "include/generated/Bin3D.pyx":10
 * cimport util
 * 
 * cdef Bin3D(superclass):             # <<<<<<<<<<<<<<
 *     class BinWrapper(superclass):
 *         """A bin-content wrapper in 3D."""
 */

  /* 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_AddTraceback("yoda.core.Bin3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_BinWrapper);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate1D<double>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  YODA::BinnedEstimate1D<double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate1D.pyx":31
 * 
 *     cdef inline c.BinnedEstimate1D[double]* binned_d_ptr(self) except NULL:
 *         return <c.BinnedEstimate1D[double]*> 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(6, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate1D<double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate1D<int>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  YODA::BinnedEstimate1D<int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate1D.pyx":35
 * 
 *     cdef inline c.BinnedEstimate1D[int]* binned_i_ptr(self) except NULL:
 *         return <c.BinnedEstimate1D[int]*> 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(6, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate1D<int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate1D<std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  YODA::BinnedEstimate1D<std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate1D.pyx":39
 * 
 *     cdef inline c.BinnedEstimate1D[string]* binned_s_ptr(self) except NULL:
 *         return <c.BinnedEstimate1D[string]*> 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(6, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate1D<std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate1D[string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D___init__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":44
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedEstimate1D.pyx":45
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":46
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 46, __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(6, 46, __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_BinnedEstimate1D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate1D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate1D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate1D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(6, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(6, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(6, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(6, 46, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(6, 46, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_2__init1, "BinnedEstimate1D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1 = {"_BinnedEstimate1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedEstimate1D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedEstimate1D<double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init1", 1);

  /* "include/generated/BinnedEstimate1D.pyx":49
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedEstimate1D<double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 49, __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(6, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedEstimate1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__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_16BinnedEstimate1D_4__init2, "BinnedEstimate1D.__init2(self, edgesA1, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__init2 = {"_BinnedEstimate1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__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_edgesA1 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 52, __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, "_BinnedEstimate1D__init2") < 0)) __PYX_ERR(6, 52, __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_edgesA1 = values[0];
    __pyx_v_path = ((PyObject*)values[1]);
    __pyx_v_title = ((PyObject*)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init2", 0, 1, 3, __pyx_nargs); __PYX_ERR(6, 52, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(6, 52, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(6, 52, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_genexpr(CYTHON_UNUSED 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, 58, __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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_2generator5, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate1D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(6, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init2.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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_2generator5(__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;
  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, 58, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(6, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(6, 58, __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, 58, __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, 58, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 58, __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, 58, __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(6, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(6, 58, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_3genexpr(CYTHON_UNUSED 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, 62, __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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_5generator6, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate1D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init2.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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_5generator6(__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;
  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, 62, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(6, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(6, 62, __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, 62, __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, 62, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 62, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 62, __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, 62, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(6, 62, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_8generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_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_8_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_8_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(6, 66, __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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_8generator7, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate1D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init2.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_16BinnedEstimate1D_24_BinnedEstimate1D__init2_8generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_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(6, 66, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(6, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(6, 66, __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, 66, __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, 66, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __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, 66, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(6, 66, __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/generated/BinnedEstimate1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_2generator5 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_5generator6 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_8generator7 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::vector<double> >  __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::BinnedEstimate1D<double>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  std::vector<std::vector<int> >  __pyx_t_13;
  YODA::BinnedEstimate1D<int>  *__pyx_t_14;
  std::vector<std::vector<std::string> >  __pyx_t_15;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init2", 1);

  /* "include/generated/BinnedEstimate1D.pyx":53
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 53, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(6, 53, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 53, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 53, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 58, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

    /* "include/generated/BinnedEstimate1D.pyx":59
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 59, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 59, __pyx_L1_error)
    try {
      __pyx_t_9 = new YODA::BinnedEstimate1D<double> ((__pyx_v_edges_d[0]), ((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(6, 59, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":60
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedEstimate1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_3genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 62, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_13 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13);

    /* "include/generated/BinnedEstimate1D.pyx":63
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 63, __pyx_L1_error)
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 63, __pyx_L1_error)
    try {
      __pyx_t_14 = new YODA::BinnedEstimate1D<int> ((__pyx_v_edges_i[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_7));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 63, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":64
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedEstimate1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedEstimate1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 66, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate1D.pyx":67
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0])
 *         else:
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 67, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 67, __pyx_L1_error)
    try {
      __pyx_t_16 = new YODA::BinnedEstimate1D<std::string> ((__pyx_v_edges_s[0]), ((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(6, 67, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":68
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate1D[string](edges_s[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedEstimate1D.pyx":70
 *           self._set_config(edges_s[0])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(6, 70, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "include/generated/BinnedEstimate1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

  /* 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_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_2generator5);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_5generator6);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate1D_24_BinnedEstimate1D__init2_8generator7);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__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_16BinnedEstimate1D_6__init3, "BinnedEstimate1D.__init3(self, nbinsX, lowerX, upperX, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__init3 = {"_BinnedEstimate1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 72, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init3", 0, 3, 5, 1); __PYX_ERR(6, 72, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init3", 0, 3, 5, 2); __PYX_ERR(6, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 72, __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, "_BinnedEstimate1D__init3") < 0)) __PYX_ERR(6, 72, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_path = ((PyObject*)values[3]);
    __pyx_v_title = ((PyObject*)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init3", 0, 3, 5, __pyx_nargs); __PYX_ERR(6, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(6, 72, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(6, 72, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init3", 1);

  /* "include/generated/BinnedEstimate1D.pyx":74
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(6, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedEstimate1D.pyx":73
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(6, 73, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":76
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 *         self.__init2(edges[0], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedEstimate1D other):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate1D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_t_3, __pyx_v_path, __pyx_v_title};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__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_2)) __PYX_ERR(6, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__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_16BinnedEstimate1D_8__init4, "BinnedEstimate1D.__init4(self, BinnedEstimate1D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__init4 = {"_BinnedEstimate1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 78, __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, "_BinnedEstimate1D__init4") < 0)) __PYX_ERR(6, 78, __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_BinnedEstimate1D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate1D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 78, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init4", __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_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 78, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate1D__init4", 1);

  /* "include/generated/BinnedEstimate1D.pyx":79
 * 
 *     def __init4(self, BinnedEstimate1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 79, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":80
 *     def __init4(self, BinnedEstimate1D other):
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 80, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 80, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":79
 * 
 *     def __init4(self, BinnedEstimate1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 81, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":82
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[string]*> other.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 82, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 82, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 83, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":84
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[string]*> other.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 84, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 84, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":85
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Binning); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_12)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_other->_binning};
    __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_t_11 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 */

  /* 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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._BinnedEstimate1D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":88
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(6, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 88, __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/generated/BinnedEstimate1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedEstimate1D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":91
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(6, 91, __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(6, 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_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(6, 91, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(6, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(6, 91, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(6, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(6, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(6, 91, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 91, __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/BinnedEstimate1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedEstimate1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_14_set_config, "BinnedEstimate1D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<int>  __pyx_t_12;
  std::vector<std::string>  __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  unsigned int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedEstimate1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(6, 94, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":95
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(6, 96, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":97
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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, 97, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(6, 97, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(6, 98, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":99
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":101
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedEstimate1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 103, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate1D<double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 103, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 103, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 103, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate1D.pyx":104
 *           try:
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 104, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(6, 104, __pyx_L9_error)

          /* "include/generated/BinnedEstimate1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate1D.pyx":106
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "d"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 106, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedEstimate1D<double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 106, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 106, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate1D.pyx":105
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate1D[double]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 105, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate1D.pyx":108
 *               (<c.BinnedEstimate1D[double]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "d"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_d);
        __Pyx_GIVEREF(__pyx_n_s_d);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_d;

        /* "include/generated/BinnedEstimate1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":109
 *             ])
 *             self._config = "d"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedEstimate1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 111, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate1D<int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 111, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 111, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 111, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate1D.pyx":112
 *           try:
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 112, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(6, 112, __pyx_L16_error)

          /* "include/generated/BinnedEstimate1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate1D.pyx":114
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "i"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 114, __pyx_L16_error)
        try {
          __pyx_t_12 = ((YODA::BinnedEstimate1D<int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 114, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 114, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate1D.pyx":113
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate1D[int]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 113, __pyx_L16_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate1D.pyx":116
 *               (<c.BinnedEstimate1D[int]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "i"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_i);
        __Pyx_GIVEREF(__pyx_n_s_i);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_i;

        /* "include/generated/BinnedEstimate1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":117
 *             ])
 *             self._config = "i"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedEstimate1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 119, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate1D<std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 119, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 119, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_s, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 119, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate1D.pyx":120
 *           try:
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 120, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(6, 120, __pyx_L23_error)

          /* "include/generated/BinnedEstimate1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate1D.pyx":122
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "s"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(6, 122, __pyx_L23_error)
        try {
          __pyx_t_13 = ((YODA::BinnedEstimate1D<std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(6, 122, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 122, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate1D.pyx":121
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate1D[string]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(6, 121, __pyx_L23_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate1D.pyx":124
 *               (<c.BinnedEstimate1D[string]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "s"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_s);
        __Pyx_GIVEREF(__pyx_n_s_s);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_s;

        /* "include/generated/BinnedEstimate1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":125
 *             ])
 *             self._config = "s"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedEstimate1D.pyx":126
 *             self._config = "s"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(6, 126, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 127, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_14 = NULL;
  __pyx_t_15 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_14)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_14);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_15 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":128
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_14 = NULL;
    __pyx_t_15 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_15 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(6, 128, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_14);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate1D.
 *         Clone this BinnedEstimate1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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_16BinnedEstimate1D_16clone, "BinnedEstimate1D.clone(self)\n() -> BinnedEstimate1D.\n        Clone this BinnedEstimate1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_16clone};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D_16clone(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedEstimate1D.pyx":133
 *         """() -> BinnedEstimate1D.
 *         Clone this BinnedEstimate1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":134
 *         Clone this BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 134, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":135
 *         rtn = None
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 135, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 135, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), ((YODA::BinnedEstimate1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":134
 *         Clone this BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":137
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 137, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 137, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), ((YODA::BinnedEstimate1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":139
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 139, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), ((YODA::BinnedEstimate1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":141
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 141, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, <c.BinnedEstimate1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedEstimate1D.pyx":143
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedEstimate1D.pyx":144
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate1D.
 *         Clone this BinnedEstimate1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.clone", __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/generated/BinnedEstimate1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex, "BinnedEstimate1D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate1D<double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedEstimate1D<int>  *__pyx_t_9;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedEstimate1D.pyx":149
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(6, 149, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 1);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 149, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 149, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":151
 *         assert(len(indices) == 1) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 151, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(6, 151, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(6, 151, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 152, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate1D.pyx":153
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 153, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 153, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 154, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate1D.pyx":155
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 155, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 155, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 156, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate1D.pyx":157
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 157, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 157, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":158
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 158, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

  /* 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.BinnedEstimate1D.localToGlobalIndex", __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/generated/BinnedEstimate1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_20_global_set, "BinnedEstimate1D._global_set(self, size_t idx, Estimate cont)\nint, Estimate -> void.\n        Set a Estimate at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 161, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 161, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(6, 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, "_global_set") < 0)) __PYX_ERR(6, 161, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 161, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 161, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(6, 161, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::Estimate *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedEstimate1D.pyx":164
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 164, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":165
 *         Set a Estimate at bin position idx."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 165, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 165, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 165, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":164
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 166, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":167
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 167, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 167, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 167, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 168, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":169
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 169, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 169, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 169, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":170
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 170, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

  /* 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.BinnedEstimate1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_22_local_set, "BinnedEstimate1D._local_set(self, indices, Estimate cont)\nvector[int], Estimate -> void.\n        Set a Estimate at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 174, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 174, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(6, 174, __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, "_local_set") < 0)) __PYX_ERR(6, 174, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(6, 174, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Estimate *__pyx_t_7;
  YODA::BinnedEstimate1D<int>  *__pyx_t_8;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedEstimate1D.pyx":177
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 177, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":178
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 178, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 178, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 178, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 178, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":177
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 179, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":180
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 180, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 180, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 180, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 181, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":182
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 182, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(6, 182, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 182, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":183
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 183, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

  /* 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.BinnedEstimate1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_24set, "BinnedEstimate1D.set(self, *args)\nSet bin with Estimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_24set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_24set(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedEstimate1D.pyx":188
 *     def set(self, *args):
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(6, 188, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 188, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 188, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":189
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate1D.pyx":190
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 190, __pyx_L1_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/generated/BinnedEstimate1D.pyx":189
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":192
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 192, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedEstimate1D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_26reset, "BinnedEstimate1D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_26reset};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D_26reset(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_4;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedEstimate1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 196, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":197
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 197, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 197, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 198, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":199
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 199, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 199, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 200, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":201
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 201, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 201, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":202
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 202, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_28numBins, "BinnedEstimate1D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedEstimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 206, __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, "numBins") < 0)) __PYX_ERR(6, 206, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(6, 206, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedEstimate1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 209, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":210
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 210, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 210, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 210, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 210, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":212
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 212, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 212, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 212, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 212, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 213, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":214
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 214, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 214, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 214, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 214, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":215
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 215, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

  /* 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.BinnedEstimate1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_30isMasked, "BinnedEstimate1D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 218, __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, "isMasked") < 0)) __PYX_ERR(6, 218, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 218, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedEstimate1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":221
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 221, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 221, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 221, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":223
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 223, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 223, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 223, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 224, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":225
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 225, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 225, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 225, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":226
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 226, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_32isVisible, "BinnedEstimate1D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "isVisible") < 0)) __PYX_ERR(6, 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 229, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedEstimate1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 231, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":232
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 232, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 232, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 232, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 233, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":234
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 234, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 234, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 234, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 235, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":236
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 236, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 236, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 236, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":237
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 237, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_34binDim, "BinnedEstimate1D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedEstimate1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 242, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":243
 *         """Return binning dimension."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 243, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 243, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 244, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":245
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 245, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 245, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":247
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 247, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 247, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":248
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 248, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":252
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(6, 252, __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(6, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedEstimate1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_38bins, "BinnedEstimate1D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_38bins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 254, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 254, __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, "bins") < 0)) __PYX_ERR(6, 254, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(6, 254, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_38bins(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedEstimate1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(6, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 256, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(6, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(6, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(6, 256, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 257, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedEstimate1D.pyx":258
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 258, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedEstimate1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedEstimate1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(6, 256, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedEstimate1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(6, 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/generated/BinnedEstimate1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.bins", __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/generated/BinnedEstimate1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_40_bin, "BinnedEstimate1D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 260, __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(6, 260, __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(6, 260, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 260, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedEstimate1D<double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedEstimate1D.pyx":262
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin1D(Estimate)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":263
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin1D(Estimate)
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(6, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":264
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin1D(Estimate)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin1D(((PyObject *)__pyx_ptype_4yoda_4core_Estimate)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Estimate)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 265, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate1D.pyx":266
 *         b = Bin1D(Estimate)
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 266, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 266, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":267
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 267, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(6, 267, __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/generated/BinnedEstimate1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Estimate)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 268, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate1D.pyx":269
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 269, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 269, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":270
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 270, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 270, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 270, __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/generated/BinnedEstimate1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 271, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate1D.pyx":272
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 272, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 272, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":273
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 273, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(6, 273, __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/generated/BinnedEstimate1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":274
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":275
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_42bin, "BinnedEstimate1D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_42bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_42bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedEstimate1D.pyx":279
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(6, 279, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 279, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 279, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":280
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(6, 280, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":281
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(6, 281, __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/generated/BinnedEstimate1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedEstimate1D.bin", __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;
}

/* "include/generated/BinnedEstimate1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_44binAt, "BinnedEstimate1D.binAt(self, x)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 283, __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(6, 283, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 283, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedEstimate1D.pyx":285
 *     def binAt(self, x):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(6, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(6, 285, __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
  if (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;
    }
  }
  #endif
  {
    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(6, 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/generated/BinnedEstimate1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

  /* 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.BinnedEstimate1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_46maskBin, "BinnedEstimate1D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 287, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 287, __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, "maskBin") < 0)) __PYX_ERR(6, 287, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(6, 287, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedEstimate1D<double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedEstimate1D<int>  *__pyx_t_8;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedEstimate1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":290
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 290, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":292
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 292, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 292, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 292, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 292, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":294
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 294, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 294, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":296
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 296, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 296, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 296, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 296, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedEstimate1D.maskBin", __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;
}

/* "include/generated/BinnedEstimate1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_48maskBins, "BinnedEstimate1D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 298, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 298, __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, "maskBins") < 0)) __PYX_ERR(6, 298, __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_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(6, 298, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedEstimate1D.pyx":300
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(6, 300, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 300, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 300, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 301, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(6, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(6, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 301, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":302
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.maskBins", __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;
}

/* "include/generated/BinnedEstimate1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_50maskBinAt, "BinnedEstimate1D.maskBinAt(self, x, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 304, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "maskBinAt") < 0)) __PYX_ERR(6, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 1, 2, __pyx_nargs); __PYX_ERR(6, 304, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_x, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedEstimate1D.pyx":306
 *     def maskBinAt(self, x, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(6, 306, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(6, 306, __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/generated/BinnedEstimate1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

  /* 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.BinnedEstimate1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_52maskSlice, "BinnedEstimate1D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 308, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 308, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(6, 308, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "maskSlice") < 0)) __PYX_ERR(6, 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);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedEstimate1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 310, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":311
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 311, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 311, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 311, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 311, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(6, 311, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 312, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":313
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 313, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 313, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 313, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 313, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 313, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":315
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 315, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 315, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 315, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 315, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(6, 315, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":318
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 318, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 318, __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(6, 318, __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(6, 318, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedEstimate1D.pyx":319
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 319, __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/generated/BinnedEstimate1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":322
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_56mkScatter, "BinnedEstimate1D.mkScatter(self, path='', pat_match='', includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter2D.\n\n        Make a new Scatter2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_57mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_56mkScatter};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_pat_match = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_pat_match,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 322, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_match);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 322, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 322, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 322, __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(6, 322, __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_path = values[0];
    __pyx_v_pat_match = values[1];
    __pyx_v_includeOverflows = values[2];
    __pyx_v_includeMaskedBins = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 4, __pyx_nargs); __PYX_ERR(6, 322, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_56mkScatter(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_path, __pyx_v_pat_match, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  YODA::Scatter2D __pyx_t_7;
  YODA::Scatter2D *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_10;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedEstimate1D.pyx":326
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":327
 *         Make a new Scatter2D."""
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 327, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 327, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 327, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 327, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 327, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 327, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_7);

    /* "include/generated/BinnedEstimate1D.pyx":328
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 328, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":326
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":329
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 329, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":330
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 330, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 330, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 330, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 330, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 330, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_10->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 330, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_7);

    /* "include/generated/BinnedEstimate1D.pyx":331
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 331, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":329
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":332
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":333
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 333, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 333, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 333, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 333, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 333, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 333, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_7);

    /* "include/generated/BinnedEstimate1D.pyx":334
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedEstimate1D self, BinnedEstimate1D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 334, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":332
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":322
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

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

/* "include/generated/BinnedEstimate1D.pyx":336
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate1D self, BinnedEstimate1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate1D -> BinnedEstimate1D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_59divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_58divideBy, "BinnedEstimate1D.divideBy(self, BinnedEstimate1D other, efficiency=False)\nBinnedEstimate1D -> BinnedEstimate1D\n\n        Divide this BinnedEstimate1D by other,\n        returning a BinnedEstimate1D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_59divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_58divideBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_59divideBy(PyObject *__pyx_v_self, 
#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_BinnedEstimate1D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 336, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 336, __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(6, 336, __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_BinnedEstimate1D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(6, 336, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.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_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 336, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_58divideBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedEstimate1D.pyx":342
 *         returning a BinnedEstimate1D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 342, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 342, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 342, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":343
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "d":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":344
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 344, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":345
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 345, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":346
 *         if efficiency:
 *           if self._config == "d":
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 346, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 346, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedEstimate1D.pyx":347
 *           if self._config == "d":
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":345
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate1D.pyx":348
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 348, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":349
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 349, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 349, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedEstimate1D.pyx":350
 *           elif self._config == "i":
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BE_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":348
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate1D.pyx":351
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 351, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":352
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BE_eff_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 352, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 352, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedEstimate1D.pyx":353
 *           elif self._config == "s":
 *             tmp = c.BE_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "d":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 353, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":351
 *             tmp = c.BE_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedEstimate1D.pyx":344
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BE_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":355
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 355, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":356
 *         else:
 *           if self._config == "d":
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 356, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 356, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedEstimate1D.pyx":357
 *           if self._config == "d":
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":355
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate1D.pyx":358
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 358, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":359
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 359, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 359, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedEstimate1D.pyx":360
 *           elif self._config == "i":
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":358
 *             tmp = c.BE_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate1D.pyx":361
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 361, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate1D.pyx":362
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 362, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 362, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedEstimate1D.pyx":363
 *           elif self._config == "s":
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":361
 *             tmp = c.BE_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":364
 *             tmp = c.BE_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_11 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":365
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":336
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate1D self, BinnedEstimate1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate1D -> BinnedEstimate1D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.divideBy", __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/generated/BinnedEstimate1D.pyx":367
 *         return rtn
 * 
 *     def __div__(BinnedEstimate1D self, BinnedEstimate1D 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_16BinnedEstimate1D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 367, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_60__div__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":368
 * 
 *     def __div__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedEstimate1D self, BinnedEstimate1D 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(6, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(6, 368, __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/generated/BinnedEstimate1D.pyx":367
 *         return rtn
 * 
 *     def __div__(BinnedEstimate1D self, BinnedEstimate1D 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.BinnedEstimate1D.__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/generated/BinnedEstimate1D.pyx":370
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 370, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_62__truediv__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":371
 * 
 *     def __truediv__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(6, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(6, 371, __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/generated/BinnedEstimate1D.pyx":370
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate1D self, BinnedEstimate1D 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.BinnedEstimate1D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":373
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_65_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_16BinnedEstimate1D_64_mknp, "BinnedEstimate1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_65_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_64_mknp};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_65_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 373, __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(6, 373, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 373, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_64_mknp(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedEstimate1D.pyx":374
 * 
 *     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/generated/BinnedEstimate1D.pyx":375
 *     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(6, 375, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate1D.pyx":376
 *         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(6, 376, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(6, 376, __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/generated/BinnedEstimate1D.pyx":374
 * 
 *     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/generated/BinnedEstimate1D.pyx":377
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedEstimate1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 377, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedEstimate1D.pyx":378
 *             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/generated/BinnedEstimate1D.pyx":374
 * 
 *     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/generated/BinnedEstimate1D.pyx":373
 *         return self.divideBy(other)
 * 
 *     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.BinnedEstimate1D._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/generated/BinnedEstimate1D.pyx":381
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_66lengthContent, "BinnedEstimate1D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_67lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_66lengthContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 381, __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, "lengthContent") < 0)) __PYX_ERR(6, 381, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(6, 381, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_66lengthContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedEstimate1D.pyx":383
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 383, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":384
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 384, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 384, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 384, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":383
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":385
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 385, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":386
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 386, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 386, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 386, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":385
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":387
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 387, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":388
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 388, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 388, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 388, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":387
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":389
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 389, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":381
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":391
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_68serializeContent, "BinnedEstimate1D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_69serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_68serializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 391, __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, "serializeContent") < 0)) __PYX_ERR(6, 391, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(6, 391, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_68serializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedEstimate1D.pyx":393
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 393, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":394
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 394, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 394, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 394, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":393
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":395
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 395, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":396
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 396, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 396, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 396, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":395
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":397
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 397, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":398
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 398, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 398, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 398, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":397
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":399
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 399, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":391
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":401
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_70deserializeContent, "BinnedEstimate1D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_71deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_70deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 401, __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, "deserializeContent") < 0)) __PYX_ERR(6, 401, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 401, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_70deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate1D<double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate1D<int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedEstimate1D.pyx":404
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 404, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 404, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(6, 404, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 404, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 404, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(6, 404, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 404, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 404, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(6, 404, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 404, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate1D.pyx":405
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 405, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":406
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 406, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 406, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 406, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":405
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":407
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 407, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":408
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 408, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 408, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 408, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":407
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":409
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 409, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":410
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 410, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 410, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 410, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":409
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":411
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 411, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":401
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":413
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_72lengthMeta, "BinnedEstimate1D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_73lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_72lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 413, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 413, __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, "lengthMeta") < 0)) __PYX_ERR(6, 413, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(6, 413, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_72lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedEstimate1D.pyx":415
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 415, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":416
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 416, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 416, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 416, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 416, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 416, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":415
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":417
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 417, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":418
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 418, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 418, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 418, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 418, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":417
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":419
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 419, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":420
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 420, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 420, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 420, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 420, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":419
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":421
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 421, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":413
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":423
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_74serializeMeta, "BinnedEstimate1D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_75serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_74serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 423, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 423, __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, "serializeMeta") < 0)) __PYX_ERR(6, 423, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(6, 423, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_74serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedEstimate1D.pyx":425
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 425, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":426
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 426, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 426, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 426, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 426, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":425
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":427
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 427, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":428
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 428, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 428, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 428, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 428, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":427
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":429
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 429, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":430
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 430, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 430, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 430, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 430, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":429
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":431
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 431, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":423
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":433
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_76deserializeMeta, "BinnedEstimate1D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_77deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_76deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 433, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 433, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 433, __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, "deserializeMeta") < 0)) __PYX_ERR(6, 433, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(6, 433, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_76deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate1D<double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedEstimate1D<int>  *__pyx_t_11;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedEstimate1D.pyx":436
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 436, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 436, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(6, 436, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 436, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 436, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(6, 436, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 436, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 436, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(6, 436, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate1D.pyx":437
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 437, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":438
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 438, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 438, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 438, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 438, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":437
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":439
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 439, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":440
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 440, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 440, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 440, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 440, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 440, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":439
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":441
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 441, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate1D.pyx":442
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 442, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 442, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 442, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 442, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":441
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":443
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 443, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":433
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":446
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_78vals, "BinnedEstimate1D.vals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_79vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_78vals};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("vals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "vals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_78vals(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  unsigned 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("vals", 1);

  /* "include/generated/BinnedEstimate1D.pyx":447
 * 
 *     def vals(self):
 *         return self._mknp([b.val() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=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(6, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 447, __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(6, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(6, 447, __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(6, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 447, __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))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 447, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(6, 447, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 447, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(6, 447, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 447, __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(6, 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_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
      __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(6, 447, __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(6, 447, __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
  if (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;
    }
  }
  #endif
  {
    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(6, 447, __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/generated/BinnedEstimate1D.pyx":446
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() 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.BinnedEstimate1D.vals", __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/generated/BinnedEstimate1D.pyx":449
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_80auc, "BinnedEstimate1D.auc(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_81auc = {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_80auc};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 449, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 449, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 449, __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, "auc") < 0)) __PYX_ERR(6, 449, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("auc", 0, 0, 3, __pyx_nargs); __PYX_ERR(6, 449, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_80auc(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auc", 1);

  /* "include/generated/BinnedEstimate1D.pyx":450
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_areaUnderCurve); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins};
    __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(6, 450, __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/generated/BinnedEstimate1D.pyx":449
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

  /* 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.BinnedEstimate1D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":453
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_82scale, "BinnedEstimate1D.scale(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_83scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_82scale};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 453, __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, "scale") < 0)) __PYX_ERR(6, 453, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 453, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_82scale(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 1);

  /* "include/generated/BinnedEstimate1D.pyx":454
 * 
 *     def scale(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scale(factor)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 454, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":455
 *     def scale(self, factor):
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 455, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(6, 455, __pyx_L1_error)
    try {
      __pyx_t_2->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 455, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":454
 * 
 *     def scale(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scale(factor)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":456
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scale(factor)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 456, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":457
 *           return self.binned_d_ptr().scale(factor)
 *         if self._config == "i":
 *           return self.binned_i_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 457, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(6, 457, __pyx_L1_error)
    try {
      __pyx_t_5->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 457, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":456
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scale(factor)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":458
 *         if self._config == "i":
 *           return self.binned_i_ptr().scale(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 458, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":459
 *           return self.binned_i_ptr().scale(factor)
 *         if self._config == "s":
 *           return self.binned_s_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 459, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(6, 459, __pyx_L1_error)
    try {
      __pyx_t_6->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 459, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":458
 *         if self._config == "i":
 *           return self.binned_i_ptr().scale(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":460
 *         if self._config == "s":
 *           return self.binned_s_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def indexAt(self, x):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 460, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":453
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 */

  /* 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.BinnedEstimate1D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":462
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_84indexAt, "BinnedEstimate1D.indexAt(self, x)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_85indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_84indexAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 462, __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, "indexAt") < 0)) __PYX_ERR(6, 462, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 462, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_84indexAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  std::string __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedEstimate1D.pyx":463
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 463, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":464
 *     def indexAt(self, x):
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 464, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(6, 464, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->indexAt(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 464, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":463
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":465
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 465, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":466
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 466, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 466, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->indexAt(__pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 466, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":465
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":467
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 467, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":468
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 468, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 468, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 468, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":467
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":469
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 469, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":462
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

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

/* "include/generated/BinnedEstimate1D.pyx":471
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_86maskedBins, "BinnedEstimate1D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_87maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_86maskedBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_86maskedBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedEstimate1D.pyx":472
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":473
 *     def maskedBins(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 473, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 473, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":472
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":474
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 474, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":475
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 475, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 475, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":474
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":476
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":477
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 477, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 477, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":476
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":478
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sources(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 478, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":471
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

  /* 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.BinnedEstimate1D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":480
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_88sources, "BinnedEstimate1D.sources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_89sources = {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_88sources};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_88sources(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  std::vector<std::string>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  std::vector<std::string>  __pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sources", 1);

  /* "include/generated/BinnedEstimate1D.pyx":481
 * 
 *     def sources(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sources()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 481, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":482
 *     def sources(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 482, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 482, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":481
 * 
 *     def sources(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sources()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":483
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sources()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 483, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":484
 *           return self.binned_d_ptr().sources()
 *         if self._config == "i":
 *           return self.binned_i_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 484, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 484, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":483
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sources()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":485
 *         if self._config == "i":
 *           return self.binned_i_ptr().sources()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 485, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":486
 *           return self.binned_i_ptr().sources()
 *         if self._config == "s":
 *           return self.binned_s_ptr().sources()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 486, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 486, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":485
 *         if self._config == "i":
 *           return self.binned_i_ptr().sources()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":487
 *         if self._config == "s":
 *           return self.binned_s_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 487, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":480
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 */

  /* 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.BinnedEstimate1D.sources", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":489
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve, "BinnedEstimate1D.areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve = {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areaUnderCurve (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 489, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 489, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "areaUnderCurve") < 0)) __PYX_ERR(6, 489, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("areaUnderCurve", 0, 0, 3, __pyx_nargs); __PYX_ERR(6, 489, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areaUnderCurve", 1);

  /* "include/generated/BinnedEstimate1D.pyx":490
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 490, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":491
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 491, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 491, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 491, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 491, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_2->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":490
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":492
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 492, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":493
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "i":
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 493, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 493, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 493, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 493, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_7->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":492
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":494
 *         if self._config == "i":
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 494, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":495
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "s":
 *           return self.binned_s_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 495, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 495, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 495, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 495, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_8->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":494
 *         if self._config == "i":
 *           return self.binned_i_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":496
 *         if self._config == "s":
 *           return self.binned_s_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 496, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":489
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

  /* 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.BinnedEstimate1D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":498
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix, "BinnedEstimate1D.covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr='^stat|^uncor')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix = {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  PyObject *__pyx_v_pat_uncorr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covarianceMatrix (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignoreOffDiagonalTerms,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,&__pyx_n_s_pat_uncorr,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s_stat_uncor));
    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_ignoreOffDiagonalTerms);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 498, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 498, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 498, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_uncorr);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 498, __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(6, 498, __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_ignoreOffDiagonalTerms = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
    __pyx_v_pat_uncorr = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covarianceMatrix", 0, 0, 4, __pyx_nargs); __PYX_ERR(6, 498, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_ignoreOffDiagonalTerms, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins, __pyx_v_pat_uncorr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  std::string __pyx_t_6;
  std::vector<std::vector<double> >  __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_9;
  std::vector<std::vector<double> >  __pyx_t_10;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_11;
  std::vector<std::vector<double> >  __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covarianceMatrix", 1);

  /* "include/generated/BinnedEstimate1D.pyx":499
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 499, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":500
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 500, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 500, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 500, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 500, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 500, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 500, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":499
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":501
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 501, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":502
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "i":
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 502, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 502, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 502, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 502, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 502, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 502, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":501
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":503
 *         if self._config == "i":
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 503, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":504
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "s":
 *           return self.binned_s_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 504, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 504, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 504, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 504, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 504, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 504, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":503
 *         if self._config == "i":
 *           return self.binned_i_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":505
 *         if self._config == "s":
 *           return self.binned_s_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 505, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":498
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

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

/* "include/generated/BinnedEstimate1D.pyx":507
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_94numBinsX, "BinnedEstimate1D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_95numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_94numBinsX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "numBinsX") < 0)) __PYX_ERR(6, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(6, 507, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_94numBinsX(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedEstimate1D.pyx":509
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 509, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":510
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 510, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 510, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 510, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 510, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":509
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":511
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 511, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":512
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 512, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 512, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 512, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":511
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":513
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 513, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":514
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 514, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 514, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 514, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":513
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":515
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 515, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":507
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":518
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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_16BinnedEstimate1D_96xEdges, "BinnedEstimate1D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_97xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_96xEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 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, "xEdges") < 0)) __PYX_ERR(6, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(6, 518, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_96xEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedEstimate1D.pyx":520
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 520, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":521
 *         """xEdges on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 521, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 521, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 521, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":520
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":522
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 522, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":523
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 523, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 523, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 523, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":522
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":524
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":525
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 525, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 525, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 525, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":524
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":526
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 526, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":518
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":529
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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_16BinnedEstimate1D_98xWidths, "BinnedEstimate1D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_99xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_98xWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 529, __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, "xWidths") < 0)) __PYX_ERR(6, 529, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(6, 529, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_98xWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedEstimate1D.pyx":531
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 531, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":532
 *         """xWidths on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 532, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(6, 532, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 532, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":531
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":533
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 533, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":529
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedEstimate1D.pyx":536
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_100xMin, "BinnedEstimate1D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_101xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_100xMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D_100xMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<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("xMin", 1);

  /* "include/generated/BinnedEstimate1D.pyx":538
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 538, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":539
 *         """xMin on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 539, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 539, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":538
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":540
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 540, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":536
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":543
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_102xMax, "BinnedEstimate1D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_103xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_102xMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D_102xMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<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("xMax", 1);

  /* "include/generated/BinnedEstimate1D.pyx":545
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":546
 *         """xMax on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 546, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 546, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":545
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":547
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 547, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":543
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":550
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_104rebinXBy, "BinnedEstimate1D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_105rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_104rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__92);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 550, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 550, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 550, __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, "rebinXBy") < 0)) __PYX_ERR(6, 550, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(6, 550, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_104rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedEstimate1D.pyx":552
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 552, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":553
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 553, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(6, 553, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 553, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 553, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(6, 553, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":552
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":554
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 554, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":550
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":557
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_106rebinXTo, "BinnedEstimate1D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_107rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_106rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 557, __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, "rebinXTo") < 0)) __PYX_ERR(6, 557, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 557, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_106rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedEstimate1D.pyx":559
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 559, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":560
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 560, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 560, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 560, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":559
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":561
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 561, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":557
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedEstimate1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":564
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate1D_108rebinX, "BinnedEstimate1D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_109rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_108rebinX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 564, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(6, 564, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(6, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_108rebinX(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedEstimate1D.pyx":565
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 565, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":566
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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, 566, __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/generated/BinnedEstimate1D.pyx":565
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate1D.pyx":568
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(6, 568, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 568, __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(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate1D.pyx":564
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":570
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_111__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_111__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 570, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_110__add__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_110__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  YODA::BinnedEstimate1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":571
 * 
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":572
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":571
 * 
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":573
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 573, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 573, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 573, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":574
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":575
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 575, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":576
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 576, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 576, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate1D.pyx":577
 *         if self._config == "d":
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":575
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":578
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":579
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 579, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 579, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate1D.pyx":580
 *         elif self._config == "i":
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":578
 *           tmp = c.BE_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":581
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 581, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":582
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 582, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 582, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate1D.pyx":583
 *         elif self._config == "s":
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":581
 *           tmp = c.BE_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate1D.pyx":584
 *           tmp = c.BE_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":585
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":570
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.__add__", __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/generated/BinnedEstimate1D.pyx":587
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_113__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_113__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 587, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_112__iadd__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_112__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  YODA::BinnedEstimate1D<double>  *__pyx_t_4;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":588
 * 
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":589
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":588
 * 
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":590
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 590, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 590, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 590, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":591
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 591, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":592
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 592, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 592, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate1D.pyx":591
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":593
 *         if self._config == "d":
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 593, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":594
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BE_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 594, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 594, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate1D.pyx":593
 *         if self._config == "d":
 *           c.BE_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":595
 *         elif self._config == "i":
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 595, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":596
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BE_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 596, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 596, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate1D.pyx":595
 *         elif self._config == "i":
 *           c.BE_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate1D.pyx":597
 *         elif self._config == "s":
 *           c.BE_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":587
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate1D.pyx":599
 *         return self
 * 
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_115__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_115__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 599, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_114__sub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_114__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  YODA::BinnedEstimate1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<int>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":600
 * 
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":601
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":600
 * 
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":602
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 602, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 602, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 602, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":603
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate1D.pyx":604
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":605
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 605, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 605, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate1D.pyx":606
 *         if self._config == "d":
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":604
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":607
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 607, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":608
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 608, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 608, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate1D.pyx":609
 *         elif self._config == "i":
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":607
 *           tmp = c.BE_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":610
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 610, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":611
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 611, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 611, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate1D.pyx":612
 *         elif self._config == "s":
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate1D.pyx":610
 *           tmp = c.BE_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate1D.pyx":613
 *           tmp = c.BE_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":614
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":599
 *         return self
 * 
 *     def __sub__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.__sub__", __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/generated/BinnedEstimate1D.pyx":616
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_117__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_117__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 616, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_116__isub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_116__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  YODA::BinnedEstimate1D<double>  *__pyx_t_4;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":617
 * 
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":618
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":617
 * 
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":619
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 619, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(6, 619, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(6, 619, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate1D.pyx":620
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 620, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":621
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 621, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 621, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate1D.pyx":620
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":622
 *         if self._config == "d":
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":623
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BE_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 623, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 623, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate1D.pyx":622
 *         if self._config == "d":
 *           c.BE_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate1D.pyx":624
 *         elif self._config == "i":
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BE_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 624, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":625
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BE_isub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 625, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 625, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate1D.pyx":624
 *         elif self._config == "i":
 *           c.BE_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BE_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate1D.pyx":626
 *         elif self._config == "s":
 *           c.BE_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate1D.pyx":616
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate1D.pyx":628
 *         return self
 * 
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_119__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_119__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 628, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_118__eq__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_118__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":629
 * 
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 629, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":630
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 630, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 630, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":629
 * 
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":631
 *         if self._config == "d":
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 631, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":632
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BE_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 632, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 632, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":631
 *         if self._config == "d":
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":633
 *         elif self._config == "i":
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 633, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":634
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BE_eq_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 634, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 634, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":633
 *         elif self._config == "i":
 *           return c.BE_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":635
 *         elif self._config == "s":
 *           return c.BE_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 635, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":628
 *         return self
 * 
 *     def __eq__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BE_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedEstimate1D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":637
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_121__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_121__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate1D, 1, "other", 0))) __PYX_ERR(6, 637, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_120__ne__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__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_16BinnedEstimate1D_120__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate1D<double>  *__pyx_t_2;
  YODA::BinnedEstimate1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate1D<int>  *__pyx_t_5;
  YODA::BinnedEstimate1D<int>  *__pyx_t_6;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_7;
  YODA::BinnedEstimate1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedEstimate1D.pyx":638
 * 
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 638, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":639
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 639, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate1D<double>  *)NULL))) __PYX_ERR(6, 639, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":638
 * 
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":640
 *         if self._config == "d":
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 640, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":641
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BE_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 641, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate1D<int>  *)NULL))) __PYX_ERR(6, 641, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":640
 *         if self._config == "d":
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":642
 *         elif self._config == "i":
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 642, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate1D.pyx":643
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BE_ne_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 643, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate1D<std::string>  *)NULL))) __PYX_ERR(6, 643, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 643, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate1D.pyx":642
 *         elif self._config == "i":
 *           return c.BE_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate1D.pyx":644
 *         elif self._config == "s":
 *           return c.BE_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(6, 644, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":637
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate1D self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BE_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedEstimate1D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate1D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(6, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedEstimate1D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedEstimate1D[double]* binned_d_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_16BinnedEstimate1D_123__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_16BinnedEstimate1D_122__reduce_cython__, "BinnedEstimate1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_123__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_123__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_122__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_123__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate1D_122__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_122__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate1D.__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_16BinnedEstimate1D_125__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_16BinnedEstimate1D_124__setstate_cython__, "BinnedEstimate1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate1D_125__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_125__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_124__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate1D_125__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate1D_124__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate1D_124__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate1D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":31
 * 
 *     cdef inline c.BinnedEstimate2D[double,double]* binned_dd_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[double,double]*> 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, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":35
 * 
 *     cdef inline c.BinnedEstimate2D[double,int]* binned_di_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[double,int]*> 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, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":39
 * 
 *     cdef inline c.BinnedEstimate2D[double,string]* binned_ds_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[double,string]*> 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, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":43
 * 
 *     cdef inline c.BinnedEstimate2D[int,double]* binned_id_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[int,double]*> 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, 43, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":47
 * 
 *     cdef inline c.BinnedEstimate2D[int,int]* binned_ii_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[int,int]*> 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, 47, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":51
 * 
 *     cdef inline c.BinnedEstimate2D[int,string]* binned_is_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[int,string]*> 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, 51, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":55
 * 
 *     cdef inline c.BinnedEstimate2D[string,double]* binned_sd_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[string,double]*> 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, 55, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":59
 * 
 *     cdef inline c.BinnedEstimate2D[string,int]* binned_si_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[string,int]*> 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, 59, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate2D.pyx":63
 * 
 *     cdef inline c.BinnedEstimate2D[string,string]* binned_ss_ptr(self) except NULL:
 *         return <c.BinnedEstimate2D[string,string]*> 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, 63, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedEstimate2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate2D[string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D___init__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":68
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedEstimate2D.pyx":69
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":70
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 70, __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(17, 70, __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_BinnedEstimate2D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate2D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate2D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate2D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(17, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(17, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(17, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(17, 70, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(17, 70, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_2__init1, "BinnedEstimate2D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1 = {"_BinnedEstimate2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedEstimate2D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init1", 1);

  /* "include/generated/BinnedEstimate2D.pyx":73
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedEstimate2D<double,double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 73, __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, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedEstimate2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__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_16BinnedEstimate2D_4__init2, "BinnedEstimate2D.__init2(self, edgesA1, edgesA2, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__init2 = {"_BinnedEstimate2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__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_edgesA1 = 0;
  PyObject *__pyx_v_edgesA2 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_edgesA2,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 76, __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_edgesA2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 76, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init2", 0, 2, 4, 1); __PYX_ERR(17, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 76, __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, "_BinnedEstimate2D__init2") < 0)) __PYX_ERR(17, 76, __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_edgesA1 = values[0];
    __pyx_v_edgesA2 = values[1];
    __pyx_v_path = ((PyObject*)values[2]);
    __pyx_v_title = ((PyObject*)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init2", 0, 2, 4, __pyx_nargs); __PYX_ERR(17, 76, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(17, 76, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(17, 76, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_edgesA2, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_2generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_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_9_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_9_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 83, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_2generator8, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_2generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_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(17, 83, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 83, __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(17, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 83, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 83, __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(17, 83, __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(17, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 83, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_5generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_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_10_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_10_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 84, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_5generator9, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 84, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_5generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_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(17, 84, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 84, __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(17, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 84, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 84, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 84, __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(17, 84, __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(17, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 84, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_8generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_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_11_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_11_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 88, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_8generator10, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_8generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_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(17, 88, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 88, __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(17, 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(17, 88, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 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(17, 88, __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(17, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 88, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_11generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_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_12_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_12_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 89, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_11generator11, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_11generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_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(17, 89, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 89, __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(17, 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(17, 89, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 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(17, 89, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 89, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_14generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_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_13_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_13_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 93, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_14generator12, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_14generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_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(17, 93, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 93, __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(17, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 93, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 93, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 93, __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(17, 93, __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(17, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 93, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_17generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_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_14_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_14_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 94, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_17generator13, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_17generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_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(17, 94, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 94, __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(17, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 94, __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(17, 94, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 94, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_20generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_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_15_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_15_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 98, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_20generator14, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_20generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_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(17, 98, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 98, __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(17, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 98, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 98, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 98, __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(17, 98, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 98, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_23generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_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_16_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_16_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 99, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_23generator15, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_23generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_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(17, 99, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 99, __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(17, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 99, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 99, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 99, __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(17, 99, __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(17, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 99, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_26generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_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_17_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_17_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 103, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_26generator16, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_26generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_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(17, 103, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 103, __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(17, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 103, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 103, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 103, __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(17, 103, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 103, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_29generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_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_18_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_18_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 104, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_29generator17, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_29generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_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(17, 104, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 104, __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(17, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 104, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 104, __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(17, 104, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 104, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_32generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_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_19_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_19_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 108, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_32generator18, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_32generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_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(17, 108, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 108, __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(17, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 108, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 108, __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(17, 108, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 108, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_35generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_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_20_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_20_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 109, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_35generator19, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_35generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_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(17, 109, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 109, __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(17, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 109, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 109, __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(17, 109, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 109, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_38generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_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_21_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_21_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 113, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_38generator20, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_38generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_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(17, 113, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 113, __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(17, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 113, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 113, __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(17, 113, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 113, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_41generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_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_22_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_22_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 114, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_41generator21, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_41generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_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(17, 114, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 114, __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(17, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 114, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 114, __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(17, 114, __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(17, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 114, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_44generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_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_23_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_23_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 118, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_44generator22, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_44generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_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(17, 118, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 118, __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(17, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 118, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 118, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 118, __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(17, 118, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 118, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_47generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_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_24_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_24_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 119, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_47generator23, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_47generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_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(17, 119, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 119, __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(17, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 119, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 119, __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(17, 119, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 119, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_50generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_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_25_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_25_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 123, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_50generator24, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_50generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_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(17, 123, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 123, __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(17, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 123, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 123, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 123, __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(17, 123, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 123, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_53generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_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_26_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_26_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(17, 124, __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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_53generator25, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(17, 124, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2.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_16BinnedEstimate2D_24_BinnedEstimate2D__init2_53generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_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(17, 124, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(17, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(17, 124, __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(17, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 124, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(17, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 124, __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(17, 124, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 124, __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/generated/BinnedEstimate2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_2generator8 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_5generator9 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_8generator10 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_11generator11 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_14generator12 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_17generator13 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_20generator14 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_23generator15 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_26generator16 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_29generator17 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_32generator18 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_35generator19 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_38generator20 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_41generator21 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_44generator22 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_47generator23 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_50generator24 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_53generator25 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  std::string __pyx_t_8;
  std::string __pyx_t_9;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  std::vector<std::vector<int> >  __pyx_t_14;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_15;
  std::vector<std::vector<std::string> >  __pyx_t_16;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_18;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_19;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_21;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_22;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init2", 1);

  /* "include/generated/BinnedEstimate2D.pyx":77
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         cdef vector[vector[double]] edges_d
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 77, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(17, 77, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 77, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 77, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":78
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA2, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 78, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(17, 78, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 78, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 78, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_3genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 83, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(17, 83, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":85
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 85, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 85, __pyx_L1_error)
    try {
      __pyx_t_10 = new YODA::BinnedEstimate2D<double,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 85, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":86
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 88, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_9genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 89, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":90
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 90, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 90, __pyx_L1_error)
    try {
      __pyx_t_15 = new YODA::BinnedEstimate2D<double,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 90, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":91
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L12_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_12genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 93, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_15genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 94, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":95
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 95, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 95, __pyx_L1_error)
    try {
      __pyx_t_17 = new YODA::BinnedEstimate2D<double,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 95, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":96
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L14_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_18genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 98, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_21genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 99, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":100
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 100, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 100, __pyx_L1_error)
    try {
      __pyx_t_18 = new YODA::BinnedEstimate2D<int,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 100, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":101
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_24genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_27genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(17, 103, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(17, 103, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":105
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 105, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 105, __pyx_L1_error)
    try {
      __pyx_t_19 = new YODA::BinnedEstimate2D<int,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 105, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":106
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L18_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_30genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 108, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_33genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 109, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":110
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 110, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 110, __pyx_L1_error)
    try {
      __pyx_t_20 = new YODA::BinnedEstimate2D<int,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 110, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":111
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L20_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_36genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 113, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_39genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 114, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":115
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 115, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 115, __pyx_L1_error)
    try {
      __pyx_t_21 = new YODA::BinnedEstimate2D<std::string,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 115, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":116
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L22_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_42genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 118, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_45genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 119, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":120
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 120, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 120, __pyx_L1_error)
    try {
      __pyx_t_22 = new YODA::BinnedEstimate2D<std::string,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 120, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":121
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 121, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L24_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedEstimate2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_48genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_51genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(17, 123, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(17, 123, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":125
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 125, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 125, __pyx_L1_error)
    try {
      __pyx_t_23 = new YODA::BinnedEstimate2D<std::string,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 125, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_23); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":126
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedEstimate2D.pyx":128
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(17, 128, __pyx_L1_error)
  }
  __pyx_L7:;

  /* "include/generated/BinnedEstimate2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

  /* 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_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_2generator8);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_5generator9);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_8generator10);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_11generator11);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_14generator12);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_17generator13);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_20generator14);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_23generator15);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_26generator16);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_29generator17);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_32generator18);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_35generator19);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_38generator20);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_41generator21);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_44generator22);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_47generator23);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_50generator24);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate2D_24_BinnedEstimate2D__init2_53generator25);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__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_16BinnedEstimate2D_6__init3, "BinnedEstimate2D.__init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__init3 = {"_BinnedEstimate2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_nbinsY = 0;
  PyObject *__pyx_v_lowerY = 0;
  PyObject *__pyx_v_upperY = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_nbinsY,&__pyx_n_s_lowerY,&__pyx_n_s_upperY,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[7] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, 1); __PYX_ERR(17, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, 2); __PYX_ERR(17, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, 3); __PYX_ERR(17, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, 4); __PYX_ERR(17, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, 5); __PYX_ERR(17, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 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, "_BinnedEstimate2D__init3") < 0)) __PYX_ERR(17, 130, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_nbinsY = values[3];
    __pyx_v_lowerY = values[4];
    __pyx_v_upperY = values[5];
    __pyx_v_path = ((PyObject*)values[6]);
    __pyx_v_title = ((PyObject*)values[7]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init3", 0, 6, 8, __pyx_nargs); __PYX_ERR(17, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(17, 130, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(17, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned 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("_BinnedEstimate2D__init3", 1);

  /* "include/generated/BinnedEstimate2D.pyx":132
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(17, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedEstimate2D.pyx":133
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/generated/BinnedEstimate2D.pyx":131
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 */
  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(17, 131, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(17, 131, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":135
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedEstimate2D other):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate2D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_edges, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_1, __pyx_t_5, __pyx_v_path, __pyx_v_title};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__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_16BinnedEstimate2D_8__init4, "BinnedEstimate2D.__init4(self, BinnedEstimate2D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__init4 = {"_BinnedEstimate2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 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, "_BinnedEstimate2D__init4") < 0)) __PYX_ERR(17, 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_other = ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate2D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init4", __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_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 137, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  unsigned int __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate2D__init4", 1);

  /* "include/generated/BinnedEstimate2D.pyx":138
 * 
 *     def __init4(self, BinnedEstimate2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":139
 *     def __init4(self, BinnedEstimate2D other):
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 139, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":138
 * 
 *     def __init4(self, BinnedEstimate2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":141
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 141, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 141, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":143
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 143, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 143, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":145
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 145, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 145, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 146, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":147
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 147, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 147, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":149
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 149, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 149, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":151
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 151, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 151, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 152, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":153
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,string]*> other.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 153, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 153, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 154, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":155
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,string]*> other.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 155, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 155, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":156
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(17, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_Binning); if (unlikely(!__pyx_t_23)) __PYX_ERR(17, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_24 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_v_other->_binning};
    __pyx_t_22 = __Pyx_PyObject_FastCall(__pyx_t_23, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
    if (unlikely(!__pyx_t_22)) __PYX_ERR(17, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  }
  __pyx_t_23 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_t_22};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 */

  /* 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_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._BinnedEstimate2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":159
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 159, __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/generated/BinnedEstimate2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedEstimate2D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":162
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(17, 162, __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(17, 162, __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(17, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(17, 162, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(17, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(17, 162, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(17, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(17, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(17, 162, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 162, __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/BinnedEstimate2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedEstimate2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_14_set_config, "BinnedEstimate2D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<double>  __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  std::vector<double>  __pyx_t_14;
  std::vector<int>  __pyx_t_15;
  std::vector<double>  __pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  std::vector<int>  __pyx_t_18;
  std::vector<double>  __pyx_t_19;
  std::vector<int>  __pyx_t_20;
  std::vector<int>  __pyx_t_21;
  std::vector<int>  __pyx_t_22;
  std::vector<std::string>  __pyx_t_23;
  std::vector<std::string>  __pyx_t_24;
  std::vector<double>  __pyx_t_25;
  std::vector<std::string>  __pyx_t_26;
  std::vector<int>  __pyx_t_27;
  std::vector<std::string>  __pyx_t_28;
  std::vector<std::string>  __pyx_t_29;
  unsigned int __pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedEstimate2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(17, 165, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":166
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(17, 167, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":168
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(17, 168, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(17, 168, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(17, 169, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":170
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":172
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedEstimate2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 174, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 174, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 174, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_dd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 174, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":175
 *           try:
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 175, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(17, 175, __pyx_L9_error)

          /* "include/generated/BinnedEstimate2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":177
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 177, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 177, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 177, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":178
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 178, __pyx_L9_error)
        try {
          __pyx_t_12 = ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 178, __pyx_L9_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 178, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":176
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(17, 176, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(17, 176, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":180
 *               (<c.BinnedEstimate2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "dd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dd);
        __Pyx_GIVEREF(__pyx_n_s_dd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dd;

        /* "include/generated/BinnedEstimate2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":181
 *             ])
 *             self._config = "dd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 183, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 183, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 183, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_di, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 183, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":184
 *           try:
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 184, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(17, 184, __pyx_L16_error)

          /* "include/generated/BinnedEstimate2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":186
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 186, __pyx_L16_error)
        try {
          __pyx_t_14 = ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 186, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 186, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":187
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "di"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 187, __pyx_L16_error)
        try {
          __pyx_t_15 = ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 187, __pyx_L16_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 187, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":185
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(17, 185, __pyx_L16_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(17, 185, __pyx_L16_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":189
 *               (<c.BinnedEstimate2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "di"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_di);
        __Pyx_GIVEREF(__pyx_n_s_di);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_di;

        /* "include/generated/BinnedEstimate2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":190
 *             ])
 *             self._config = "di"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 192, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 192, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 192, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ds, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 192, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":193
 *           try:
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 193, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(17, 193, __pyx_L23_error)

          /* "include/generated/BinnedEstimate2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":195
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 195, __pyx_L23_error)
        try {
          __pyx_t_16 = ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 195, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_double(__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 195, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":196
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ds"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 196, __pyx_L23_error)
        try {
          __pyx_t_17 = ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 196, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 196, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":194
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(17, 194, __pyx_L23_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(17, 194, __pyx_L23_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":198
 *               (<c.BinnedEstimate2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ds"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ds);
        __Pyx_GIVEREF(__pyx_n_s_ds);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ds;

        /* "include/generated/BinnedEstimate2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":199
 *             ])
 *             self._config = "ds"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 201, __pyx_L30_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 201, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 201, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_id, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 201, __pyx_L30_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":202
 *           try:
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 202, __pyx_L30_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(17, 202, __pyx_L30_error)

          /* "include/generated/BinnedEstimate2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":204
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 204, __pyx_L30_error)
        try {
          __pyx_t_18 = ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 204, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 204, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":205
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "id"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 205, __pyx_L30_error)
        try {
          __pyx_t_19 = ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 205, __pyx_L30_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 205, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":203
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(17, 203, __pyx_L30_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(17, 203, __pyx_L30_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":207
 *               (<c.BinnedEstimate2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "id"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_id);
        __Pyx_GIVEREF(__pyx_n_s_id);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_id;

        /* "include/generated/BinnedEstimate2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L35_try_end;
      __pyx_L30_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":208
 *             ])
 *             self._config = "id"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L31_exception_handled;
      }
      __pyx_L31_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L35_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 210, __pyx_L37_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 210, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 210, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_ii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 210, __pyx_L37_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":211
 *           try:
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 211, __pyx_L37_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(17, 211, __pyx_L37_error)

          /* "include/generated/BinnedEstimate2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":213
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 213, __pyx_L37_error)
        try {
          __pyx_t_20 = ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 213, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 213, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":214
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 214, __pyx_L37_error)
        try {
          __pyx_t_21 = ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 214, __pyx_L37_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_21); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 214, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":212
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(17, 212, __pyx_L37_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(17, 212, __pyx_L37_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":216
 *               (<c.BinnedEstimate2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ii);
        __Pyx_GIVEREF(__pyx_n_s_ii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ii;

        /* "include/generated/BinnedEstimate2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L42_try_end;
      __pyx_L37_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":217
 *             ])
 *             self._config = "ii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L38_exception_handled;
      }
      __pyx_L38_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L42_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 219, __pyx_L44_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 219, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 219, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_is, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 219, __pyx_L44_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":220
 *           try:
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 220, __pyx_L44_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(17, 220, __pyx_L44_error)

          /* "include/generated/BinnedEstimate2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":222
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 222, __pyx_L44_error)
        try {
          __pyx_t_22 = ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 222, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 222, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":223
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "is"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 223, __pyx_L44_error)
        try {
          __pyx_t_23 = ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 223, __pyx_L44_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 223, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":221
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(17, 221, __pyx_L44_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(17, 221, __pyx_L44_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":225
 *               (<c.BinnedEstimate2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "is"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_is);
        __Pyx_GIVEREF(__pyx_n_s_is);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_is;

        /* "include/generated/BinnedEstimate2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L49_try_end;
      __pyx_L44_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":226
 *             ])
 *             self._config = "is"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L45_exception_handled;
      }
      __pyx_L45_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L49_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 228, __pyx_L51_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 228, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 228, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_sd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 228, __pyx_L51_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":229
 *           try:
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 229, __pyx_L51_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(17, 229, __pyx_L51_error)

          /* "include/generated/BinnedEstimate2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":231
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 231, __pyx_L51_error)
        try {
          __pyx_t_24 = ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 231, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 231, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":232
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 232, __pyx_L51_error)
        try {
          __pyx_t_25 = ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 232, __pyx_L51_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 232, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":230
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(17, 230, __pyx_L51_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(17, 230, __pyx_L51_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":234
 *               (<c.BinnedEstimate2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "sd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sd);
        __Pyx_GIVEREF(__pyx_n_s_sd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sd;

        /* "include/generated/BinnedEstimate2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L56_try_end;
      __pyx_L51_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":235
 *             ])
 *             self._config = "sd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L52_exception_handled;
      }
      __pyx_L52_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L56_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 237, __pyx_L58_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 237, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 237, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_si, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 237, __pyx_L58_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":238
 *           try:
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 238, __pyx_L58_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(17, 238, __pyx_L58_error)

          /* "include/generated/BinnedEstimate2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":240
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 240, __pyx_L58_error)
        try {
          __pyx_t_26 = ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 240, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 240, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate2D.pyx":241
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "si"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 241, __pyx_L58_error)
        try {
          __pyx_t_27 = ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 241, __pyx_L58_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_27); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 241, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":239
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(17, 239, __pyx_L58_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(17, 239, __pyx_L58_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":243
 *               (<c.BinnedEstimate2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "si"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_si);
        __Pyx_GIVEREF(__pyx_n_s_si);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_si;

        /* "include/generated/BinnedEstimate2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L63_try_end;
      __pyx_L58_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":244
 *             ])
 *             self._config = "si"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L59_exception_handled;
      }
      __pyx_L59_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L63_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 246, __pyx_L65_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 246, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 246, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 246, __pyx_L65_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate2D.pyx":247
 *           try:
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 247, __pyx_L65_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(17, 247, __pyx_L65_error)

          /* "include/generated/BinnedEstimate2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate2D.pyx":249
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 249, __pyx_L65_error)
        try {
          __pyx_t_28 = ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 249, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_28); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 249, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedEstimate2D.pyx":250
 *             edges = tuple([
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(17, 250, __pyx_L65_error)
        try {
          __pyx_t_29 = ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(17, 250, __pyx_L65_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 250, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate2D.pyx":248
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(17, 248, __pyx_L65_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(17, 248, __pyx_L65_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate2D.pyx":252
 *               (<c.BinnedEstimate2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_ss);
        __Pyx_GIVEREF(__pyx_n_s_ss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ss;

        /* "include/generated/BinnedEstimate2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L70_try_end;
      __pyx_L65_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":253
 *             ])
 *             self._config = "ss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L66_exception_handled;
      }
      __pyx_L66_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L70_try_end:;
    }

    /* "include/generated/BinnedEstimate2D.pyx":254
 *             self._config = "ss"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(17, 254, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(17, 255, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_13 = NULL;
  __pyx_t_30 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_30 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(17, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L73_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":256
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_30 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_30 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(17, 256, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_13);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate2D.
 *         Clone this BinnedEstimate2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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_16BinnedEstimate2D_16clone, "BinnedEstimate2D.clone(self)\n() -> BinnedEstimate2D.\n        Clone this BinnedEstimate2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_16clone};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_16clone(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedEstimate2D.pyx":261
 *         """() -> BinnedEstimate2D.
 *         Clone this BinnedEstimate2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":262
 *         Clone this BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":263
 *         rtn = None
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 263, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 263, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":262
 *         Clone this BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":265
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 265, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 265, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 266, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":267
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 267, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":269
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 269, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 269, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 270, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":271
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 271, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 271, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 272, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":273
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 273, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 274, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":275
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 275, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 275, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 276, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":277
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 277, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 277, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 278, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":279
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 279, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 279, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), ((YODA::BinnedEstimate2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":281
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(17, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_22, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 2+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, <c.BinnedEstimate2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedEstimate2D.pyx":283
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(17, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedEstimate2D.pyx":284
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate2D.
 *         Clone this BinnedEstimate2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.clone", __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/generated/BinnedEstimate2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex, "BinnedEstimate2D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedEstimate2D.pyx":289
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(17, 289, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 289, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 289, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":291
 *         assert(len(indices) == 2) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 291, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(17, 291, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(17, 291, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 292, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":293
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 293, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 293, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 294, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":295
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 295, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 295, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 296, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":297
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 297, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 297, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 298, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":299
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 299, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 299, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 300, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":301
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 301, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 301, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 302, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":303
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 303, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 303, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 304, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":305
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 305, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 305, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 306, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":307
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 307, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 307, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(17, 308, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":309
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 309, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 309, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":310
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 310, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

  /* 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.BinnedEstimate2D.localToGlobalIndex", __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/generated/BinnedEstimate2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_20_global_set, "BinnedEstimate2D._global_set(self, size_t idx, Estimate cont)\nint, Estimate -> void.\n        Set a Estimate at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 313, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 313, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(17, 313, __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, "_global_set") < 0)) __PYX_ERR(17, 313, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 313, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(17, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(17, 313, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::Estimate *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedEstimate2D.pyx":316
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":317
 *         Set a Estimate at bin position idx."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 317, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 317, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 317, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":316
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":319
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 319, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 319, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 319, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":321
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 321, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 321, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 321, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 322, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":323
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 323, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 323, __pyx_L1_error)
    try {
      __pyx_t_7->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 323, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 324, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":325
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 325, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 325, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 325, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":327
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 327, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 327, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 327, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":329
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 329, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 329, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 329, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":331
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 331, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 331, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 331, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":333
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 333, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 333, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 333, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":334
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 334, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

  /* 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.BinnedEstimate2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_22_local_set, "BinnedEstimate2D._local_set(self, indices, Estimate cont)\nvector[int], Estimate -> void.\n        Set a Estimate at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 338, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 338, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(17, 338, __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, "_local_set") < 0)) __PYX_ERR(17, 338, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(17, 338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(17, 338, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Estimate *__pyx_t_7;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedEstimate2D.pyx":341
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":342
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 342, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 342, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 342, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":341
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":344
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 344, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 344, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 344, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":346
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 346, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 346, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 346, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":348
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 348, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 348, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 348, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 348, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":350
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 350, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 350, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 350, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 350, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":352
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 352, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 352, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 352, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":354
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 354, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 354, __pyx_L1_error)
    try {
      __pyx_t_13->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 354, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":356
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 356, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 356, __pyx_L1_error)
    try {
      __pyx_t_14->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 356, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":358
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 358, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 358, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(17, 358, __pyx_L1_error)
    try {
      __pyx_t_15->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 358, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":359
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 359, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

  /* 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.BinnedEstimate2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_24set, "BinnedEstimate2D.set(self, *args)\nSet bin with Estimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_24set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_24set(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedEstimate2D.pyx":364
 *     def set(self, *args):
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(17, 364, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 364, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 364, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":365
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate2D.pyx":366
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 366, __pyx_L1_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/generated/BinnedEstimate2D.pyx":365
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":368
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 368, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedEstimate2D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_26reset, "BinnedEstimate2D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_26reset};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_26reset(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_4;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_5;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_6;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedEstimate2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":373
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 373, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 373, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":375
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 375, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 375, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":377
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 377, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 377, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 378, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":379
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 379, __pyx_L1_error)
    try {
      __pyx_t_6->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 379, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 380, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":381
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 381, __pyx_L1_error)
    try {
      __pyx_t_7->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 381, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 382, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":383
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 383, __pyx_L1_error)
    try {
      __pyx_t_8->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 383, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 384, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":385
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 385, __pyx_L1_error)
    try {
      __pyx_t_9->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 385, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":387
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 387, __pyx_L1_error)
    try {
      __pyx_t_10->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 387, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 388, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":389
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 389, __pyx_L1_error)
    try {
      __pyx_t_11->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 389, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":390
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 390, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_28numBins, "BinnedEstimate2D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedEstimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 394, __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, "numBins") < 0)) __PYX_ERR(17, 394, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(17, 394, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedEstimate2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 397, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":398
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 398, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 398, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 398, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 398, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":400
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 400, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 400, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 400, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 400, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":402
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 402, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 402, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 402, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":404
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 404, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 404, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 404, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":406
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 406, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 406, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 406, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":408
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 408, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 408, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 408, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":410
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 410, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 410, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 410, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":412
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 412, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 412, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 412, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":414
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 414, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 414, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 414, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 414, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":415
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 415, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

  /* 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.BinnedEstimate2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_30isMasked, "BinnedEstimate2D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 418, __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, "isMasked") < 0)) __PYX_ERR(17, 418, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedEstimate2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":421
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 421, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 421, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 421, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 422, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":423
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 423, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 423, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 423, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 424, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":425
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 425, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 425, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 425, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":427
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 427, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 427, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":429
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 429, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 429, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 429, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":431
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 431, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 431, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 431, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":433
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 433, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 433, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 433, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 434, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":435
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 435, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 435, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 435, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":437
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 437, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 437, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 437, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":438
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 438, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_32isVisible, "BinnedEstimate2D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 441, __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, "isVisible") < 0)) __PYX_ERR(17, 441, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 441, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedEstimate2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 443, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":444
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 444, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 444, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 444, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 445, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":446
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 446, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 446, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 446, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 447, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":448
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 448, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 448, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 448, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 449, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":450
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 450, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 450, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 450, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":452
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 452, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":454
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 454, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 455, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":456
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 456, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 456, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 456, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 457, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":458
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 458, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 458, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":460
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 460, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 460, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 460, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":461
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 461, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_34binDim, "BinnedEstimate2D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedEstimate2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 466, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":467
 *         """Return binning dimension."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 467, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 467, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 468, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":469
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 469, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 469, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":471
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 471, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 471, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":473
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 473, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 473, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 474, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":475
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 475, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 475, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":477
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 477, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 477, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 478, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":479
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 479, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 479, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 480, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":481
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 481, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 481, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":483
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 483, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 483, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":484
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 484, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":488
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 488, __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(17, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedEstimate2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_38bins, "BinnedEstimate2D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_38bins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 490, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 490, __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, "bins") < 0)) __PYX_ERR(17, 490, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(17, 490, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_38bins(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedEstimate2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(17, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 492, __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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 492, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(17, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(17, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(17, 492, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(17, 493, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(17, 493, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedEstimate2D.pyx":494
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(17, 494, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(17, 494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedEstimate2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedEstimate2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 492, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(17, 492, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedEstimate2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(17, 492, __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/generated/BinnedEstimate2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.bins", __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/generated/BinnedEstimate2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_40_bin, "BinnedEstimate2D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 496, __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(17, 496, __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(17, 496, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 496, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_17;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_18;
  std::vector<size_t>  __pyx_t_19;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_20;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_21;
  std::vector<size_t>  __pyx_t_22;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_23;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_24;
  std::vector<size_t>  __pyx_t_25;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_26;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_27;
  std::vector<size_t>  __pyx_t_28;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_29;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_30;
  std::vector<size_t>  __pyx_t_31;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_32;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_33;
  std::vector<size_t>  __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedEstimate2D.pyx":498
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin2D(Estimate)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":499
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin2D(Estimate)
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(17, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":500
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin2D(Estimate)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin2D(((PyObject *)__pyx_ptype_4yoda_4core_Estimate)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Estimate)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 501, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":502
 *         b = Bin2D(Estimate)
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 502, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 502, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":503
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 503, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 503, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(17, 503, __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/generated/BinnedEstimate2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Estimate)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 504, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":505
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 505, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 505, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":506
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 506, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 506, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 506, __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/generated/BinnedEstimate2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 507, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":508
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 508, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 508, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":509
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 509, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 509, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(17, 509, __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/generated/BinnedEstimate2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 510, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":511
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 511, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 511, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_18), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":512
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 512, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_17->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 512, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_19); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 512, __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/generated/BinnedEstimate2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 513, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":514
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 514, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 514, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_21), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":515
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 515, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_20->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 515, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(17, 515, __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/generated/BinnedEstimate2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 516, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":517
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 517, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 517, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_24), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":518
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 518, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_23->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 518, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_25); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 518, __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/generated/BinnedEstimate2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 519, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":520
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 520, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 520, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_27), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":521
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 521, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_26->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 521, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(17, 521, __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/generated/BinnedEstimate2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 522, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":523
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 523, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 523, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_30), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":524
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 524, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_29->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 524, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_31); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 524, __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/generated/BinnedEstimate2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(17, 525, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate2D.pyx":526
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 526, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 526, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_33), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":527
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 527, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_32->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 527, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(17, 527, __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/generated/BinnedEstimate2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":528
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 528, __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/generated/BinnedEstimate2D.pyx":529
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_42bin, "BinnedEstimate2D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_42bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_42bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedEstimate2D.pyx":533
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(17, 533, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 533, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 533, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":534
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(17, 534, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":535
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(17, 535, __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/generated/BinnedEstimate2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedEstimate2D.bin", __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;
}

/* "include/generated/BinnedEstimate2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_44binAt, "BinnedEstimate2D.binAt(self, x, y)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 537, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 537, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, 1); __PYX_ERR(17, 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, "binAt") < 0)) __PYX_ERR(17, 537, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(17, 537, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedEstimate2D.pyx":539
 *     def binAt(self, x, y):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(17, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(17, 539, __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
  if (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;
    }
  }
  #endif
  {
    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(17, 539, __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/generated/BinnedEstimate2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_46maskBin, "BinnedEstimate2D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 541, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 541, __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, "maskBin") < 0)) __PYX_ERR(17, 541, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(17, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedEstimate2D<double,double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedEstimate2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":544
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 544, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":546
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 546, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 546, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 546, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 546, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 547, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":548
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 548, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 548, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 548, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 548, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 549, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":550
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 550, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 550, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 550, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 550, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 551, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":552
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 552, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 552, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 552, __pyx_L1_error)
    try {
      __pyx_t_10->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 552, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 553, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":554
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 554, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 554, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 554, __pyx_L1_error)
    try {
      __pyx_t_11->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 554, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 555, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":556
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 556, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 556, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 556, __pyx_L1_error)
    try {
      __pyx_t_12->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 556, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 557, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":558
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 558, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 558, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 558, __pyx_L1_error)
    try {
      __pyx_t_13->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 558, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 559, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":560
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 560, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 560, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 560, __pyx_L1_error)
    try {
      __pyx_t_14->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 560, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 561, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":562
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 562, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 562, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 562, __pyx_L1_error)
    try {
      __pyx_t_15->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 562, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedEstimate2D.maskBin", __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;
}

/* "include/generated/BinnedEstimate2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_48maskBins, "BinnedEstimate2D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 564, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 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, "maskBins") < 0)) __PYX_ERR(17, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(17, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedEstimate2D.pyx":566
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(17, 566, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 566, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 566, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 567, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(17, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(17, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(17, 567, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":568
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, y, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.maskBins", __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;
}

/* "include/generated/BinnedEstimate2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_50maskBinAt, "BinnedEstimate2D.maskBinAt(self, x, y, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 570, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 570, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, 1); __PYX_ERR(17, 570, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 570, __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, "maskBinAt") < 0)) __PYX_ERR(17, 570, __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_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, __pyx_nargs); __PYX_ERR(17, 570, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedEstimate2D.pyx":572
 *     def maskBinAt(self, x, y, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(17, 572, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(17, 572, __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/generated/BinnedEstimate2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

  /* 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.BinnedEstimate2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_52maskSlice, "BinnedEstimate2D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 574, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 574, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(17, 574, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 574, __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, "maskSlice") < 0)) __PYX_ERR(17, 574, __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_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(17, 574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedEstimate2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":577
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 577, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 577, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 577, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(17, 577, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":579
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 579, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 579, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 579, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 579, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 579, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":581
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 581, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 581, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 581, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 581, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(17, 581, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 582, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":583
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 583, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 583, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 583, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 583, __pyx_L1_error)
    try {
      __pyx_t_9->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 583, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 584, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":585
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 585, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 585, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 585, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 585, __pyx_L1_error)
    try {
      __pyx_t_10->maskSlice(__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(17, 585, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 586, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":587
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 587, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 587, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 587, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 587, __pyx_L1_error)
    try {
      __pyx_t_11->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 587, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 588, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":589
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 589, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 589, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 589, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 589, __pyx_L1_error)
    try {
      __pyx_t_12->maskSlice(__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(17, 589, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":591
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 591, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 591, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 591, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 591, __pyx_L1_error)
    try {
      __pyx_t_13->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 591, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 592, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":593
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 593, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 593, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 593, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 593, __pyx_L1_error)
    try {
      __pyx_t_14->maskSlice(__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(17, 593, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":596
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 596, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(17, 596, __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(17, 596, __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(17, 596, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedEstimate2D.pyx":597
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 597, __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/generated/BinnedEstimate2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":600
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_56mkScatter, "BinnedEstimate2D.mkScatter(self, path='', pat_match='', includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter3D.\n\n        Make a new Scatter3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_57mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_56mkScatter};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_pat_match = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_pat_match,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 600, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_match);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 600, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 600, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 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, "mkScatter") < 0)) __PYX_ERR(17, 600, __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_path = values[0];
    __pyx_v_pat_match = values[1];
    __pyx_v_includeOverflows = values[2];
    __pyx_v_includeMaskedBins = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 4, __pyx_nargs); __PYX_ERR(17, 600, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_56mkScatter(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_path, __pyx_v_pat_match, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter3D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  YODA::Scatter3D __pyx_t_7;
  YODA::Scatter3D *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedEstimate2D.pyx":604
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":605
 *         Make a new Scatter3D."""
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 605, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 605, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 605, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 605, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 605, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 605, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":606
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 606, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":604
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":607
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 607, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":608
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 608, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 608, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 608, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 608, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 608, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_10->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 608, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":609
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 609, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":607
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":610
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 610, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":611
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 611, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 611, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 611, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 611, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 611, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 611, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":612
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 612, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":610
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":613
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":614
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 614, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 614, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 614, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 614, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 614, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_12->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 614, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":615
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 615, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":613
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":616
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 616, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":617
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 617, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 617, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 617, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 617, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 617, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_13->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 617, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":618
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 618, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":616
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":619
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 619, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":620
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 620, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 620, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 620, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 620, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 620, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_14->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 620, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":621
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 621, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":619
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":622
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":623
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 623, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 623, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 623, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 623, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 623, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_15->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 623, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":624
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 624, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":622
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":625
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 625, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":626
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 626, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 626, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 626, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 626, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 626, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_16->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 626, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":627
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 627, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":625
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":628
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 628, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":629
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 629, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 629, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 629, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 629, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 629, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_17->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 629, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":630
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedEstimate2D self, BinnedEstimate2D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 630, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":628
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":600
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

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

/* "include/generated/BinnedEstimate2D.pyx":632
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate2D self, BinnedEstimate2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate2D -> BinnedEstimate2D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_59divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_58divideBy, "BinnedEstimate2D.divideBy(self, BinnedEstimate2D other, efficiency=False)\nBinnedEstimate2D -> BinnedEstimate2D\n\n        Divide this BinnedEstimate2D by other,\n        returning a BinnedEstimate2D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_59divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_58divideBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_59divideBy(PyObject *__pyx_v_self, 
#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_BinnedEstimate2D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 632, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 632, __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(17, 632, __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_BinnedEstimate2D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(17, 632, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.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_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 632, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_58divideBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedEstimate2D.pyx":638
 *         returning a BinnedEstimate2D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 638, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 638, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 638, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":639
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "dd":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":640
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 640, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":641
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 641, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":642
 *         if efficiency:
 *           if self._config == "dd":
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 642, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 642, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedEstimate2D.pyx":643
 *           if self._config == "dd":
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":641
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":644
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 644, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":645
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 645, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 645, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedEstimate2D.pyx":646
 *           elif self._config == "di":
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 646, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":644
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":647
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 647, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":648
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 648, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 648, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedEstimate2D.pyx":649
 *           elif self._config == "ds":
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":647
 *             tmp = c.BE_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":650
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 650, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":651
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 651, __pyx_L1_error)
      __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 651, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_9, __pyx_t_10);

      /* "include/generated/BinnedEstimate2D.pyx":652
 *           elif self._config == "id":
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 652, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":650
 *             tmp = c.BE_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":653
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 653, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":654
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 654, __pyx_L1_error)
      __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 654, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_11, __pyx_t_12);

      /* "include/generated/BinnedEstimate2D.pyx":655
 *           elif self._config == "ii":
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 655, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":653
 *             tmp = c.BE_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":656
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 656, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":657
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 657, __pyx_L1_error)
      __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 657, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_13, __pyx_t_14);

      /* "include/generated/BinnedEstimate2D.pyx":658
 *           elif self._config == "is":
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":656
 *             tmp = c.BE_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":659
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 659, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":660
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 660, __pyx_L1_error)
      __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 660, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_15, __pyx_t_16);

      /* "include/generated/BinnedEstimate2D.pyx":661
 *           elif self._config == "sd":
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 661, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":659
 *             tmp = c.BE_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":662
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 662, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":663
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 663, __pyx_L1_error)
      __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 663, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_17, __pyx_t_18);

      /* "include/generated/BinnedEstimate2D.pyx":664
 *           elif self._config == "si":
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BE_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 664, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":662
 *             tmp = c.BE_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate2D.pyx":665
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 665, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":666
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BE_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 */
      __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 666, __pyx_L1_error)
      __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 666, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_19, __pyx_t_20);

      /* "include/generated/BinnedEstimate2D.pyx":667
 *           elif self._config == "ss":
 *             tmp = c.BE_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "dd":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 667, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":665
 *             tmp = c.BE_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedEstimate2D.pyx":640
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BE_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":669
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 669, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":670
 *         else:
 *           if self._config == "dd":
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 670, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 670, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedEstimate2D.pyx":671
 *           if self._config == "dd":
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 671, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":669
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":672
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 672, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":673
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 673, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 673, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedEstimate2D.pyx":674
 *           elif self._config == "di":
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 674, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":672
 *             tmp = c.BE_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":675
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 675, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":676
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 676, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 676, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedEstimate2D.pyx":677
 *           elif self._config == "ds":
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":675
 *             tmp = c.BE_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":678
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 678, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":679
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 679, __pyx_L1_error)
      __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 679, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_10, __pyx_t_9);

      /* "include/generated/BinnedEstimate2D.pyx":680
 *           elif self._config == "id":
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 680, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":678
 *             tmp = c.BE_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":681
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 681, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":682
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 682, __pyx_L1_error)
      __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 682, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_12, __pyx_t_11);

      /* "include/generated/BinnedEstimate2D.pyx":683
 *           elif self._config == "ii":
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 683, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":681
 *             tmp = c.BE_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":684
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 684, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":685
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 685, __pyx_L1_error)
      __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 685, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_14, __pyx_t_13);

      /* "include/generated/BinnedEstimate2D.pyx":686
 *           elif self._config == "is":
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 686, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":684
 *             tmp = c.BE_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":687
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 687, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":688
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 688, __pyx_L1_error)
      __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 688, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_16, __pyx_t_15);

      /* "include/generated/BinnedEstimate2D.pyx":689
 *           elif self._config == "sd":
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":687
 *             tmp = c.BE_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":690
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 690, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":691
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 691, __pyx_L1_error)
      __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 691, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_18, __pyx_t_17);

      /* "include/generated/BinnedEstimate2D.pyx":692
 *           elif self._config == "si":
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":690
 *             tmp = c.BE_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate2D.pyx":693
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 693, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate2D.pyx":694
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 694, __pyx_L1_error)
      __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 694, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_20, __pyx_t_19);

      /* "include/generated/BinnedEstimate2D.pyx":695
 *           elif self._config == "ss":
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":693
 *             tmp = c.BE_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":696
 *             tmp = c.BE_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(17, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_22 = NULL;
  __pyx_t_23 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_22)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_22);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_23 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 696, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":697
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":632
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate2D self, BinnedEstimate2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate2D -> BinnedEstimate2D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.divideBy", __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/generated/BinnedEstimate2D.pyx":699
 *         return rtn
 * 
 *     def __div__(BinnedEstimate2D self, BinnedEstimate2D 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_16BinnedEstimate2D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 699, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_60__div__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":700
 * 
 *     def __div__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedEstimate2D self, BinnedEstimate2D 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(17, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(17, 700, __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/generated/BinnedEstimate2D.pyx":699
 *         return rtn
 * 
 *     def __div__(BinnedEstimate2D self, BinnedEstimate2D 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.BinnedEstimate2D.__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/generated/BinnedEstimate2D.pyx":702
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 702, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_62__truediv__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":703
 * 
 *     def __truediv__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(17, 703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(17, 703, __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/generated/BinnedEstimate2D.pyx":702
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate2D self, BinnedEstimate2D 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.BinnedEstimate2D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":705
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_65_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_16BinnedEstimate2D_64_mknp, "BinnedEstimate2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_65_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_64_mknp};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_65_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 705, __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(17, 705, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 705, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_64_mknp(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedEstimate2D.pyx":706
 * 
 *     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/generated/BinnedEstimate2D.pyx":707
 *     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(17, 707, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate2D.pyx":708
 *         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(17, 708, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(17, 708, __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/generated/BinnedEstimate2D.pyx":706
 * 
 *     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/generated/BinnedEstimate2D.pyx":709
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedEstimate2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(17, 709, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedEstimate2D.pyx":710
 *             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/generated/BinnedEstimate2D.pyx":706
 * 
 *     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/generated/BinnedEstimate2D.pyx":705
 *         return self.divideBy(other)
 * 
 *     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.BinnedEstimate2D._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/generated/BinnedEstimate2D.pyx":713
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_66lengthContent, "BinnedEstimate2D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_67lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_66lengthContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 713, __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, "lengthContent") < 0)) __PYX_ERR(17, 713, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 713, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_66lengthContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedEstimate2D.pyx":715
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 715, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":716
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 716, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 716, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 716, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 716, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":715
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":717
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 717, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":718
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 718, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 718, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 718, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":717
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":719
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 719, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":720
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 720, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 720, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 720, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":719
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":721
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 721, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":722
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 722, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 722, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 722, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":721
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":723
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 723, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":724
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 724, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 724, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 724, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":723
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":725
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 725, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":726
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 726, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 726, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 726, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":725
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":727
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 727, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":728
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 728, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 728, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 728, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":727
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":729
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 729, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":730
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 730, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 730, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 730, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 730, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":729
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":731
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 731, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":732
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 732, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 732, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 732, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":731
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":733
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 733, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":713
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":735
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_68serializeContent, "BinnedEstimate2D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_69serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_68serializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 735, __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, "serializeContent") < 0)) __PYX_ERR(17, 735, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 735, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_68serializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedEstimate2D.pyx":737
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 737, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":738
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 738, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 738, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 738, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 738, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":737
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":739
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 739, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":740
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 740, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 740, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 740, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 740, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":739
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":741
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 741, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":742
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 742, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 742, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 742, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 742, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":741
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":743
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 743, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":744
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 744, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 744, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 744, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":743
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":745
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 745, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":746
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 746, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 746, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 746, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":745
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":747
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 747, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":748
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 748, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 748, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 748, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 748, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":747
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":749
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":750
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 750, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 750, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 750, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":749
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":751
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 751, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":752
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 752, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 752, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 752, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":751
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":753
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 753, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":754
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 754, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 754, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 754, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":753
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":755
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 755, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":735
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":757
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_70deserializeContent, "BinnedEstimate2D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_71deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_70deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 757, __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, "deserializeContent") < 0)) __PYX_ERR(17, 757, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 757, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_70deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedEstimate2D.pyx":760
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 760, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 760, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(17, 760, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 760, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 760, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(17, 760, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 760, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(17, 760, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(17, 760, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 760, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate2D.pyx":761
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 761, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":762
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 762, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 762, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 762, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":761
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":763
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 763, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":764
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 764, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 764, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 764, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":763
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":765
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 765, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":766
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 766, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 766, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 766, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":765
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":767
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 767, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":768
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 768, __pyx_L1_error)
    __pyx_t_15 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 768, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeContent(__pyx_t_15);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 768, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":767
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":769
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 769, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":770
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 770, __pyx_L1_error)
    __pyx_t_17 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 770, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeContent(__pyx_t_17);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 770, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":769
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":771
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 771, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":772
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 772, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 772, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeContent(__pyx_t_19);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 772, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":771
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":773
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 773, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":774
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 774, __pyx_L1_error)
    __pyx_t_21 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 774, __pyx_L1_error)
    try {
      __pyx_t_20->deserializeContent(__pyx_t_21);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 774, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":773
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":775
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 775, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":776
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 776, __pyx_L1_error)
    __pyx_t_23 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 776, __pyx_L1_error)
    try {
      __pyx_t_22->deserializeContent(__pyx_t_23);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 776, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":775
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":777
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 777, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":778
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 778, __pyx_L1_error)
    __pyx_t_25 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 778, __pyx_L1_error)
    try {
      __pyx_t_24->deserializeContent(__pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 778, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":777
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":779
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 779, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":757
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":781
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_72lengthMeta, "BinnedEstimate2D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_73lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_72lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 781, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 781, __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, "lengthMeta") < 0)) __PYX_ERR(17, 781, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(17, 781, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_72lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedEstimate2D.pyx":783
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 783, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":784
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 784, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 784, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 784, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 784, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":783
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":785
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 785, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":786
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 786, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 786, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 786, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 786, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":785
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":787
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 787, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":788
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 788, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 788, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 788, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 788, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":787
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":789
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 789, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":790
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 790, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 790, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 790, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 790, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":789
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":791
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 791, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":792
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 792, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 792, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 792, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 792, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":791
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":793
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 793, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":794
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 794, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 794, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 794, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 794, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":793
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":795
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 795, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":796
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 796, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 796, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 796, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 796, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":795
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":797
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 797, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":798
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 798, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 798, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 798, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 798, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":797
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":799
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 799, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":800
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 800, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 800, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 800, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 800, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 800, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":799
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":801
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 801, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":781
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":803
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_74serializeMeta, "BinnedEstimate2D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_75serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_74serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 803, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 803, __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, "serializeMeta") < 0)) __PYX_ERR(17, 803, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(17, 803, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_74serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_21;
  std::vector<std::string>  __pyx_t_22;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedEstimate2D.pyx":805
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 805, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":806
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 806, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 806, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 806, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 806, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":805
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":807
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 807, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":808
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 808, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 808, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 808, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 808, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":807
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":809
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 809, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":810
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 810, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 810, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 810, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 810, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":809
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":811
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 811, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":812
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 812, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 812, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 812, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 812, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":811
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":813
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 813, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":814
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 814, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 814, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 814, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 814, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 814, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":813
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":815
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 815, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":816
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 816, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 816, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 816, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 816, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":815
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":817
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 817, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":818
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 818, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 818, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 818, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 818, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 818, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":817
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":819
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 819, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":820
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 820, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 820, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 820, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 820, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 820, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":819
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":821
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 821, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":822
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 822, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 822, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 822, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 822, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_22); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":821
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":823
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 823, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":803
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":825
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_76deserializeMeta, "BinnedEstimate2D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_77deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_76deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 825, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 825, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 825, __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, "deserializeMeta") < 0)) __PYX_ERR(17, 825, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(17, 825, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_76deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_14;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedEstimate2D.pyx":828
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 828, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 828, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(17, 828, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 828, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(17, 828, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(17, 828, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(17, 828, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 828, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate2D.pyx":829
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 829, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":830
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 830, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 830, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 830, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 830, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 830, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":829
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":831
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 831, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":832
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 832, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 832, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 832, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 832, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":831
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":833
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 833, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":834
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 834, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 834, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 834, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 834, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 834, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":833
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":835
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 835, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":836
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 836, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 836, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 836, __pyx_L1_error)
    try {
      __pyx_t_13->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 836, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 836, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":835
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":837
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 837, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":838
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 838, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 838, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 838, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 838, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":837
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":839
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 839, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":840
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 840, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 840, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 840, __pyx_L1_error)
    try {
      __pyx_t_15->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 840, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 840, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":839
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":841
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 841, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":842
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 842, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 842, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 842, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 842, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 842, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":841
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":843
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 843, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":844
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 844, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 844, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 844, __pyx_L1_error)
    try {
      __pyx_t_17->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 844, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":843
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":845
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(17, 845, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate2D.pyx":846
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 846, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 846, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 846, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 846, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 846, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":845
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":847
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 847, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":825
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":850
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_78vals, "BinnedEstimate2D.vals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_79vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_78vals};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("vals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "vals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_78vals(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  unsigned 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("vals", 1);

  /* "include/generated/BinnedEstimate2D.pyx":851
 * 
 *     def vals(self):
 *         return self._mknp([b.val() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=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(17, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 851, __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(17, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(17, 851, __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(17, 851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 851, __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))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 851, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(17, 851, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 851, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(17, 851, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(17, 851, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 851, __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(17, 851, __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_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
      __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(17, 851, __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(17, 851, __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
  if (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;
    }
  }
  #endif
  {
    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(17, 851, __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/generated/BinnedEstimate2D.pyx":850
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() 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.BinnedEstimate2D.vals", __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/generated/BinnedEstimate2D.pyx":853
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_80auc, "BinnedEstimate2D.auc(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_81auc = {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_80auc};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 853, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 853, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 853, __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, "auc") < 0)) __PYX_ERR(17, 853, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("auc", 0, 0, 3, __pyx_nargs); __PYX_ERR(17, 853, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_80auc(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auc", 1);

  /* "include/generated/BinnedEstimate2D.pyx":854
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_areaUnderCurve); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins};
    __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(17, 854, __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/generated/BinnedEstimate2D.pyx":853
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

  /* 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.BinnedEstimate2D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":857
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_82scale, "BinnedEstimate2D.scale(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_83scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_82scale};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 857, __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, "scale") < 0)) __PYX_ERR(17, 857, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 857, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_82scale(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 1);

  /* "include/generated/BinnedEstimate2D.pyx":858
 * 
 *     def scale(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scale(factor)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 858, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":859
 *     def scale(self, factor):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 859, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 859, __pyx_L1_error)
    try {
      __pyx_t_2->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 859, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":858
 * 
 *     def scale(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scale(factor)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":860
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scale(factor)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 860, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":861
 *           return self.binned_dd_ptr().scale(factor)
 *         if self._config == "di":
 *           return self.binned_di_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 861, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 861, __pyx_L1_error)
    try {
      __pyx_t_5->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 861, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":860
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scale(factor)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":862
 *         if self._config == "di":
 *           return self.binned_di_ptr().scale(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scale(factor)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 862, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":863
 *           return self.binned_di_ptr().scale(factor)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 863, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 863, __pyx_L1_error)
    try {
      __pyx_t_6->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 863, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":862
 *         if self._config == "di":
 *           return self.binned_di_ptr().scale(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scale(factor)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":864
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scale(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scale(factor)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 864, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":865
 *           return self.binned_ds_ptr().scale(factor)
 *         if self._config == "id":
 *           return self.binned_id_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 865, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 865, __pyx_L1_error)
    try {
      __pyx_t_7->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 865, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":864
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scale(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scale(factor)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":866
 *         if self._config == "id":
 *           return self.binned_id_ptr().scale(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scale(factor)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 866, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":867
 *           return self.binned_id_ptr().scale(factor)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 867, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 867, __pyx_L1_error)
    try {
      __pyx_t_8->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 867, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 867, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":866
 *         if self._config == "id":
 *           return self.binned_id_ptr().scale(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scale(factor)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":868
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scale(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scale(factor)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 868, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":869
 *           return self.binned_ii_ptr().scale(factor)
 *         if self._config == "is":
 *           return self.binned_is_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 869, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 869, __pyx_L1_error)
    try {
      __pyx_t_9->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 869, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 869, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":868
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scale(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scale(factor)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":870
 *         if self._config == "is":
 *           return self.binned_is_ptr().scale(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scale(factor)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 870, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":871
 *           return self.binned_is_ptr().scale(factor)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 871, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 871, __pyx_L1_error)
    try {
      __pyx_t_10->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 871, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 871, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":870
 *         if self._config == "is":
 *           return self.binned_is_ptr().scale(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scale(factor)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":872
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scale(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scale(factor)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 872, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":873
 *           return self.binned_sd_ptr().scale(factor)
 *         if self._config == "si":
 *           return self.binned_si_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 873, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 873, __pyx_L1_error)
    try {
      __pyx_t_11->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 873, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 873, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":872
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scale(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scale(factor)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":874
 *         if self._config == "si":
 *           return self.binned_si_ptr().scale(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 874, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":875
 *           return self.binned_si_ptr().scale(factor)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 875, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 875, __pyx_L1_error)
    try {
      __pyx_t_12->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 875, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":874
 *         if self._config == "si":
 *           return self.binned_si_ptr().scale(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":876
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def indexAt(self, x, y):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 876, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":857
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 */

  /* 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.BinnedEstimate2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":878
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_84indexAt, "BinnedEstimate2D.indexAt(self, x, y)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_85indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_84indexAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 878, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 878, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, 1); __PYX_ERR(17, 878, __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, "indexAt") < 0)) __PYX_ERR(17, 878, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(17, 878, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_84indexAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  int __pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  std::string __pyx_t_10;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  int __pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_17;
  std::string __pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedEstimate2D.pyx":879
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 879, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":880
 *     def indexAt(self, x, y):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 880, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 880, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 880, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->indexAt(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 880, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":879
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":881
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 881, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":882
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 882, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 882, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 882, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->indexAt(__pyx_t_4, __pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 882, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":881
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":883
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 883, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":884
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 884, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 884, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 884, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->indexAt(__pyx_t_4, __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(17, 884, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":883
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":885
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 885, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":886
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 886, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 886, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 886, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->indexAt(__pyx_t_8, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 886, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":885
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":887
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 887, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":888
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 888, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 888, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 888, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->indexAt(__pyx_t_8, __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 888, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":887
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":889
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 889, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":890
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 890, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 890, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 890, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->indexAt(__pyx_t_13, __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(17, 890, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":889
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":891
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 891, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":892
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 892, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 892, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 892, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_15->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 892, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":891
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":893
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 893, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":894
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 894, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 894, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 894, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_16->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 894, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":893
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":895
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 895, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":896
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 896, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 896, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 896, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_17->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_18));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 896, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":895
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":897
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 897, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":878
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

  /* 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.BinnedEstimate2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":899
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_86maskedBins, "BinnedEstimate2D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_87maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_86maskedBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_86maskedBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  std::vector<size_t>  __pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  std::vector<size_t>  __pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  std::vector<size_t>  __pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  std::vector<size_t>  __pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  std::vector<size_t>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedEstimate2D.pyx":900
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 900, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":901
 *     def maskedBins(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 901, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 901, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 901, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":900
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":902
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 902, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":903
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 903, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 903, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":902
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":904
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 904, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":905
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 905, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 905, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":904
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":906
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 906, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":907
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 907, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 907, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":906
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":908
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 908, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":909
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 909, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 909, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":908
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":910
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 910, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":911
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 911, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 911, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":910
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":912
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 912, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":913
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 913, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 913, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":912
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":914
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 914, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":915
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 915, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 915, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":914
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":916
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 916, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":917
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 917, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 917, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":916
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":918
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sources(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 918, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":899
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

  /* 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.BinnedEstimate2D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":920
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_88sources, "BinnedEstimate2D.sources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_89sources = {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_88sources};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_88sources(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  std::vector<std::string>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  std::vector<std::string>  __pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sources", 1);

  /* "include/generated/BinnedEstimate2D.pyx":921
 * 
 *     def sources(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sources()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 921, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":922
 *     def sources(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 922, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 922, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 922, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":921
 * 
 *     def sources(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sources()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":923
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sources()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 923, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":924
 *           return self.binned_dd_ptr().sources()
 *         if self._config == "di":
 *           return self.binned_di_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 924, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 924, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":923
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sources()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":925
 *         if self._config == "di":
 *           return self.binned_di_ptr().sources()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sources()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 925, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":926
 *           return self.binned_di_ptr().sources()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 926, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 926, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":925
 *         if self._config == "di":
 *           return self.binned_di_ptr().sources()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sources()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":927
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sources()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sources()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 927, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":928
 *           return self.binned_ds_ptr().sources()
 *         if self._config == "id":
 *           return self.binned_id_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 928, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 928, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":927
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sources()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sources()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":929
 *         if self._config == "id":
 *           return self.binned_id_ptr().sources()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sources()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 929, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":930
 *           return self.binned_id_ptr().sources()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 930, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 930, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":929
 *         if self._config == "id":
 *           return self.binned_id_ptr().sources()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sources()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":931
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sources()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sources()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 931, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":932
 *           return self.binned_ii_ptr().sources()
 *         if self._config == "is":
 *           return self.binned_is_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 932, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 932, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 932, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":931
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sources()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sources()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":933
 *         if self._config == "is":
 *           return self.binned_is_ptr().sources()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sources()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 933, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":934
 *           return self.binned_is_ptr().sources()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 934, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 934, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":933
 *         if self._config == "is":
 *           return self.binned_is_ptr().sources()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sources()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":935
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sources()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sources()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 935, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":936
 *           return self.binned_sd_ptr().sources()
 *         if self._config == "si":
 *           return self.binned_si_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 936, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 936, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":935
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sources()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sources()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":937
 *         if self._config == "si":
 *           return self.binned_si_ptr().sources()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 937, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":938
 *           return self.binned_si_ptr().sources()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sources()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 938, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 938, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":937
 *         if self._config == "si":
 *           return self.binned_si_ptr().sources()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":939
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 939, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":920
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 */

  /* 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.BinnedEstimate2D.sources", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":941
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve, "BinnedEstimate2D.areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve = {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areaUnderCurve (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 941, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 941, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 941, __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, "areaUnderCurve") < 0)) __PYX_ERR(17, 941, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("areaUnderCurve", 0, 0, 3, __pyx_nargs); __PYX_ERR(17, 941, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areaUnderCurve", 1);

  /* "include/generated/BinnedEstimate2D.pyx":942
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 942, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":943
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 943, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 943, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 943, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 943, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_2->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 943, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":942
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":944
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 944, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":945
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "di":
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 945, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 945, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 945, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 945, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_7->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 945, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":944
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":946
 *         if self._config == "di":
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 946, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":947
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 947, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 947, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 947, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 947, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_8->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 947, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":946
 *         if self._config == "di":
 *           return self.binned_di_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":948
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 948, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":949
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "id":
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 949, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 949, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 949, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 949, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_9->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":948
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":950
 *         if self._config == "id":
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 950, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":951
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 951, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 951, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 951, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 951, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_10->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":950
 *         if self._config == "id":
 *           return self.binned_id_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":952
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 952, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":953
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "is":
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 953, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 953, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 953, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 953, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_11->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":952
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":954
 *         if self._config == "is":
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 954, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":955
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 955, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 955, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 955, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 955, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_12->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":954
 *         if self._config == "is":
 *           return self.binned_is_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":956
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 956, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":957
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "si":
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 957, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 957, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 957, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 957, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_13->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":956
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":958
 *         if self._config == "si":
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 958, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":959
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 959, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 959, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 959, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 959, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_14->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":958
 *         if self._config == "si":
 *           return self.binned_si_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":960
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 960, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":941
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

  /* 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.BinnedEstimate2D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":962
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix, "BinnedEstimate2D.covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr='^stat|^uncor')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix = {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  PyObject *__pyx_v_pat_uncorr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covarianceMatrix (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignoreOffDiagonalTerms,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,&__pyx_n_s_pat_uncorr,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s_stat_uncor));
    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_ignoreOffDiagonalTerms);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 962, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 962, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_uncorr);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 962, __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(17, 962, __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_ignoreOffDiagonalTerms = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
    __pyx_v_pat_uncorr = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covarianceMatrix", 0, 0, 4, __pyx_nargs); __PYX_ERR(17, 962, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_ignoreOffDiagonalTerms, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins, __pyx_v_pat_uncorr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  std::string __pyx_t_6;
  std::vector<std::vector<double> >  __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_9;
  std::vector<std::vector<double> >  __pyx_t_10;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_11;
  std::vector<std::vector<double> >  __pyx_t_12;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_13;
  std::vector<std::vector<double> >  __pyx_t_14;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_15;
  std::vector<std::vector<double> >  __pyx_t_16;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_17;
  std::vector<std::vector<double> >  __pyx_t_18;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_19;
  std::vector<std::vector<double> >  __pyx_t_20;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_21;
  std::vector<std::vector<double> >  __pyx_t_22;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_23;
  std::vector<std::vector<double> >  __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covarianceMatrix", 1);

  /* "include/generated/BinnedEstimate2D.pyx":963
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 963, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":964
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 964, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 964, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 964, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 964, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 964, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 964, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":963
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":965
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 965, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":966
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "di":
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 966, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 966, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 966, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 966, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 966, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 966, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 966, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":965
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":967
 *         if self._config == "di":
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 967, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":968
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 968, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 968, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 968, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 968, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 968, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 968, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":967
 *         if self._config == "di":
 *           return self.binned_di_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":969
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 969, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":970
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "id":
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 970, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 970, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 970, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 970, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 970, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 970, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":969
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":971
 *         if self._config == "id":
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 971, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":972
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 972, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 972, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 972, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 972, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 972, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 972, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":971
 *         if self._config == "id":
 *           return self.binned_id_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":973
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 973, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":974
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "is":
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 974, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 974, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 974, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 974, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 974, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 974, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":973
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":975
 *         if self._config == "is":
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 975, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":976
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 976, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 976, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 976, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 976, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 976, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 976, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_20); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 976, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":975
 *         if self._config == "is":
 *           return self.binned_is_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":977
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 977, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":978
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "si":
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 978, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 978, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 978, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 978, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 978, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 978, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_22); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":977
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":979
 *         if self._config == "si":
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 979, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":980
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 980, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 980, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 980, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 980, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 980, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 980, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_24); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":979
 *         if self._config == "si":
 *           return self.binned_si_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":981
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 981, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":962
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

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

/* "include/generated/BinnedEstimate2D.pyx":983
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_94numBinsX, "BinnedEstimate2D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_95numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_94numBinsX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 983, __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, "numBinsX") < 0)) __PYX_ERR(17, 983, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 983, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_94numBinsX(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedEstimate2D.pyx":985
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 985, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":986
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 986, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 986, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 986, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 986, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":985
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":987
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 987, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":988
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 988, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 988, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 988, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":987
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":989
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 989, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":990
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 990, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 990, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 990, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":989
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":991
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 991, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":992
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 992, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 992, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 992, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 992, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":991
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":993
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 993, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":994
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 994, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 994, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 994, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 994, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":993
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":995
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 995, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":996
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 996, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 996, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 996, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":995
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":997
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 997, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":998
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 998, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 998, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 998, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":997
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":999
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 999, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1000
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1000, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1000, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1000, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1000, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":999
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1001
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1001, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1002
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1002, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1002, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1002, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1001
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1003
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1003, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":983
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1006
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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_16BinnedEstimate2D_96xEdges, "BinnedEstimate2D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_97xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_96xEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1006, __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, "xEdges") < 0)) __PYX_ERR(17, 1006, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 1006, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_96xEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  std::vector<int>  __pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  std::vector<int>  __pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  std::vector<std::string>  __pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1008
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1008, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1009
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1009, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1009, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1009, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1009, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1008
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1010
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1010, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1011
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1011, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1011, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1011, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1010
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1012
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1012, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1013
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1013, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1013, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1013, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1013, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1012
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1014
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1014, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1015
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1015, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1015, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1015, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1015, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1014
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1016
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1016, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1017
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1017, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1017, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1017, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1016
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1018
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1018, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1019
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1019, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1019, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1019, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1018
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1020
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1020, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1021
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1021, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1021, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1021, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1021, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1020
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1022
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1022, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1023
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1023, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1023, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1023, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1022
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1024
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1024, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1025
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1025, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1025, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1025, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1025, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1024
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1026
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1026, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1006
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1029
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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_16BinnedEstimate2D_98xWidths, "BinnedEstimate2D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_99xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_98xWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1029, __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, "xWidths") < 0)) __PYX_ERR(17, 1029, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 1029, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_98xWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1031
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1031, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1032
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1032, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1032, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1032, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1032, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1031
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1033
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1033, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1034
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1034, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1034, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1034, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1033
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1035
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1035, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1036
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1036, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1036, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1036, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1035
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1037
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1037, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1029
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1040
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_100xMin, "BinnedEstimate2D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_101xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_100xMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_100xMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1042
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1042, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1043
 *         """xMin on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1043, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1043, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1042
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1044
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1044, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1045
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1045, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1045, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1044
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1046
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1046, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1047
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1047, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1047, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1046
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1048
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1048, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1040
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1051
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_102xMax, "BinnedEstimate2D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_103xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_102xMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_102xMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1053
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1053, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1054
 *         """xMax on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1054, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1054, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1053
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1055
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1055, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1056
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1056, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1056, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1055
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1057
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1057, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1058
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1058, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1058, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1057
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1059
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1059, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1051
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1062
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_104rebinXBy, "BinnedEstimate2D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_105rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_104rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__93);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1062, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1062, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1062, __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, "rebinXBy") < 0)) __PYX_ERR(17, 1062, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(17, 1062, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_104rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1064
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1064, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1065
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1065, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1065, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1065, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1065, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(17, 1065, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1064
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1066
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1066, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1067
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1067, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1067, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1067, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1067, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1067, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1066
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1068
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1068, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1069
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1069, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1069, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1069, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1069, __pyx_L1_error)
    try {
      __pyx_t_8->rebinXBy(__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(17, 1069, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1069, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1068
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1070
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1070, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1062
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1073
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_106rebinXTo, "BinnedEstimate2D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_107rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_106rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1073, __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, "rebinXTo") < 0)) __PYX_ERR(17, 1073, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 1073, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_106rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1075
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1075, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1076
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1076, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1076, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1076, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1076, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1075
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1077
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1077, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1078
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1078, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1078, __pyx_L1_error)
    try {
      __pyx_t_5->rebinXTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1078, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1077
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1079
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1079, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1080
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1080, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1080, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1080, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1079
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1081
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1081, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1073
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1084
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_108rebinX, "BinnedEstimate2D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_109rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_108rebinX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1084, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(17, 1084, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(17, 1084, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_108rebinX(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1085
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 1085, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1086
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1086, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(17, 1086, __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/generated/BinnedEstimate2D.pyx":1085
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1088
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(17, 1088, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1088, __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(17, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":1084
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1090
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_111numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_110numBinsY, "BinnedEstimate2D.numBinsY(self, includeOverflows=False)\nnumBinsY on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_111numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_111numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_110numBinsY};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_111numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1090, __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, "numBinsY") < 0)) __PYX_ERR(17, 1090, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsY", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 1090, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_110numBinsY(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_110numBinsY(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1092
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1092, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1093
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1093, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1093, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1093, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1092
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1094
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1094, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1095
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1095, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1095, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1095, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1094
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1096
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1096, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1097
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1097, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1097, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1097, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1096
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1098
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1098, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1099
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1099, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1099, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1099, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1098
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1100
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1100, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1101
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1101, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1101, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1101, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1100
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1102
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1102, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1103
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1103, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1103, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1103, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1102
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1104
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1105
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1105, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1105, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1105, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1104
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1106
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1106, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1107
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1107, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1107, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1107, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1106
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1108
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1108, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1109
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1109, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1109, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1109, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1108
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1110
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1110, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1090
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1113
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_113yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_112yEdges, "BinnedEstimate2D.yEdges(self, includeOverflows=False)\nyEdges on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_113yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_113yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_112yEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_113yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1113, __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, "yEdges") < 0)) __PYX_ERR(17, 1113, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 1113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_112yEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_112yEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  std::vector<std::string>  __pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  std::vector<int>  __pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1115
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1115, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1116
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1116, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1116, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1116, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1115
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1117
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1117, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1118
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1118, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1118, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1118, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1117
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1119
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1119, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1120
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1120, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1120, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1120, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1119
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1121
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1121, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1122
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1122, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1122, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1122, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1121
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1123
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1123, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1124
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1124, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1124, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1124, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1123
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1125
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1125, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1126
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1126, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1126, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1126, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1125
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1127
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1127, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1128
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1128, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1128, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1128, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1127
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1129
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1129, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1130
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1130, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1130, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1130, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1129
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1131
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1131, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1132
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1132, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1132, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1132, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1131
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1133
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1133, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1113
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1136
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_115yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_114yWidths, "BinnedEstimate2D.yWidths(self, includeOverflows=True)\nyWidths on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_115yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_115yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_114yWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_115yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1136, __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, "yWidths") < 0)) __PYX_ERR(17, 1136, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(17, 1136, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_114yWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_114yWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1138
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1139
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1139, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1139, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1139, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1138
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1140
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1141
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1141, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1141, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1141, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1140
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1142
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1143
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1143, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(17, 1143, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1143, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1142
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1144
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1144, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1136
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1147
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_117yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_116yMin, "BinnedEstimate2D.yMin(self)\nyMin on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_117yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_117yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_116yMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_117yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_116yMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_116yMin(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_5;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1149
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1149, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1150
 *         """yMin on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1150, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1150, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1149
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1151
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1151, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1152
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1152, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1152, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1151
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1153
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1153, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1154
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1154, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1154, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1153
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1155
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1155, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1147
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1158
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_119yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_118yMax, "BinnedEstimate2D.yMax(self)\nyMax on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_119yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_119yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_118yMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_119yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_118yMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_118yMax(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_5;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1160
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1160, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1161
 *         """yMax on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1161, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1161, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1160
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1162
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1162, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1163
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1163, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1163, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1162
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1164
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1164, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1165
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1165, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1165, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1164
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1166
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1166, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1158
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1169
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_121rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_120rebinYBy, "BinnedEstimate2D.rebinYBy(self, n, begin=1, end=sys.maxsize)\nrebinYBy on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_121rebinYBy = {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_121rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_120rebinYBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_121rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__94);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1169, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1169, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1169, __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, "rebinYBy") < 0)) __PYX_ERR(17, 1169, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(17, 1169, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_120rebinYBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_120rebinYBy(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_7;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYBy", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1171
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1171, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1172
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1172, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1172, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1172, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1172, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYBy(__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(17, 1172, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1171
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1173
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1173, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1174
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1174, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1174, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1174, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1174, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1174, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1173
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1175
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1175, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1176
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1176, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(17, 1176, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1176, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(17, 1176, __pyx_L1_error)
    try {
      __pyx_t_8->rebinYBy(__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(17, 1176, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1175
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1177
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1177, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1169
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1180
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_123rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_122rebinYTo, "BinnedEstimate2D.rebinYTo(self, edges)\nrebinYTo on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_123rebinYTo = {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_123rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_122rebinYTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_123rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1180, __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, "rebinYTo") < 0)) __PYX_ERR(17, 1180, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(17, 1180, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_122rebinYTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_122rebinYTo(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYTo", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1182
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1182, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1183
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1183, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1183, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1183, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1182
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1184
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1184, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1185
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1185, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1185, __pyx_L1_error)
    try {
      __pyx_t_5->rebinYTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1185, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1184
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1186
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1186, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1187
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1187, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1187, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(17, 1187, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1186
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1188
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1188, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1180
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedEstimate2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1191
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_125rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate2D_124rebinY, "BinnedEstimate2D.rebinY(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_125rebinY = {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_125rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_124rebinY};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_125rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 1191, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinY") < 0)) __PYX_ERR(17, 1191, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinY", 0, 1, 1, __pyx_nargs); __PYX_ERR(17, 1191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_124rebinY(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_124rebinY(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinY", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1192
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 1192, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1193
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(17, 1193, __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/generated/BinnedEstimate2D.pyx":1192
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1195
 *             self.rebinYTo(arg)
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(17, 1195, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1195, __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(17, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate2D.pyx":1191
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1197
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_127__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_127__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1197, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_126__add__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_126__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1198
 * 
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1199
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1198
 * 
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1200
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1200, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 1200, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 1200, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":1201
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":1202
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1202, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1203
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1203, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1203, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate2D.pyx":1204
 *         if self._config == "dd":
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1202
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1205
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1205, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1206
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1206, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1206, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":1207
 *         elif self._config == "di":
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1205
 *           tmp = c.BE_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1208
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1208, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1209
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1209, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1209, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate2D.pyx":1210
 *         elif self._config == "ds":
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1208
 *           tmp = c.BE_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1211
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1212
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1212, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1212, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedEstimate2D.pyx":1213
 *         elif self._config == "id":
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1211
 *           tmp = c.BE_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1214
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1214, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1215
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1215, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1215, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedEstimate2D.pyx":1216
 *         elif self._config == "ii":
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1214
 *           tmp = c.BE_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1217
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1217, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1218
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1218, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1218, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedEstimate2D.pyx":1219
 *         elif self._config == "is":
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1217
 *           tmp = c.BE_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1220
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1221
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1221, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1221, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedEstimate2D.pyx":1222
 *         elif self._config == "sd":
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1220
 *           tmp = c.BE_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1223
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1223, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1224
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1224, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1224, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedEstimate2D.pyx":1225
 *         elif self._config == "si":
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1223
 *           tmp = c.BE_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1226
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1226, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1227
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1227, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1227, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedEstimate2D.pyx":1228
 *         elif self._config == "ss":
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1226
 *           tmp = c.BE_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate2D.pyx":1229
 *           tmp = c.BE_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(17, 1229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":1230
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":1197
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.__add__", __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/generated/BinnedEstimate2D.pyx":1232
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_129__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_129__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1232, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_128__iadd__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_128__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_4;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1233
 * 
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1234
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1233
 * 
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1235
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1235, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 1235, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 1235, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":1236
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1236, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1237
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1237, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1237, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate2D.pyx":1236
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1238
 *         if self._config == "dd":
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1238, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1239
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1239, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1239, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate2D.pyx":1238
 *         if self._config == "dd":
 *           c.BE_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1240
 *         elif self._config == "di":
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1240, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1241
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1241, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1241, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate2D.pyx":1240
 *         elif self._config == "di":
 *           c.BE_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1242
 *         elif self._config == "ds":
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1242, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1243
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1243, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1243, __pyx_L1_error)
    cython_iadd(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedEstimate2D.pyx":1242
 *         elif self._config == "ds":
 *           c.BE_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1244
 *         elif self._config == "id":
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1244, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1245
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1245, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1245, __pyx_L1_error)
    cython_iadd(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedEstimate2D.pyx":1244
 *         elif self._config == "id":
 *           c.BE_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1246
 *         elif self._config == "ii":
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1247
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1247, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1247, __pyx_L1_error)
    cython_iadd(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":1246
 *         elif self._config == "ii":
 *           c.BE_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1248
 *         elif self._config == "is":
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1248, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1249
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1249, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1249, __pyx_L1_error)
    cython_iadd(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":1248
 *         elif self._config == "is":
 *           c.BE_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1250
 *         elif self._config == "sd":
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1250, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1251
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BE_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1251, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1251, __pyx_L1_error)
    cython_iadd(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedEstimate2D.pyx":1250
 *         elif self._config == "sd":
 *           c.BE_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1252
 *         elif self._config == "si":
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1252, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1253
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BE_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1253, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1253, __pyx_L1_error)
    cython_iadd(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedEstimate2D.pyx":1252
 *         elif self._config == "si":
 *           c.BE_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate2D.pyx":1254
 *         elif self._config == "ss":
 *           c.BE_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":1232
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1256
 *         return self
 * 
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_131__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_131__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1256, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_130__sub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_130__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1257
 * 
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1258
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1257
 * 
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1259
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1259, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 1259, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 1259, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":1260
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate2D.pyx":1261
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1261, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1262
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1262, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1262, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate2D.pyx":1263
 *         if self._config == "dd":
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1261
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1264
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1265
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1265, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1265, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate2D.pyx":1266
 *         elif self._config == "di":
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1264
 *           tmp = c.BE_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1267
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1267, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1268
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1268, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1268, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate2D.pyx":1269
 *         elif self._config == "ds":
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1267
 *           tmp = c.BE_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1270
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1270, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1271
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1271, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1271, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedEstimate2D.pyx":1272
 *         elif self._config == "id":
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1270
 *           tmp = c.BE_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1273
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1273, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1274
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1274, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1274, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedEstimate2D.pyx":1275
 *         elif self._config == "ii":
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1273
 *           tmp = c.BE_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1276
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1276, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1277
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1277, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1277, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedEstimate2D.pyx":1278
 *         elif self._config == "is":
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1276
 *           tmp = c.BE_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1279
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1279, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1280
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1280, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1280, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedEstimate2D.pyx":1281
 *         elif self._config == "sd":
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1279
 *           tmp = c.BE_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1282
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1282, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1283
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1283, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1283, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedEstimate2D.pyx":1284
 *         elif self._config == "si":
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1282
 *           tmp = c.BE_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1285
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1285, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1286
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1286, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1286, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedEstimate2D.pyx":1287
 *         elif self._config == "ss":
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate2D.pyx":1285
 *           tmp = c.BE_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate2D.pyx":1288
 *           tmp = c.BE_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(17, 1288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":1289
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":1256
 *         return self
 * 
 *     def __sub__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.__sub__", __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/generated/BinnedEstimate2D.pyx":1291
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_133__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_133__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1291, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_132__isub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_132__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_4;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1292
 * 
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1293
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1292
 * 
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1294
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1294, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(17, 1294, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(17, 1294, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate2D.pyx":1295
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1296
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1296, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1296, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate2D.pyx":1295
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1297
 *         if self._config == "dd":
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1297, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1298
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1298, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1298, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate2D.pyx":1297
 *         if self._config == "dd":
 *           c.BE_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1299
 *         elif self._config == "di":
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1299, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1300
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1300, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1300, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate2D.pyx":1299
 *         elif self._config == "di":
 *           c.BE_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1301
 *         elif self._config == "ds":
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1301, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1302
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1302, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1302, __pyx_L1_error)
    cython_isub(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedEstimate2D.pyx":1301
 *         elif self._config == "ds":
 *           c.BE_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1303
 *         elif self._config == "id":
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1303, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1304
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1304, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1304, __pyx_L1_error)
    cython_isub(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedEstimate2D.pyx":1303
 *         elif self._config == "id":
 *           c.BE_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1305
 *         elif self._config == "ii":
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1305, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1306
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1306, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1306, __pyx_L1_error)
    cython_isub(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedEstimate2D.pyx":1305
 *         elif self._config == "ii":
 *           c.BE_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1307
 *         elif self._config == "is":
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1307, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1308
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1308, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1308, __pyx_L1_error)
    cython_isub(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedEstimate2D.pyx":1307
 *         elif self._config == "is":
 *           c.BE_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1309
 *         elif self._config == "sd":
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1309, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1310
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BE_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1310, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1310, __pyx_L1_error)
    cython_isub(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedEstimate2D.pyx":1309
 *         elif self._config == "sd":
 *           c.BE_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate2D.pyx":1311
 *         elif self._config == "si":
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1311, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1312
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BE_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1312, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1312, __pyx_L1_error)
    cython_isub(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedEstimate2D.pyx":1311
 *         elif self._config == "si":
 *           c.BE_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate2D.pyx":1313
 *         elif self._config == "ss":
 *           c.BE_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate2D.pyx":1291
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate2D.pyx":1315
 *         return self
 * 
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_135__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_135__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1315, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_134__eq__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_134__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1316
 * 
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1317
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1317, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1317, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1316
 * 
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1318
 *         if self._config == "dd":
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1319
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1319, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1319, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1318
 *         if self._config == "dd":
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1320
 *         elif self._config == "di":
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1321
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1321, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1321, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1320
 *         elif self._config == "di":
 *           return c.BE_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1322
 *         elif self._config == "ds":
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1322, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1323
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1323, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1323, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1322
 *         elif self._config == "ds":
 *           return c.BE_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1324
 *         elif self._config == "id":
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1324, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1325
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1325, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1325, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1324
 *         elif self._config == "id":
 *           return c.BE_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1326
 *         elif self._config == "ii":
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1327
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1327, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1327, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1326
 *         elif self._config == "ii":
 *           return c.BE_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1328
 *         elif self._config == "is":
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1329
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1329, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1329, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1328
 *         elif self._config == "is":
 *           return c.BE_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1330
 *         elif self._config == "sd":
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1331
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BE_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1331, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1331, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1330
 *         elif self._config == "sd":
 *           return c.BE_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1332
 *         elif self._config == "si":
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1333
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BE_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1333, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1333, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1332
 *         elif self._config == "si":
 *           return c.BE_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1334
 *         elif self._config == "ss":
 *           return c.BE_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1334, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1315
 *         return self
 * 
 *     def __eq__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BE_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedEstimate2D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":1336
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_137__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_137__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate2D, 1, "other", 0))) __PYX_ERR(17, 1336, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_136__ne__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__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_16BinnedEstimate2D_136__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_2;
  YODA::BinnedEstimate2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_5;
  YODA::BinnedEstimate2D<double,int>  *__pyx_t_6;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_9;
  YODA::BinnedEstimate2D<int,double>  *__pyx_t_10;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_11;
  YODA::BinnedEstimate2D<int,int>  *__pyx_t_12;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedEstimate2D.pyx":1337
 * 
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1337, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1338
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1338, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate2D<double,double>  *)NULL))) __PYX_ERR(17, 1338, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1337
 * 
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1339
 *         if self._config == "dd":
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1339, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1340
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1340, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate2D<double,int>  *)NULL))) __PYX_ERR(17, 1340, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1339
 *         if self._config == "dd":
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1341
 *         elif self._config == "di":
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1342
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1342, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate2D<double,std::string>  *)NULL))) __PYX_ERR(17, 1342, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1341
 *         elif self._config == "di":
 *           return c.BE_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1343
 *         elif self._config == "ds":
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1344
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1344, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate2D<int,double>  *)NULL))) __PYX_ERR(17, 1344, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1343
 *         elif self._config == "ds":
 *           return c.BE_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1345
 *         elif self._config == "id":
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1346
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1346, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate2D<int,int>  *)NULL))) __PYX_ERR(17, 1346, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1345
 *         elif self._config == "id":
 *           return c.BE_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1347
 *         elif self._config == "ii":
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1348
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1348, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate2D<int,std::string>  *)NULL))) __PYX_ERR(17, 1348, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1347
 *         elif self._config == "ii":
 *           return c.BE_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1349
 *         elif self._config == "is":
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1350
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1350, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate2D<std::string,double>  *)NULL))) __PYX_ERR(17, 1350, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1349
 *         elif self._config == "is":
 *           return c.BE_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1351
 *         elif self._config == "sd":
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1352
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BE_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1352, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate2D<std::string,int>  *)NULL))) __PYX_ERR(17, 1352, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1351
 *         elif self._config == "sd":
 *           return c.BE_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1353
 *         elif self._config == "si":
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(17, 1353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate2D.pyx":1354
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BE_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1354, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate2D<std::string,std::string>  *)NULL))) __PYX_ERR(17, 1354, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 1354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate2D.pyx":1353
 *         elif self._config == "si":
 *           return c.BE_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate2D.pyx":1355
 *         elif self._config == "ss":
 *           return c.BE_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(17, 1355, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1336
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate2D self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BE_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedEstimate2D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate2D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(17, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedEstimate2D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedEstimate2D[double,double]* binned_dd_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_16BinnedEstimate2D_139__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_16BinnedEstimate2D_138__reduce_cython__, "BinnedEstimate2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_139__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_139__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_138__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_139__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate2D_138__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_138__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate2D.__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_16BinnedEstimate2D_141__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_16BinnedEstimate2D_140__setstate_cython__, "BinnedEstimate2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate2D_141__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_141__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_140__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate2D_141__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate2D_140__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate2D_140__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate2D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,double]* binned_ddd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":31
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,double]* binned_ddd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,double,double]*> 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, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,double]* binned_ddd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,int]* binned_ddi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":35
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,int]* binned_ddi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,double,int]*> 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, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,int]* binned_ddi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,string]* binned_dds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":39
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,string]* binned_dds_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,double,string]*> 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, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,string]* binned_dds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,double]* binned_did_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":43
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,double]* binned_did_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,int,double]*> 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, 43, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,double]* binned_did_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,int]* binned_dii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":47
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,int]* binned_dii_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,int,int]*> 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, 47, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,int]* binned_dii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,string]* binned_dis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":51
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,string]* binned_dis_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,int,string]*> 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, 51, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,int,string]* binned_dis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,double]* binned_dsd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":55
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,double]* binned_dsd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,string,double]*> 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, 55, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,double]* binned_dsd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,int]* binned_dsi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":59
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,int]* binned_dsi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,string,int]*> 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, 59, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,int]* binned_dsi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,string]* binned_dss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":63
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,string]* binned_dss_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[double,string,string]*> 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, 63, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[double,string,string]* binned_dss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[double,string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":66
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,double]* binned_idd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":67
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,double]* binned_idd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,double,double]*> 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, 67, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":66
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,double]* binned_idd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":70
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,int]* binned_idi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":71
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,int]* binned_idi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,double,int]*> 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, 71, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":70
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,int]* binned_idi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":74
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,string]* binned_ids_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":75
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,string]* binned_ids_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,double,string]*> 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, 75, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":74
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,double,string]* binned_ids_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":78
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,double]* binned_iid_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":79
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,double]* binned_iid_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,int,double]*> 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, 79, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":78
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,double]* binned_iid_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":82
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,int]* binned_iii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":83
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,int]* binned_iii_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,int,int]*> 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, 83, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":82
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,int]* binned_iii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":86
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,string]* binned_iis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":87
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,string]* binned_iis_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,int,string]*> 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, 87, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":86
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,int,string]* binned_iis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":90
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,double]* binned_isd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":91
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,double]* binned_isd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,string,double]*> 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, 91, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":90
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,double]* binned_isd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":94
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,int]* binned_isi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":95
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,int]* binned_isi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,string,int]*> 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, 95, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":94
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,int]* binned_isi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":98
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,string]* binned_iss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":99
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,string]* binned_iss_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[int,string,string]*> 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, 99, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":98
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[int,string,string]* binned_iss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[int,string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":102
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,double]* binned_sdd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":103
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,double]* binned_sdd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,double,double]*> 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, 103, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":102
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,double]* binned_sdd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":106
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,int]* binned_sdi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":107
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,int]* binned_sdi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,double,int]*> 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, 107, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":106
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,int]* binned_sdi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":110
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,string]* binned_sds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":111
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,string]* binned_sds_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,double,string]*> 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, 111, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":110
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,double,string]* binned_sds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":114
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,double]* binned_sid_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":115
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,double]* binned_sid_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,int,double]*> 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, 115, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":114
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,double]* binned_sid_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":118
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,int]* binned_sii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":119
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,int]* binned_sii_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,int,int]*> 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, 119, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":118
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,int]* binned_sii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":122
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,string]* binned_sis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":123
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,string]* binned_sis_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,int,string]*> 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, 123, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":122
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,int,string]* binned_sis_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":126
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,double]* binned_ssd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":127
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,double]* binned_ssd_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,string,double]*> 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, 127, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":126
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,double]* binned_ssd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":130
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,int]* binned_ssi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":131
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,int]* binned_ssi_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,string,int]*> 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, 131, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":130
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,int]* binned_ssi_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":134
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,string]* binned_sss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedEstimate3D.pyx":135
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,string]* binned_sss_ptr(self) except NULL:
 *         return <c.BinnedEstimate3D[string,string,string]*> 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, 135, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":134
 * 
 * 
 *     cdef inline c.BinnedEstimate3D[string,string,string]* binned_sss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedEstimate3D[string,string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":139
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D___init__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D___init__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":140
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedEstimate3D.pyx":141
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":142
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 142, __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(18, 142, __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_BinnedEstimate3D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate3D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate3D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate3D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(18, 142, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(18, 142, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(18, 142, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(18, 142, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(18, 142, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":139
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":144
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_2__init1, "BinnedEstimate3D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1 = {"_BinnedEstimate3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedEstimate3D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_2__init1(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init1", 1);

  /* "include/generated/BinnedEstimate3D.pyx":145
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedEstimate3D<double,double,double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 145, __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, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":144
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedEstimate3D.pyx":148
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__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_16BinnedEstimate3D_4__init2, "BinnedEstimate3D.__init2(self, edgesA1, edgesA2, edgesA3, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__init2 = {"_BinnedEstimate3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__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_edgesA1 = 0;
  PyObject *__pyx_v_edgesA2 = 0;
  PyObject *__pyx_v_edgesA3 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_edgesA2,&__pyx_n_s_edgesA3,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 148, __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_edgesA2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init2", 0, 3, 5, 1); __PYX_ERR(18, 148, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edgesA3)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init2", 0, 3, 5, 2); __PYX_ERR(18, 148, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 148, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 148, __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, "_BinnedEstimate3D__init2") < 0)) __PYX_ERR(18, 148, __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_edgesA1 = values[0];
    __pyx_v_edgesA2 = values[1];
    __pyx_v_edgesA3 = values[2];
    __pyx_v_path = ((PyObject*)values[3]);
    __pyx_v_title = ((PyObject*)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init2", 0, 3, 5, __pyx_nargs); __PYX_ERR(18, 148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(18, 148, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(18, 148, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_edgesA2, __pyx_v_edgesA3, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_2generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":156
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_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_27_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_27_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 156, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_2generator26, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 156, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_2generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_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(18, 156, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 156, __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(18, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 156, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 156, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 156, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 156, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 156, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 156, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 156, __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(18, 156, __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(18, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 156, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_5generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":157
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_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_28_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_28_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 157, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_5generator27, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 157, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_5generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_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(18, 157, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 157, __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(18, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 157, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 157, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 157, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 157, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 157, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 157, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 157, __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(18, 157, __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(18, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 157, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_8generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":158
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_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_29_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_29_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 158, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_8generator28, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 158, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_8generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_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(18, 158, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 158, __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(18, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 158, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 158, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 158, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 158, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 158, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 158, __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(18, 158, __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(18, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 158, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_11generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":162
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_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_30_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_30_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 162, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_11generator29, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 162, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_11generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_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(18, 162, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 162, __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(18, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 162, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 162, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 162, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 162, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 162, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 162, __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(18, 162, __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(18, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 162, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_14generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":163
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_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_31_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_31_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 163, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_14generator30, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 163, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_14generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_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(18, 163, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 163, __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(18, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 163, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 163, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 163, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 163, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 163, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 163, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 163, __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(18, 163, __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(18, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 163, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_17generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":164
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_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_32_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_32_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 164, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_17generator31, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_17generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_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(18, 164, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 164, __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(18, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 164, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 164, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 164, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 164, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 164, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 164, __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(18, 164, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 164, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_20generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":168
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_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_33_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_33_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 168, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_20generator32, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_20generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_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(18, 168, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 168, __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(18, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 168, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 168, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 168, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 168, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 168, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 168, __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(18, 168, __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(18, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 168, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_23generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":169
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_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_34_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_34_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 169, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_23generator33, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 169, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_23generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_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(18, 169, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 169, __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(18, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 169, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 169, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 169, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 169, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 169, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 169, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 169, __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(18, 169, __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(18, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 169, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_26generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":170
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_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_35_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_35_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 170, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_26generator34, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_26generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_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(18, 170, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 170, __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(18, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 170, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 170, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 170, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 170, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 170, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 170, __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(18, 170, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 170, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_29generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":174
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_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_36_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_36_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 174, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_29generator35, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_29generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_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(18, 174, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 174, __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(18, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 174, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 174, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 174, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 174, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 174, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 174, __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(18, 174, __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(18, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 174, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_32generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":175
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_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_37_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_37_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 175, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_32generator36, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 175, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_32generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_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(18, 175, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 175, __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(18, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 175, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 175, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 175, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 175, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 175, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 175, __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(18, 175, __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(18, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 175, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_35generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":176
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_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_38_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_38_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 176, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_35generator37, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_35generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_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(18, 176, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 176, __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(18, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 176, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 176, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 176, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 176, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 176, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 176, __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(18, 176, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 176, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_38generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":180
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_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_39_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_39_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 180, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_38generator38, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_38generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_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(18, 180, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 180, __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(18, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 180, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 180, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 180, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 180, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 180, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 180, __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(18, 180, __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(18, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 180, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_41generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":181
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_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_40_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_40_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 181, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_41generator39, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_41generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_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(18, 181, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 181, __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(18, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 181, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 181, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 181, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 181, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 181, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 181, __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(18, 181, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 181, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_44generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":182
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_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_41_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_41_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 182, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_44generator40, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_44generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_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(18, 182, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 182, __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(18, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 182, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 182, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 182, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 182, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 182, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 182, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 182, __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(18, 182, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 182, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_47generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":186
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_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_42_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_42_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 186, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_47generator41, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 186, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_47generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_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(18, 186, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 186, __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(18, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 186, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 186, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 186, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 186, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 186, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 186, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 186, __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(18, 186, __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(18, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 186, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_50generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":187
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_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_43_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_43_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 187, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_50generator42, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_50generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_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(18, 187, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 187, __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(18, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 187, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 187, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 187, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 187, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 187, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 187, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 187, __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(18, 187, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 187, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_53generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":188
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_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_44_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_44_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 188, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_53generator43, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_53generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_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(18, 188, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 188, __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(18, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 188, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 188, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 188, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 188, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 188, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __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(18, 188, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 188, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_56generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":192
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_54genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_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_45_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_45_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 192, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_56generator44, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_56generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_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(18, 192, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 192, __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(18, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 192, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 192, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 192, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 192, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 192, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 192, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 192, __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(18, 192, __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(18, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 192, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_59generator45(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":193
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_57genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_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_46_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_46_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 193, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_59generator45, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 193, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_59generator45(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_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(18, 193, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 193, __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(18, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 193, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 193, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 193, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 193, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 193, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 193, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 193, __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(18, 193, __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(18, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 193, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_62generator46(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":194
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_60genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_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_47_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_47_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 194, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_62generator46, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_62generator46(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_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(18, 194, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 194, __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(18, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 194, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 194, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 194, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 194, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 194, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __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(18, 194, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 194, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_65generator47(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":198
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_63genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_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_48_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_48_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 198, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_65generator47, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_65generator47(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_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(18, 198, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 198, __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(18, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 198, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 198, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 198, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 198, __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(18, 198, __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(18, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 198, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_68generator48(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":199
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_66genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_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_49_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_49_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 199, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_68generator48, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_68generator48(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_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(18, 199, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 199, __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(18, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 199, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 199, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 199, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 199, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 199, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 199, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 199, __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(18, 199, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 199, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_71generator49(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":200
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_69genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_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_50_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_50_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 200, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_71generator49, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_71generator49(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_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(18, 200, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 200, __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(18, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 200, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 200, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 200, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 200, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 200, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 200, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 200, __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(18, 200, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 200, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_74generator50(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":204
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_72genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_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_51_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_51_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 204, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_74generator50, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 204, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_74generator50(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_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(18, 204, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 204, __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(18, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 204, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 204, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 204, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 204, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 204, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 204, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 204, __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(18, 204, __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(18, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 204, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_77generator51(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":205
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_75genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_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_52_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_52_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 205, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_77generator51, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_77generator51(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_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(18, 205, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 205, __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(18, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 205, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 205, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 205, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 205, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 205, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 205, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 205, __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(18, 205, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 205, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_80generator52(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":206
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_78genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_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_53_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_53_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 206, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_80generator52, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 206, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_80generator52(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_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(18, 206, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 206, __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(18, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 206, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 206, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 206, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 206, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 206, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 206, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 206, __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(18, 206, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 206, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_83generator53(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":210
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_81genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_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_54_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_54_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 210, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_83generator53, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_83generator53(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_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(18, 210, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 210, __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(18, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 210, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 210, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 210, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 210, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 210, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 210, __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(18, 210, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 210, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_86generator54(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":211
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_84genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_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_55_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_55_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 211, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_86generator54, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 211, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_86generator54(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_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(18, 211, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 211, __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(18, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 211, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 211, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 211, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 211, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 211, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 211, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 211, __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(18, 211, __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(18, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 211, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_89generator55(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":212
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_87genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_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_56_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_56_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 212, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_89generator55, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 212, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_89generator55(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_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(18, 212, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 212, __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(18, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 212, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 212, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 212, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 212, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 212, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 212, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 212, __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(18, 212, __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(18, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 212, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_92generator56(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":216
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_90genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_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_57_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_57_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 216, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_92generator56, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_92generator56(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_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(18, 216, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 216, __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(18, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 216, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 216, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 216, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 216, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 216, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 216, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 216, __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(18, 216, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 216, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_95generator57(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":217
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_93genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_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_58_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_58_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 217, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_95generator57, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 217, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_95generator57(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_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(18, 217, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 217, __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(18, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 217, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 217, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 217, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 217, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 217, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 217, __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(18, 217, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 217, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_98generator58(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":218
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_96genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_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_59_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_59_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 218, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_98generator58, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_98generator58(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_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(18, 218, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 218, __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(18, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 218, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 218, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 218, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 218, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 218, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 218, __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(18, 218, __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(18, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 218, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_101generator59(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":222
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_99genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_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_60_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_60_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 222, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_101generator59, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_101generator59(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_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(18, 222, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 222, __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(18, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 222, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 222, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 222, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 222, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 222, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 222, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 222, __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(18, 222, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 222, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_104generator60(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":223
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_102genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_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_61_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_61_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 223, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_104generator60, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_104generator60(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_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(18, 223, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 223, __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(18, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 223, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 223, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 223, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 223, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 223, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 223, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 223, __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(18, 223, __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(18, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 223, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_107generator61(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":224
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_105genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_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_62_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_62_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 224, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_107generator61, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_107generator61(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_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(18, 224, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 224, __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(18, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 224, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 224, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 224, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 224, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 224, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 224, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 224, __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(18, 224, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 224, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_110generator62(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":228
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_108genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_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_63_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_63_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 228, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_110generator62, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_110generator62(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_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(18, 228, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 228, __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(18, 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(18, 228, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 228, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 228, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 228, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 228, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 228, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 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(18, 228, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 228, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_113generator63(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":229
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_111genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_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_64_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_64_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 229, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_113generator63, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 229, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_113generator63(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_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(18, 229, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 229, __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(18, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 229, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 229, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 229, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 229, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 229, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 229, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 229, __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(18, 229, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 229, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_116generator64(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":230
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_114genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_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_65_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_65_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 230, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_116generator64, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_116generator64(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_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(18, 230, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 230, __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(18, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 230, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 230, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 230, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 230, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 230, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 230, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 230, __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(18, 230, __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(18, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 230, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_119generator65(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":234
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_117genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_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_66_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_66_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 234, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_119generator65, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_119generator65(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_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(18, 234, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 234, __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(18, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 234, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 234, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 234, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 234, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 234, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 234, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 234, __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(18, 234, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 234, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_122generator66(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":235
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_120genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_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_67_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_67_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 235, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_122generator66, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 235, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_122generator66(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_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(18, 235, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 235, __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(18, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 235, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 235, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 235, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 235, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 235, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 235, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 235, __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(18, 235, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 235, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_125generator67(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":236
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_123genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_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_68_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_68_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 236, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_125generator67, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 236, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_125generator67(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_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(18, 236, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 236, __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(18, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 236, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 236, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 236, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 236, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 236, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 236, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 236, __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(18, 236, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 236, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_128generator68(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":240
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_126genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_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_69_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_69_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 240, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_128generator68, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_128generator68(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_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(18, 240, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 240, __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(18, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 240, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 240, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 240, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 240, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 240, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 240, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 240, __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(18, 240, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 240, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_131generator69(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":241
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_129genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_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_70_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_70_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 241, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_131generator69, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_131generator69(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_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(18, 241, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 241, __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(18, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 241, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 241, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 241, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 241, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 241, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 241, __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(18, 241, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 241, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_134generator70(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":242
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_132genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_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_71_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_71_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 242, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_134generator70, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_134generator70(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_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(18, 242, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 242, __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(18, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 242, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 242, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 242, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 242, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 242, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 242, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 242, __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(18, 242, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 242, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_137generator71(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":246
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_135genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_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_72_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_72_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 246, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_137generator71, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_137generator71(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_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(18, 246, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 246, __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(18, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 246, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 246, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 246, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 246, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 246, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 246, __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(18, 246, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 246, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_140generator72(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":247
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_138genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_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_73_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_73_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 247, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_140generator72, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_140generator72(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_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(18, 247, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 247, __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(18, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 247, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 247, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 247, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 247, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 247, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 247, __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(18, 247, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 247, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_143generator73(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":248
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_141genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_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_74_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_74_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 248, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_143generator73, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 248, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_143generator73(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_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(18, 248, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 248, __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(18, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 248, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 248, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 248, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 248, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 248, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 248, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 248, __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(18, 248, __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(18, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 248, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_146generator74(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":252
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_144genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_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_75_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_75_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 252, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_146generator74, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_146generator74(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_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(18, 252, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 252, __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(18, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 252, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 252, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 252, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 252, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 252, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 252, __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(18, 252, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 252, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_149generator75(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":253
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_147genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_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_76_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_76_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 253, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_149generator75, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 253, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_149generator75(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_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(18, 253, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 253, __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(18, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 253, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 253, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 253, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 253, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 253, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 253, __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(18, 253, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 253, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_152generator76(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":254
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_150genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_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_77_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_77_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 254, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_152generator76, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_152generator76(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_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(18, 254, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 254, __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(18, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 254, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 254, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 254, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 254, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 254, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 254, __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(18, 254, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 254, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_155generator77(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":258
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_153genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_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_78_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_78_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 258, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_155generator77, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_155generator77(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_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(18, 258, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 258, __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(18, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 258, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 258, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 258, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 258, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 258, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 258, __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(18, 258, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 258, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_158generator78(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":259
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_156genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_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_79_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_79_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 259, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_158generator78, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_158generator78(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_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(18, 259, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 259, __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(18, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 259, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 259, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 259, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 259, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 259, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 259, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 259, __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(18, 259, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 259, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_161generator79(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":260
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_159genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_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_80_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_80_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 260, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_161generator79, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 260, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_161generator79(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_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(18, 260, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 260, __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(18, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 260, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 260, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 260, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 260, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 260, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 260, __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(18, 260, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 260, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_164generator80(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":264
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_162genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_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_81_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_81_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 264, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_164generator80, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_164generator80(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_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(18, 264, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 264, __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(18, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 264, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 264, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 264, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 264, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 264, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 264, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 264, __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(18, 264, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 264, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_167generator81(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":265
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_165genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_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_82_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_82_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 265, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_167generator81, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 265, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_167generator81(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_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(18, 265, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 265, __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(18, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 265, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 265, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 265, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 265, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 265, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 265, __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(18, 265, __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(18, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 265, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_170generator82(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":266
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_168genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_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_83_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_83_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 266, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_170generator82, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_170generator82(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_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(18, 266, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 266, __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(18, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 266, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 266, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 266, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 266, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 266, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 266, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 266, __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(18, 266, __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(18, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 266, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_173generator83(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":270
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_171genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_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_84_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_84_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 270, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_173generator83, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_173generator83(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_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(18, 270, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 270, __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(18, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 270, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 270, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 270, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 270, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 270, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 270, __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(18, 270, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 270, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_176generator84(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":271
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_174genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_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_85_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_85_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 271, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_176generator84, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 271, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_176generator84(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_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(18, 271, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 271, __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(18, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 271, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 271, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 271, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 271, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 271, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 271, __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(18, 271, __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(18, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 271, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_179generator85(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":272
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_177genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_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_86_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_86_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 272, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_179generator85, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_179generator85(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_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(18, 272, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 272, __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(18, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 272, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 272, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 272, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 272, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 272, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 272, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 272, __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(18, 272, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 272, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_182generator86(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":276
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_180genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_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_87_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_87_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 276, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_182generator86, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_182generator86(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_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(18, 276, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 276, __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(18, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 276, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 276, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 276, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 276, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 276, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 276, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 276, __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(18, 276, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 276, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_185generator87(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":277
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_183genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_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_88_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_88_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 277, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_185generator87, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 277, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_185generator87(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_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(18, 277, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 277, __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(18, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 277, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 277, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 277, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 277, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 277, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 277, __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(18, 277, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 277, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_188generator88(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":278
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_186genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_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_89_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_89_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 278, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_188generator88, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 278, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_188generator88(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_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(18, 278, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 278, __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(18, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 278, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 278, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 278, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 278, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 278, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 278, __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(18, 278, __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(18, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 278, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_191generator89(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":282
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_189genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_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_90_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_90_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 282, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_191generator89, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_191generator89(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_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(18, 282, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 282, __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(18, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 282, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 282, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 282, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 282, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 282, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 282, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 282, __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(18, 282, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 282, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_194generator90(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":283
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_192genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_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_91_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_91_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 283, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_194generator90, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_194generator90(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_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(18, 283, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 283, __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(18, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 283, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 283, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 283, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 283, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 283, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 283, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 283, __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(18, 283, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 283, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_197generator91(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":284
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_195genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_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_92_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_92_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 284, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_197generator91, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_197generator91(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_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(18, 284, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 284, __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(18, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 284, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 284, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 284, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 284, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 284, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 284, __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(18, 284, __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(18, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 284, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_200generator92(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":288
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_198genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_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_93_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_93_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 288, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_200generator92, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_200generator92(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_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(18, 288, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 288, __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(18, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 288, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 288, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 288, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 288, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 288, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 288, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 288, __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(18, 288, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 288, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_203generator93(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":289
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_201genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_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_94_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_94_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 289, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_203generator93, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_203generator93(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_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(18, 289, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 289, __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(18, 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(18, 289, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 289, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 289, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 289, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 289, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 289, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 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(18, 289, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 289, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_206generator94(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":290
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_204genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_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_95_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_95_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 290, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_206generator94, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 290, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_206generator94(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_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(18, 290, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 290, __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(18, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 290, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 290, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 290, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 290, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 290, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 290, __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(18, 290, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 290, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_209generator95(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":294
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_207genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_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_96_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_96_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 294, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_209generator95, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_209generator95(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_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(18, 294, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 294, __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(18, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 294, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 294, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 294, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 294, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 294, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 294, __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(18, 294, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 294, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_212generator96(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":295
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_210genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_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_97_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_97_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 295, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_212generator96, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 295, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_212generator96(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_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(18, 295, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 295, __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(18, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 295, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 295, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 295, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 295, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 295, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 295, __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(18, 295, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 295, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_215generator97(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":296
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_213genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_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_98_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_98_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 296, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_215generator97, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_215generator97(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_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(18, 296, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 296, __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(18, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 296, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 296, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 296, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 296, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 296, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 296, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 296, __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(18, 296, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 296, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_218generator98(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":300
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_216genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_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_99_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_99_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 300, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_218generator98, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_218generator98(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_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(18, 300, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 300, __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(18, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 300, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 300, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 300, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 300, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 300, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 300, __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(18, 300, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 300, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_221generator99(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":301
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_219genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_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_100_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_100_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 301, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_221generator99, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_221generator99(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_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(18, 301, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 301, __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(18, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 301, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 301, __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(18, 301, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 301, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_224generator100(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":302
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_222genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_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_101_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_101_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 302, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_224generator100, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 302, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_224generator100(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_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(18, 302, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 302, __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(18, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 302, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 302, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 302, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 302, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 302, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 302, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 302, __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(18, 302, __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(18, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 302, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_227generator101(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":306
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_225genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_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_102_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_102_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 306, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_227generator101, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_227generator101(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_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(18, 306, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 306, __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(18, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 306, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 306, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 306, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 306, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 306, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 306, __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(18, 306, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 306, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_230generator102(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":307
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_228genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_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_103_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_103_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 307, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_230generator102, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 307, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_230generator102(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_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(18, 307, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 307, __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(18, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 307, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 307, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 307, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 307, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 307, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 307, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 307, __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(18, 307, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 307, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_233generator103(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":308
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_231genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_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_104_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_104_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 308, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_233generator103, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_233generator103(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_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(18, 308, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 308, __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(18, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 308, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 308, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 308, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 308, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 308, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 308, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 308, __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(18, 308, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 308, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_236generator104(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":312
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_234genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_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_105_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_105_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 312, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_236generator104, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_236generator104(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_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(18, 312, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 312, __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(18, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 312, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 312, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 312, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 312, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 312, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 312, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 312, __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(18, 312, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 312, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_239generator105(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":313
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_237genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_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_106_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_106_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 313, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_239generator105, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 313, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_239generator105(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_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(18, 313, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 313, __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(18, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 313, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 313, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 313, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 313, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 313, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 313, __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(18, 313, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 313, __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;
}
static PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_242generator106(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedEstimate3D.pyx":314
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_240genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_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_107_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_107_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 314, __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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_242generator106, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(18, 314, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2.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_16BinnedEstimate3D_24_BinnedEstimate3D__init2_242generator106(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_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(18, 314, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(18, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(18, 314, __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(18, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 314, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 314, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 314, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 314, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(18, 314, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 314, __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(18, 314, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 314, __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/generated/BinnedEstimate3D.pyx":148
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_4__init2(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_edgesA3, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_2generator26 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_5generator27 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_8generator28 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_11generator29 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_14generator30 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_17generator31 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_20generator32 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_23generator33 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_26generator34 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_29generator35 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_32generator36 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_35generator37 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_38generator38 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_41generator39 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_44generator40 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_47generator41 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_50generator42 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_53generator43 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_56generator44 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_59generator45 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_62generator46 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_65generator47 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_68generator48 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_71generator49 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_74generator50 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_77generator51 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_80generator52 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_83generator53 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_86generator54 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_89generator55 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_92generator56 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_95generator57 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_98generator58 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_101generator59 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_104generator60 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_107generator61 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_110generator62 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_113generator63 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_116generator64 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_119generator65 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_122generator66 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_125generator67 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_128generator68 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_131generator69 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_134generator70 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_137generator71 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_140generator72 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_143generator73 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_146generator74 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_149generator75 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_152generator76 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_155generator77 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_158generator78 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_161generator79 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_164generator80 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_167generator81 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_170generator82 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_173generator83 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_176generator84 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_179generator85 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_182generator86 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_185generator87 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_188generator88 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_191generator89 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_194generator90 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_197generator91 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_200generator92 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_203generator93 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_206generator94 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_209generator95 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_212generator96 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_215generator97 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_218generator98 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_221generator99 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_224generator100 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_227generator101 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_230generator102 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_233generator103 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_236generator104 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_239generator105 = 0;
  PyObject *__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_242generator106 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  std::vector<std::vector<double> >  __pyx_t_8;
  std::string __pyx_t_9;
  std::string __pyx_t_10;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  unsigned int __pyx_t_14;
  std::vector<std::vector<int> >  __pyx_t_15;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_16;
  std::vector<std::vector<std::string> >  __pyx_t_17;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_33;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_36;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_37;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_42;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init2", 1);

  /* "include/generated/BinnedEstimate3D.pyx":149
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 149, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 149, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 149, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 149, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":150
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 *         cdef vector[vector[double]] edges_d
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA2, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 150, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 150, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 150, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 150, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":151
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 151, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA3); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 151, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L7_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 151, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 151, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":155
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":156
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":157
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_3genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":158
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_6genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":156
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 156, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(18, 156, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_7)) __PYX_ERR(18, 156, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 156, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":159
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 159, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 159, __pyx_L1_error)
    try {
      __pyx_t_11 = new YODA::BinnedEstimate3D<double,double,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), (__pyx_v_edges_d[2]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 159, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":160
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[2])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 160, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":155
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":161
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L13_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L13_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L13_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":162
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_9genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":163
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_12genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":162
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 162, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 162, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 162, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":164
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_15genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 164, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 164, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":165
 *                       list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 165, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 165, __pyx_L1_error)
    try {
      __pyx_t_16 = new YODA::BinnedEstimate3D<double,double,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 165, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":166
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_5, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":161
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":167
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":168
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_18genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":169
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_21genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":168
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 168, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(18, 168, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":170
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_24genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(18, 170, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 170, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":171
 *                       list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 171, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 171, __pyx_L1_error)
    try {
      __pyx_t_18 = new YODA::BinnedEstimate3D<double,double,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 171, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":172
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 172, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":167
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,int](edges_d[0], edges_d[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":173
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L19_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":174
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_27genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":175
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_30genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":174
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(18, 174, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 174, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":176
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_33genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 176, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 176, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":177
 *                       list(float(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 177, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 177, __pyx_L1_error)
    try {
      __pyx_t_19 = new YODA::BinnedEstimate3D<double,int,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 177, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":178
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":173
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,string](edges_d[0], edges_d[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":179
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L22_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":180
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_36genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 180, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":181
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_39genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":182
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_42genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":181
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 181, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 181, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_12 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":183
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 183, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 183, __pyx_L1_error)
    try {
      __pyx_t_20 = new YODA::BinnedEstimate3D<double,int,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 183, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":184
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_5, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":179
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,double](edges_d[0], edges_i[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":185
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L25_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L25_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L25_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":186
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_45genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 186, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 186, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":187
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_48genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 187, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":188
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_51genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 188, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 188, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":189
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 189, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 189, __pyx_L1_error)
    try {
      __pyx_t_21 = new YODA::BinnedEstimate3D<double,int,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 189, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":190
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":185
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,int](edges_d[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":191
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L28_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L28_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L28_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":192
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_54genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":193
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_57genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":192
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 192, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 192, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":194
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_60genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 194, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 194, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":195
 *                       list(float(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 195, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 195, __pyx_L1_error)
    try {
      __pyx_t_22 = new YODA::BinnedEstimate3D<double,std::string,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 195, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":196
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_5, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":191
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,int,string](edges_d[0], edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":197
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":198
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_63genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 198, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":199
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_66genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 199, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 199, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":200
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_69genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 200, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 200, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":201
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 201, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 201, __pyx_L1_error)
    try {
      __pyx_t_23 = new YODA::BinnedEstimate3D<double,std::string,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 201, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_23); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":202
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":197
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,double](edges_d[0], edges_s[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":203
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L34_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L34_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L34_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":204
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_72genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 204, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 204, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":205
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_75genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":206
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_78genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":205
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 205, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 205, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 205, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":207
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 207, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 207, __pyx_L1_error)
    try {
      __pyx_t_24 = new YODA::BinnedEstimate3D<double,std::string,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 207, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_24); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":208
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_5, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":203
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,int](edges_d[0], edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":209
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L37_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L37_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L37_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":210
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_81genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 210, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 210, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":211
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_84genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":212
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_87genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":211
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 211, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(18, 211, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 211, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":213
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 213, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 213, __pyx_L1_error)
    try {
      __pyx_t_25 = new YODA::BinnedEstimate3D<int,double,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 213, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":214
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_5, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 214, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":209
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,string,string](edges_d[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":215
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L40_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L40_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L40_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":216
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_90genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":217
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_93genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":216
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(18, 216, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 216, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 216, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":218
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_96genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 218, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":219
 *                       list(int(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 219, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 219, __pyx_L1_error)
    try {
      __pyx_t_26 = new YODA::BinnedEstimate3D<int,double,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 219, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":220
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 220, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":215
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,double](edges_i[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":221
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L43_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L43_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L43_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":222
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_99genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 222, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 222, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":223
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_102genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 223, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":224
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_105genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 224, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 224, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":225
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 225, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 225, __pyx_L1_error)
    try {
      __pyx_t_27 = new YODA::BinnedEstimate3D<int,double,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 225, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_27); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":226
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_5, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":221
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,int](edges_i[0], edges_d[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":227
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L46_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L46_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L46_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":228
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_108genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":229
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_111genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":228
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 228, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(18, 228, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_6 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":230
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_114genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(18, 230, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":231
 *                       list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 231, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 231, __pyx_L1_error)
    try {
      __pyx_t_28 = new YODA::BinnedEstimate3D<int,int,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 231, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":232
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 232, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":227
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,double,string](edges_i[0], edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":233
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L49_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L49_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L49_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":234
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_117genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":235
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_120genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":236
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_123genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":234
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(18, 234, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 234, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 234, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_12 = 0;
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 234, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":237
 *                       list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 237, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 237, __pyx_L1_error)
    try {
      __pyx_t_29 = new YODA::BinnedEstimate3D<int,int,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), (__pyx_v_edges_i[2]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 237, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_29); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":238
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[2])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_6, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 238, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":233
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,double](edges_i[0], edges_i[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":239
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L52_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L52_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L52_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":240
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_126genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":241
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_129genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":240
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 240, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 240, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":242
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_132genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 242, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":243
 *                       list(int(x) for x in edgesA2), ]
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 243, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 243, __pyx_L1_error)
    try {
      __pyx_t_30 = new YODA::BinnedEstimate3D<int,int,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 243, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_30); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":244
 *           edges_s = [ list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_6, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":239
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,int](edges_i[0], edges_i[1], edges_i[2], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_i[2])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":245
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L55_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L55_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L55_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":246
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_135genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 246, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 246, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":247
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_138genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 247, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 247, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":248
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_141genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 248, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 248, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":249
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 249, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 249, __pyx_L1_error)
    try {
      __pyx_t_31 = new YODA::BinnedEstimate3D<int,std::string,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 249, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_31); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":250
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":245
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,int,string](edges_i[0], edges_i[1], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":251
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L58_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L58_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L58_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":252
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_144genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":253
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_147genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":252
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 252, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(18, 252, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 252, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":254
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_150genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 254, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":255
 *                       list(int(x) for x in edgesA3), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 255, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 255, __pyx_L1_error)
    try {
      __pyx_t_32 = new YODA::BinnedEstimate3D<int,std::string,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 255, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":256
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_6, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":251
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,double](edges_i[0], edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":257
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L61_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L61_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L61_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":258
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_153genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 258, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":259
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_156genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":260
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_159genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":259
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 259, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 259, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 259, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":261
 *           edges_s = [ list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 261, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 261, __pyx_L1_error)
    try {
      __pyx_t_33 = new YODA::BinnedEstimate3D<int,std::string,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 261, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_33); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":262
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_6, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":257
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,int](edges_i[0], edges_s[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":263
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L64_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L64_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L64_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":264
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_162genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 264, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 264, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":265
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_165genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":266
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_168genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":265
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 265, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 265, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 265, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":267
 *           edges_d = [ list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 267, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 267, __pyx_L1_error)
    try {
      __pyx_t_34 = new YODA::BinnedEstimate3D<std::string,double,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":268
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":263
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[int,string,string](edges_i[0], edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":269
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L67_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L67_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L67_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":270
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_171genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 270, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 270, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":271
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_174genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 271, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 271, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":272
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_177genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 272, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 272, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":273
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 273, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 273, __pyx_L1_error)
    try {
      __pyx_t_35 = new YODA::BinnedEstimate3D<std::string,double,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_35); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":274
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_6, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 274, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":269
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,double](edges_s[0], edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":275
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L70_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L70_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L70_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":276
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_180genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":277
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_183genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":276
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 276, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 276, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 276, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":278
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_186genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 278, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 278, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":279
 *                       list(str(x) for x in edgesA3), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 279, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 279, __pyx_L1_error)
    try {
      __pyx_t_36 = new YODA::BinnedEstimate3D<std::string,double,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 279, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_36); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":280
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 280, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":275
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,int](edges_s[0], edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":281
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L73_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":282
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_189genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 282, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 282, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":283
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_192genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 283, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 283, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":284
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_195genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 284, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":285
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 285, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 285, __pyx_L1_error)
    try {
      __pyx_t_37 = new YODA::BinnedEstimate3D<std::string,int,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 285, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_37); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":286
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_6, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":281
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,double,string](edges_s[0], edges_d[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":287
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L76_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L76_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L76_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":288
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_198genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 288, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":289
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_201genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":290
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_204genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":289
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 289, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 289, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 289, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":291
 *           edges_i = [ list(int(x) for x in edgesA2),
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 291, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 291, __pyx_L1_error)
    try {
      __pyx_t_38 = new YODA::BinnedEstimate3D<std::string,int,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 291, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_38); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":292
 *                       list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":287
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,double](edges_s[0], edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":293
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L79_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L79_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L79_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":294
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_207genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":295
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_210genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":294
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 294, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(18, 294, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_5 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 294, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":296
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_213genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 296, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 296, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":297
 *                       list(str(x) for x in edgesA3), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 297, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 297, __pyx_L1_error)
    try {
      __pyx_t_39 = new YODA::BinnedEstimate3D<std::string,int,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 297, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_39); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":298
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_7, __pyx_t_6, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":293
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,int](edges_s[0], edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA3), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":299
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L82_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L82_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L82_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":300
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_216genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":301
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_219genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":300
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(18, 300, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_12)) __PYX_ERR(18, 300, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_12 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 300, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":302
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_222genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 302, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 302, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":303
 *                       list(str(x) for x in edgesA2), ]
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 303, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 303, __pyx_L1_error)
    try {
      __pyx_t_40 = new YODA::BinnedEstimate3D<std::string,std::string,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 303, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_40); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":304
 *           edges_d = [ list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_6, __pyx_t_7};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 304, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":299
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,int,string](edges_s[0], edges_i[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0], edges_s[1])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":305
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L85_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L85_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L85_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":306
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_225genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":307
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_228genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":306
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_12);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_12)) __PYX_ERR(18, 306, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_7)) __PYX_ERR(18, 306, __pyx_L1_error);
    __pyx_t_12 = 0;
    __pyx_t_7 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 306, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":308
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_231genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 308, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 308, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":309
 *                       list(str(x) for x in edgesA2), ]
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 */
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 309, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 309, __pyx_L1_error)
    try {
      __pyx_t_41 = new YODA::BinnedEstimate3D<std::string,std::string,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_10), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 309, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_41); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":310
 *           edges_i = [ list(int(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_12, __pyx_t_6, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 310, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":305
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,double](edges_s[0], edges_s[1], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":311
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L88_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L88_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L88_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedEstimate3D.pyx":312
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_234genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":313
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_237genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":314
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_240genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":312
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(18, 312, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(18, 312, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_6)) __PYX_ERR(18, 312, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_17 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 312, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":315
 *                       list(str(x) for x in edgesA2),
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])
 *         else:
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 315, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 315, __pyx_L1_error)
    try {
      __pyx_t_42 = new YODA::BinnedEstimate3D<std::string,std::string,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), (__pyx_v_edges_s[2]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 315, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_42); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":316
 *                       list(str(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,string](edges_s[0], edges_s[1], edges_s[2], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[2])); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_7, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":311
 *           cutil.set_owned_ptr(self, new c.BinnedEstimate3D[string,string,int](edges_s[0], edges_s[1], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str) and isinstance(edgesA3[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedEstimate3D.pyx":318
 *           self._set_config(edges_s[0], edges_s[1], edges_s[2])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 318, __pyx_L1_error)
  }
  __pyx_L9:;

  /* "include/generated/BinnedEstimate3D.pyx":148
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_2generator26);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_5generator27);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_8generator28);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_11generator29);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_14generator30);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_17generator31);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_20generator32);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_23generator33);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_26generator34);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_29generator35);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_32generator36);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_35generator37);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_38generator38);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_41generator39);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_44generator40);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_47generator41);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_50generator42);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_53generator43);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_56generator44);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_59generator45);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_62generator46);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_65generator47);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_68generator48);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_71generator49);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_74generator50);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_77generator51);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_80generator52);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_83generator53);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_86generator54);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_89generator55);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_92generator56);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_95generator57);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_98generator58);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_101generator59);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_104generator60);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_107generator61);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_110generator62);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_113generator63);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_116generator64);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_119generator65);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_122generator66);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_125generator67);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_128generator68);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_131generator69);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_134generator70);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_137generator71);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_140generator72);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_143generator73);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_146generator74);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_149generator75);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_152generator76);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_155generator77);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_158generator78);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_161generator79);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_164generator80);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_167generator81);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_170generator82);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_173generator83);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_176generator84);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_179generator85);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_182generator86);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_185generator87);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_188generator88);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_191generator89);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_194generator90);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_197generator91);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_200generator92);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_203generator93);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_206generator94);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_209generator95);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_212generator96);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_215generator97);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_218generator98);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_221generator99);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_224generator100);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_227generator101);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_230generator102);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_233generator103);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_236generator104);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_239generator105);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_16BinnedEstimate3D_24_BinnedEstimate3D__init2_242generator106);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":320
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__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_16BinnedEstimate3D_6__init3, "BinnedEstimate3D.__init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__init3 = {"_BinnedEstimate3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_nbinsY = 0;
  PyObject *__pyx_v_lowerY = 0;
  PyObject *__pyx_v_upperY = 0;
  PyObject *__pyx_v_nbinsZ = 0;
  PyObject *__pyx_v_lowerZ = 0;
  PyObject *__pyx_v_upperZ = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_nbinsY,&__pyx_n_s_lowerY,&__pyx_n_s_upperY,&__pyx_n_s_nbinsZ,&__pyx_n_s_lowerZ,&__pyx_n_s_upperZ,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[9] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[10] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 1); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 2); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 3); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 4); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 5); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 6); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[7]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 7); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[8]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, 8); __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[9] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[10] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 320, __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, "_BinnedEstimate3D__init3") < 0)) __PYX_ERR(18, 320, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_nbinsY = values[3];
    __pyx_v_lowerY = values[4];
    __pyx_v_upperY = values[5];
    __pyx_v_nbinsZ = values[6];
    __pyx_v_lowerZ = values[7];
    __pyx_v_upperZ = values[8];
    __pyx_v_path = ((PyObject*)values[9]);
    __pyx_v_title = ((PyObject*)values[10]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init3", 0, 9, 11, __pyx_nargs); __PYX_ERR(18, 320, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(18, 320, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(18, 320, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY, __pyx_v_nbinsZ, __pyx_v_lowerZ, __pyx_v_upperZ, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_6__init3(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_nbinsZ, PyObject *__pyx_v_lowerZ, PyObject *__pyx_v_upperZ, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  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("_BinnedEstimate3D__init3", 1);

  /* "include/generated/BinnedEstimate3D.pyx":322
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *             linspace(nbinsY, lowerY, upperY),
 *             linspace(nbinsZ, lowerZ, upperZ),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(18, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedEstimate3D.pyx":323
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),             # <<<<<<<<<<<<<<
 *             linspace(nbinsZ, lowerZ, upperZ),
 *         ]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/generated/BinnedEstimate3D.pyx":324
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 *             linspace(nbinsZ, lowerZ, upperZ),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_nbinsZ, __pyx_v_lowerZ, __pyx_v_upperZ};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 324, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "include/generated/BinnedEstimate3D.pyx":321
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 */
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(18, 321, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(18, 321, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_3)) __PYX_ERR(18, 321, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":326
 *             linspace(nbinsZ, lowerZ, upperZ),
 *         ]
 *         self.__init2(edges[0], edges[1], edges[2], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedEstimate3D other):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedEstimate3D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_edges, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_edges, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_t_2, __pyx_t_1, __pyx_t_6, __pyx_v_path, __pyx_v_title};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":320
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":328
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__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_16BinnedEstimate3D_8__init4, "BinnedEstimate3D.__init4(self, BinnedEstimate3D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__init4 = {"_BinnedEstimate3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 328, __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, "_BinnedEstimate3D__init4") < 0)) __PYX_ERR(18, 328, __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_BinnedEstimate3D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedEstimate3D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 328, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init4", __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_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 328, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_8__init4(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  PyObject *__pyx_t_57 = NULL;
  PyObject *__pyx_t_58 = NULL;
  PyObject *__pyx_t_59 = NULL;
  PyObject *__pyx_t_60 = NULL;
  unsigned int __pyx_t_61;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedEstimate3D__init4", 1);

  /* "include/generated/BinnedEstimate3D.pyx":329
 * 
 *     def __init4(self, BinnedEstimate3D other):
 *         if other._config == "ddd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         elif other._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 329, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":330
 *     def __init4(self, BinnedEstimate3D other):
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ddi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 330, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 330, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":329
 * 
 *     def __init4(self, BinnedEstimate3D other):
 *         if other._config == "ddd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         elif other._config == "ddi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":331
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         elif other._config == "ddi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 *         elif other._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 331, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":332
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         elif other._config == "ddi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 332, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 332, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":331
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         elif other._config == "ddi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 *         elif other._config == "dds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":333
 *         elif other._config == "ddi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 *         elif other._config == "dds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 *         elif other._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 333, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":334
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 *         elif other._config == "dds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "did":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 334, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 334, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":333
 *         elif other._config == "ddi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,int]*> other.binned_ddi_ptr().newclone())
 *         elif other._config == "dds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 *         elif other._config == "did":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":335
 *         elif other._config == "dds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 *         elif other._config == "did":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 *         elif other._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 335, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":336
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 *         elif other._config == "did":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 336, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 336, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":335
 *         elif other._config == "dds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,string]*> other.binned_dds_ptr().newclone())
 *         elif other._config == "did":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 *         elif other._config == "dii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":337
 *         elif other._config == "did":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 *         elif other._config == "dii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 *         elif other._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 337, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":338
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 *         elif other._config == "dii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 338, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 338, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":337
 *         elif other._config == "did":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,double]*> other.binned_did_ptr().newclone())
 *         elif other._config == "dii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 *         elif other._config == "dis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":339
 *         elif other._config == "dii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 *         elif other._config == "dis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 *         elif other._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 339, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":340
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 *         elif other._config == "dis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dsd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 340, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 340, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":339
 *         elif other._config == "dii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,int]*> other.binned_dii_ptr().newclone())
 *         elif other._config == "dis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 *         elif other._config == "dsd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":341
 *         elif other._config == "dis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 *         elif other._config == "dsd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 *         elif other._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":342
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 *         elif other._config == "dsd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dsi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 342, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 342, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":341
 *         elif other._config == "dis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,int,string]*> other.binned_dis_ptr().newclone())
 *         elif other._config == "dsd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 *         elif other._config == "dsi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":343
 *         elif other._config == "dsd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 *         elif other._config == "dsi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 *         elif other._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":344
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 *         elif other._config == "dsi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "dss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 344, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 344, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":343
 *         elif other._config == "dsd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,double]*> other.binned_dsd_ptr().newclone())
 *         elif other._config == "dsi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 *         elif other._config == "dss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":345
 *         elif other._config == "dsi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 *         elif other._config == "dss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 *         elif other._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":346
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 *         elif other._config == "dss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "idd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 346, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 346, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":345
 *         elif other._config == "dsi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,int]*> other.binned_dsi_ptr().newclone())
 *         elif other._config == "dss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 *         elif other._config == "idd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":347
 *         elif other._config == "dss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 *         elif other._config == "idd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 *         elif other._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":348
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 *         elif other._config == "idd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "idi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 */
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 348, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 348, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":347
 *         elif other._config == "dss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,string,string]*> other.binned_dss_ptr().newclone())
 *         elif other._config == "idd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 *         elif other._config == "idi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":349
 *         elif other._config == "idd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 *         elif other._config == "idi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 *         elif other._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":350
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 *         elif other._config == "idi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ids":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 350, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 350, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":349
 *         elif other._config == "idd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,double]*> other.binned_idd_ptr().newclone())
 *         elif other._config == "idi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 *         elif other._config == "ids":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":351
 *         elif other._config == "idi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 *         elif other._config == "ids":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 *         elif other._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":352
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 *         elif other._config == "ids":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "iid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 */
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 352, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 352, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":351
 *         elif other._config == "idi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,int]*> other.binned_idi_ptr().newclone())
 *         elif other._config == "ids":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 *         elif other._config == "iid":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":353
 *         elif other._config == "ids":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 *         elif other._config == "iid":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 *         elif other._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":354
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 *         elif other._config == "iid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "iii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 */
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 354, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 354, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":353
 *         elif other._config == "ids":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,double,string]*> other.binned_ids_ptr().newclone())
 *         elif other._config == "iid":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 *         elif other._config == "iii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":355
 *         elif other._config == "iid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 *         elif other._config == "iii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 *         elif other._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":356
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 *         elif other._config == "iii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "iis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 356, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 356, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":355
 *         elif other._config == "iid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,double]*> other.binned_iid_ptr().newclone())
 *         elif other._config == "iii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 *         elif other._config == "iis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":357
 *         elif other._config == "iii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 *         elif other._config == "iis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 *         elif other._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":358
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 *         elif other._config == "iis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "isd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 */
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 358, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 358, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":357
 *         elif other._config == "iii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,int]*> other.binned_iii_ptr().newclone())
 *         elif other._config == "iis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 *         elif other._config == "isd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":359
 *         elif other._config == "iis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 *         elif other._config == "isd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 *         elif other._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":360
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 *         elif other._config == "isd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "isi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 */
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 360, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 360, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":359
 *         elif other._config == "iis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,int,string]*> other.binned_iis_ptr().newclone())
 *         elif other._config == "isd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 *         elif other._config == "isi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":361
 *         elif other._config == "isd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 *         elif other._config == "isi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 *         elif other._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 361, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":362
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 *         elif other._config == "isi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "iss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 362, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 362, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":361
 *         elif other._config == "isd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,double]*> other.binned_isd_ptr().newclone())
 *         elif other._config == "isi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 *         elif other._config == "iss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":363
 *         elif other._config == "isi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 *         elif other._config == "iss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 *         elif other._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 363, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":364
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 *         elif other._config == "iss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sdd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 */
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 364, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 364, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_38)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":363
 *         elif other._config == "isi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,int]*> other.binned_isi_ptr().newclone())
 *         elif other._config == "iss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 *         elif other._config == "sdd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":365
 *         elif other._config == "iss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 *         elif other._config == "sdd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 *         elif other._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 365, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":366
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 *         elif other._config == "sdd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sdi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 */
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 366, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 366, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_40)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":365
 *         elif other._config == "iss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[int,string,string]*> other.binned_iss_ptr().newclone())
 *         elif other._config == "sdd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 *         elif other._config == "sdi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":367
 *         elif other._config == "sdd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 *         elif other._config == "sdi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 *         elif other._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 367, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":368
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 *         elif other._config == "sdi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 */
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 368, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 368, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_42)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":367
 *         elif other._config == "sdd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,double]*> other.binned_sdd_ptr().newclone())
 *         elif other._config == "sdi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 *         elif other._config == "sds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":369
 *         elif other._config == "sdi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 *         elif other._config == "sds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 *         elif other._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 369, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":370
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 *         elif other._config == "sds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 */
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 370, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 370, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_44)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 370, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":369
 *         elif other._config == "sdi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,int]*> other.binned_sdi_ptr().newclone())
 *         elif other._config == "sds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 *         elif other._config == "sid":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":371
 *         elif other._config == "sds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 *         elif other._config == "sid":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 *         elif other._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 371, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":372
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 *         elif other._config == "sid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 */
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 372, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 372, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_46)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":371
 *         elif other._config == "sds":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,double,string]*> other.binned_sds_ptr().newclone())
 *         elif other._config == "sid":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 *         elif other._config == "sii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":373
 *         elif other._config == "sid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 *         elif other._config == "sii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 *         elif other._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 373, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":374
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 *         elif other._config == "sii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 */
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 374, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 374, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":373
 *         elif other._config == "sid":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,double]*> other.binned_sid_ptr().newclone())
 *         elif other._config == "sii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 *         elif other._config == "sis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":375
 *         elif other._config == "sii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 *         elif other._config == "sis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 *         elif other._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 375, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":376
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 *         elif other._config == "sis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ssd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 */
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 376, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 376, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_50)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":375
 *         elif other._config == "sii":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,int]*> other.binned_sii_ptr().newclone())
 *         elif other._config == "sis":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 *         elif other._config == "ssd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":377
 *         elif other._config == "sis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 *         elif other._config == "ssd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 *         elif other._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 377, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":378
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 *         elif other._config == "ssd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ssi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 */
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 378, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 378, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_52)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":377
 *         elif other._config == "sis":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,int,string]*> other.binned_sis_ptr().newclone())
 *         elif other._config == "ssd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 *         elif other._config == "ssi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":379
 *         elif other._config == "ssd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 *         elif other._config == "ssi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 *         elif other._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 379, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":380
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 *         elif other._config == "ssi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,string]*> other.binned_sss_ptr().newclone())
 */
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 380, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 380, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_54)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":379
 *         elif other._config == "ssd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,double]*> other.binned_ssd_ptr().newclone())
 *         elif other._config == "ssi":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 *         elif other._config == "sss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":381
 *         elif other._config == "ssi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 *         elif other._config == "sss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,string]*> other.binned_sss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 381, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":382
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 *         elif other._config == "sss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,string]*> other.binned_sss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 382, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 382, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_56)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":381
 *         elif other._config == "ssi":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,int]*> other.binned_ssi_ptr().newclone())
 *         elif other._config == "sss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,string]*> other.binned_sss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":383
 *         elif other._config == "sss":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[string,string,string]*> other.binned_sss_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_57 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_57)) __PYX_ERR(18, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_57);
  __Pyx_GetModuleGlobalName(__pyx_t_59, __pyx_n_s_Binning); if (unlikely(!__pyx_t_59)) __PYX_ERR(18, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_59);
  __pyx_t_60 = NULL;
  __pyx_t_61 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_59))) {
    __pyx_t_60 = PyMethod_GET_SELF(__pyx_t_59);
    if (likely(__pyx_t_60)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_59);
      __Pyx_INCREF(__pyx_t_60);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_59, function);
      __pyx_t_61 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_60, __pyx_v_other->_binning};
    __pyx_t_58 = __Pyx_PyObject_FastCall(__pyx_t_59, __pyx_callargs+1-__pyx_t_61, 1+__pyx_t_61);
    __Pyx_XDECREF(__pyx_t_60); __pyx_t_60 = 0;
    if (unlikely(!__pyx_t_58)) __PYX_ERR(18, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_58);
    __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0;
  }
  __pyx_t_59 = NULL;
  __pyx_t_61 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_57))) {
    __pyx_t_59 = PyMethod_GET_SELF(__pyx_t_57);
    if (likely(__pyx_t_59)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_57);
      __Pyx_INCREF(__pyx_t_59);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_57, function);
      __pyx_t_61 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_59, __pyx_t_58};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_57, __pyx_callargs+1-__pyx_t_61, 1+__pyx_t_61);
    __Pyx_XDECREF(__pyx_t_59); __pyx_t_59 = 0;
    __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_57); __pyx_t_57 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":328
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */

  /* 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_57);
  __Pyx_XDECREF(__pyx_t_58);
  __Pyx_XDECREF(__pyx_t_59);
  __Pyx_XDECREF(__pyx_t_60);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._BinnedEstimate3D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":385
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":386
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 386, __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/generated/BinnedEstimate3D.pyx":385
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedEstimate3D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":388
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":389
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(18, 389, __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(18, 389, __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(18, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(18, 389, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(18, 389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(18, 389, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(18, 389, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(18, 389, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(18, 389, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 389, __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/BinnedEstimate3D.pyx":388
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedEstimate3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":391
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_14_set_config, "BinnedEstimate3D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<double>  __pyx_t_12;
  std::vector<double>  __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  std::vector<double>  __pyx_t_16;
  std::vector<double>  __pyx_t_17;
  std::vector<int>  __pyx_t_18;
  std::vector<double>  __pyx_t_19;
  std::vector<double>  __pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  std::vector<double>  __pyx_t_22;
  std::vector<int>  __pyx_t_23;
  std::vector<double>  __pyx_t_24;
  std::vector<double>  __pyx_t_25;
  std::vector<int>  __pyx_t_26;
  std::vector<int>  __pyx_t_27;
  std::vector<double>  __pyx_t_28;
  std::vector<int>  __pyx_t_29;
  std::vector<std::string>  __pyx_t_30;
  std::vector<double>  __pyx_t_31;
  std::vector<std::string>  __pyx_t_32;
  std::vector<double>  __pyx_t_33;
  std::vector<double>  __pyx_t_34;
  std::vector<std::string>  __pyx_t_35;
  std::vector<int>  __pyx_t_36;
  std::vector<double>  __pyx_t_37;
  std::vector<std::string>  __pyx_t_38;
  std::vector<std::string>  __pyx_t_39;
  std::vector<int>  __pyx_t_40;
  std::vector<double>  __pyx_t_41;
  std::vector<double>  __pyx_t_42;
  std::vector<int>  __pyx_t_43;
  std::vector<double>  __pyx_t_44;
  std::vector<int>  __pyx_t_45;
  std::vector<int>  __pyx_t_46;
  std::vector<double>  __pyx_t_47;
  std::vector<std::string>  __pyx_t_48;
  std::vector<int>  __pyx_t_49;
  std::vector<int>  __pyx_t_50;
  std::vector<double>  __pyx_t_51;
  std::vector<int>  __pyx_t_52;
  std::vector<int>  __pyx_t_53;
  std::vector<int>  __pyx_t_54;
  std::vector<int>  __pyx_t_55;
  std::vector<int>  __pyx_t_56;
  std::vector<std::string>  __pyx_t_57;
  std::vector<int>  __pyx_t_58;
  std::vector<std::string>  __pyx_t_59;
  std::vector<double>  __pyx_t_60;
  std::vector<int>  __pyx_t_61;
  std::vector<std::string>  __pyx_t_62;
  std::vector<int>  __pyx_t_63;
  std::vector<int>  __pyx_t_64;
  std::vector<std::string>  __pyx_t_65;
  std::vector<std::string>  __pyx_t_66;
  std::vector<std::string>  __pyx_t_67;
  std::vector<double>  __pyx_t_68;
  std::vector<double>  __pyx_t_69;
  std::vector<std::string>  __pyx_t_70;
  std::vector<double>  __pyx_t_71;
  std::vector<int>  __pyx_t_72;
  std::vector<std::string>  __pyx_t_73;
  std::vector<double>  __pyx_t_74;
  std::vector<std::string>  __pyx_t_75;
  std::vector<std::string>  __pyx_t_76;
  std::vector<int>  __pyx_t_77;
  std::vector<double>  __pyx_t_78;
  std::vector<std::string>  __pyx_t_79;
  std::vector<int>  __pyx_t_80;
  std::vector<int>  __pyx_t_81;
  std::vector<std::string>  __pyx_t_82;
  std::vector<int>  __pyx_t_83;
  std::vector<std::string>  __pyx_t_84;
  std::vector<std::string>  __pyx_t_85;
  std::vector<std::string>  __pyx_t_86;
  std::vector<double>  __pyx_t_87;
  std::vector<std::string>  __pyx_t_88;
  std::vector<std::string>  __pyx_t_89;
  std::vector<int>  __pyx_t_90;
  std::vector<std::string>  __pyx_t_91;
  std::vector<std::string>  __pyx_t_92;
  std::vector<std::string>  __pyx_t_93;
  unsigned int __pyx_t_94;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedEstimate3D.pyx":392
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(18, 392, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(18, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":393
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":392
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":394
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(18, 394, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":395
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(18, 395, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(18, 395, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":394
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":396
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(18, 396, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":397
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":396
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":399
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedEstimate3D.pyx":400
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":401
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 401, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 401, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 401, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_ddd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 401, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":402
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 402, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 402, __pyx_L9_error)

          /* "include/generated/BinnedEstimate3D.pyx":401
 *           edges = None
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":404
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 404, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 404, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 404, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":405
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 405, __pyx_L9_error)
        try {
          __pyx_t_12 = ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 405, __pyx_L9_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 405, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":406
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ddd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 406, __pyx_L9_error)
        try {
          __pyx_t_13 = ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 406, __pyx_L9_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 406, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":403
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 403, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 403, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 403, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 403, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 403, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":408
 *               (<c.BinnedEstimate3D[double,double,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ddd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ddd);
        __Pyx_GIVEREF(__pyx_n_s_ddd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ddd;

        /* "include/generated/BinnedEstimate3D.pyx":400
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":409
 *             ])
 *             self._config = "ddd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":410
 *             self._config = "ddd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":411
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 411, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 411, __pyx_L16_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 411, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_ddi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 411, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":412
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 412, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 412, __pyx_L16_error)

          /* "include/generated/BinnedEstimate3D.pyx":411
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":414
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 414, __pyx_L16_error)
        try {
          __pyx_t_16 = ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 414, __pyx_L16_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 414, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":415
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 415, __pyx_L16_error)
        try {
          __pyx_t_17 = ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 415, __pyx_L16_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 415, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":416
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ddi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 416, __pyx_L16_error)
        try {
          __pyx_t_18 = ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 416, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 416, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":413
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 413, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 413, __pyx_L16_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 413, __pyx_L16_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 413, __pyx_L16_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 413, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":418
 *               (<c.BinnedEstimate3D[double,double,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ddi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ddi);
        __Pyx_GIVEREF(__pyx_n_s_ddi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ddi;

        /* "include/generated/BinnedEstimate3D.pyx":410
 *             self._config = "ddd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,int]*> self.ptr())._config()) != "ddi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":419
 *             ])
 *             self._config = "ddi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":420
 *             self._config = "ddi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":421
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 421, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 421, __pyx_L23_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 421, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_dds, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 421, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":422
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 422, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 422, __pyx_L23_error)

          /* "include/generated/BinnedEstimate3D.pyx":421
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":424
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 424, __pyx_L23_error)
        try {
          __pyx_t_19 = ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 424, __pyx_L23_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 424, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":425
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 425, __pyx_L23_error)
        try {
          __pyx_t_20 = ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 425, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_20); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 425, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":426
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dds"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 426, __pyx_L23_error)
        try {
          __pyx_t_21 = ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 426, __pyx_L23_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 426, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":423
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 423, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 423, __pyx_L23_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 423, __pyx_L23_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 423, __pyx_L23_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 423, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":428
 *               (<c.BinnedEstimate3D[double,double,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dds"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dds);
        __Pyx_GIVEREF(__pyx_n_s_dds);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dds;

        /* "include/generated/BinnedEstimate3D.pyx":420
 *             self._config = "ddi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,double,string]*> self.ptr())._config()) != "dds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":429
 *             ])
 *             self._config = "dds"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":430
 *             self._config = "dds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":431
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 431, __pyx_L30_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 431, __pyx_L30_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 431, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_did, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 431, __pyx_L30_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":432
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 432, __pyx_L30_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 432, __pyx_L30_error)

          /* "include/generated/BinnedEstimate3D.pyx":431
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":434
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 434, __pyx_L30_error)
        try {
          __pyx_t_22 = ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 434, __pyx_L30_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_22); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 434, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":435
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 435, __pyx_L30_error)
        try {
          __pyx_t_23 = ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 435, __pyx_L30_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_23); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 435, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":436
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "did"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 436, __pyx_L30_error)
        try {
          __pyx_t_24 = ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 436, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 436, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":433
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 433, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 433, __pyx_L30_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 433, __pyx_L30_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 433, __pyx_L30_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 433, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":438
 *               (<c.BinnedEstimate3D[double,int,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "did"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_did);
        __Pyx_GIVEREF(__pyx_n_s_did);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_did;

        /* "include/generated/BinnedEstimate3D.pyx":430
 *             self._config = "dds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,double]*> self.ptr())._config()) != "did":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L35_try_end;
      __pyx_L30_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":439
 *             ])
 *             self._config = "did"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L31_exception_handled;
      }
      __pyx_L31_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L35_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":440
 *             self._config = "did"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":441
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 441, __pyx_L37_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 441, __pyx_L37_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 441, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_dii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 441, __pyx_L37_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":442
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 442, __pyx_L37_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 442, __pyx_L37_error)

          /* "include/generated/BinnedEstimate3D.pyx":441
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":444
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 444, __pyx_L37_error)
        try {
          __pyx_t_25 = ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 444, __pyx_L37_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 444, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":445
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 445, __pyx_L37_error)
        try {
          __pyx_t_26 = ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 445, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 445, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":446
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 446, __pyx_L37_error)
        try {
          __pyx_t_27 = ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 446, __pyx_L37_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_27); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 446, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":443
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 443, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 443, __pyx_L37_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 443, __pyx_L37_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 443, __pyx_L37_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 443, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":448
 *               (<c.BinnedEstimate3D[double,int,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dii);
        __Pyx_GIVEREF(__pyx_n_s_dii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dii;

        /* "include/generated/BinnedEstimate3D.pyx":440
 *             self._config = "did"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,int]*> self.ptr())._config()) != "dii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L42_try_end;
      __pyx_L37_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":449
 *             ])
 *             self._config = "dii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L38_exception_handled;
      }
      __pyx_L38_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L42_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":450
 *             self._config = "dii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":451
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 451, __pyx_L44_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 451, __pyx_L44_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 451, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_dis, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 451, __pyx_L44_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":452
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 452, __pyx_L44_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 452, __pyx_L44_error)

          /* "include/generated/BinnedEstimate3D.pyx":451
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":454
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 454, __pyx_L44_error)
        try {
          __pyx_t_28 = ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 454, __pyx_L44_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_28); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 454, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":455
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 455, __pyx_L44_error)
        try {
          __pyx_t_29 = ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 455, __pyx_L44_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_29); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 455, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":456
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dis"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 456, __pyx_L44_error)
        try {
          __pyx_t_30 = ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 456, __pyx_L44_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_30); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 456, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":453
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 453, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 453, __pyx_L44_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 453, __pyx_L44_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 453, __pyx_L44_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 453, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":458
 *               (<c.BinnedEstimate3D[double,int,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dis"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dis);
        __Pyx_GIVEREF(__pyx_n_s_dis);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dis;

        /* "include/generated/BinnedEstimate3D.pyx":450
 *             self._config = "dii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,int,string]*> self.ptr())._config()) != "dis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L49_try_end;
      __pyx_L44_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":459
 *             ])
 *             self._config = "dis"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L45_exception_handled;
      }
      __pyx_L45_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L49_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":460
 *             self._config = "dis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":461
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 461, __pyx_L51_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 461, __pyx_L51_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 461, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_dsd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 461, __pyx_L51_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":462
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 462, __pyx_L51_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 462, __pyx_L51_error)

          /* "include/generated/BinnedEstimate3D.pyx":461
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":464
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 464, __pyx_L51_error)
        try {
          __pyx_t_31 = ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 464, __pyx_L51_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_31); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 464, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":465
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 465, __pyx_L51_error)
        try {
          __pyx_t_32 = ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 465, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_32); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 465, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":466
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dsd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 466, __pyx_L51_error)
        try {
          __pyx_t_33 = ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 466, __pyx_L51_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_33); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 466, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":463
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 463, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 463, __pyx_L51_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 463, __pyx_L51_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 463, __pyx_L51_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 463, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":468
 *               (<c.BinnedEstimate3D[double,string,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dsd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dsd);
        __Pyx_GIVEREF(__pyx_n_s_dsd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dsd;

        /* "include/generated/BinnedEstimate3D.pyx":460
 *             self._config = "dis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,double]*> self.ptr())._config()) != "dsd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L56_try_end;
      __pyx_L51_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":469
 *             ])
 *             self._config = "dsd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L52_exception_handled;
      }
      __pyx_L52_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L56_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":470
 *             self._config = "dsd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":471
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 471, __pyx_L58_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 471, __pyx_L58_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 471, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_dsi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 471, __pyx_L58_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":472
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 472, __pyx_L58_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 472, __pyx_L58_error)

          /* "include/generated/BinnedEstimate3D.pyx":471
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":474
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 474, __pyx_L58_error)
        try {
          __pyx_t_34 = ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 474, __pyx_L58_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_34); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 474, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":475
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 475, __pyx_L58_error)
        try {
          __pyx_t_35 = ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 475, __pyx_L58_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_35); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 475, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":476
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dsi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 476, __pyx_L58_error)
        try {
          __pyx_t_36 = ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 476, __pyx_L58_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_36); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 476, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":473
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 473, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 473, __pyx_L58_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 473, __pyx_L58_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 473, __pyx_L58_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 473, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":478
 *               (<c.BinnedEstimate3D[double,string,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dsi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dsi);
        __Pyx_GIVEREF(__pyx_n_s_dsi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dsi;

        /* "include/generated/BinnedEstimate3D.pyx":470
 *             self._config = "dsd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,int]*> self.ptr())._config()) != "dsi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L63_try_end;
      __pyx_L58_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":479
 *             ])
 *             self._config = "dsi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L59_exception_handled;
      }
      __pyx_L59_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L63_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":480
 *             self._config = "dsi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":481
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 481, __pyx_L65_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 481, __pyx_L65_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 481, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_dss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 481, __pyx_L65_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":482
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 482, __pyx_L65_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 482, __pyx_L65_error)

          /* "include/generated/BinnedEstimate3D.pyx":481
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":484
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 484, __pyx_L65_error)
        try {
          __pyx_t_37 = ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 484, __pyx_L65_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_37); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 484, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":485
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 485, __pyx_L65_error)
        try {
          __pyx_t_38 = ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 485, __pyx_L65_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_38); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 485, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":486
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 486, __pyx_L65_error)
        try {
          __pyx_t_39 = ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 486, __pyx_L65_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_39); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 486, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":483
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 483, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 483, __pyx_L65_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 483, __pyx_L65_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 483, __pyx_L65_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 483, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":488
 *               (<c.BinnedEstimate3D[double,string,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "dss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dss);
        __Pyx_GIVEREF(__pyx_n_s_dss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dss;

        /* "include/generated/BinnedEstimate3D.pyx":480
 *             self._config = "dsi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[double,string,string]*> self.ptr())._config()) != "dss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L70_try_end;
      __pyx_L65_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":489
 *             ])
 *             self._config = "dss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L66_exception_handled;
      }
      __pyx_L66_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L70_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":490
 *             self._config = "dss"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":491
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 491, __pyx_L72_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 491, __pyx_L72_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 491, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_idd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 491, __pyx_L72_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":492
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 492, __pyx_L72_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 492, __pyx_L72_error)

          /* "include/generated/BinnedEstimate3D.pyx":491
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":494
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 494, __pyx_L72_error)
        try {
          __pyx_t_40 = ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 494, __pyx_L72_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_40); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 494, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":495
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 495, __pyx_L72_error)
        try {
          __pyx_t_41 = ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 495, __pyx_L72_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_41); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 495, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":496
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "idd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 496, __pyx_L72_error)
        try {
          __pyx_t_42 = ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 496, __pyx_L72_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_42); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 496, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":493
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 493, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 493, __pyx_L72_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 493, __pyx_L72_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 493, __pyx_L72_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 493, __pyx_L72_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":498
 *               (<c.BinnedEstimate3D[int,double,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "idd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_idd);
        __Pyx_GIVEREF(__pyx_n_s_idd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_idd;

        /* "include/generated/BinnedEstimate3D.pyx":490
 *             self._config = "dss"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,double]*> self.ptr())._config()) != "idd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L77_try_end;
      __pyx_L72_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":499
 *             ])
 *             self._config = "idd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L73_exception_handled;
      }
      __pyx_L73_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L77_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":500
 *             self._config = "idd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":501
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 501, __pyx_L79_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 501, __pyx_L79_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 501, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_idi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 501, __pyx_L79_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":502
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 502, __pyx_L79_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 502, __pyx_L79_error)

          /* "include/generated/BinnedEstimate3D.pyx":501
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":504
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 504, __pyx_L79_error)
        try {
          __pyx_t_43 = ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 504, __pyx_L79_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_43); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 504, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":505
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 505, __pyx_L79_error)
        try {
          __pyx_t_44 = ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 505, __pyx_L79_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_44); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 505, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":506
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "idi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 506, __pyx_L79_error)
        try {
          __pyx_t_45 = ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 506, __pyx_L79_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_45); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 506, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":503
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 503, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 503, __pyx_L79_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 503, __pyx_L79_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 503, __pyx_L79_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 503, __pyx_L79_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":508
 *               (<c.BinnedEstimate3D[int,double,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "idi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_idi);
        __Pyx_GIVEREF(__pyx_n_s_idi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_idi;

        /* "include/generated/BinnedEstimate3D.pyx":500
 *             self._config = "idd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,int]*> self.ptr())._config()) != "idi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L84_try_end;
      __pyx_L79_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":509
 *             ])
 *             self._config = "idi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L80_exception_handled;
      }
      __pyx_L80_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L84_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":510
 *             self._config = "idi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":511
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 511, __pyx_L86_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 511, __pyx_L86_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 511, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_ids, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 511, __pyx_L86_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":512
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 512, __pyx_L86_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 512, __pyx_L86_error)

          /* "include/generated/BinnedEstimate3D.pyx":511
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":514
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 514, __pyx_L86_error)
        try {
          __pyx_t_46 = ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 514, __pyx_L86_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_46); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 514, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":515
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 515, __pyx_L86_error)
        try {
          __pyx_t_47 = ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 515, __pyx_L86_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_47); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 515, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":516
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ids"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 516, __pyx_L86_error)
        try {
          __pyx_t_48 = ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 516, __pyx_L86_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_48); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 516, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":513
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 513, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 513, __pyx_L86_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 513, __pyx_L86_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 513, __pyx_L86_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 513, __pyx_L86_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":518
 *               (<c.BinnedEstimate3D[int,double,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ids"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ids);
        __Pyx_GIVEREF(__pyx_n_s_ids);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ids;

        /* "include/generated/BinnedEstimate3D.pyx":510
 *             self._config = "idi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,double,string]*> self.ptr())._config()) != "ids":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L91_try_end;
      __pyx_L86_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":519
 *             ])
 *             self._config = "ids"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L87_exception_handled;
      }
      __pyx_L87_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L91_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":520
 *             self._config = "ids"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":521
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 521, __pyx_L93_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 521, __pyx_L93_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 521, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_iid, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 521, __pyx_L93_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":522
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 522, __pyx_L93_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 522, __pyx_L93_error)

          /* "include/generated/BinnedEstimate3D.pyx":521
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":524
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 524, __pyx_L93_error)
        try {
          __pyx_t_49 = ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 524, __pyx_L93_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_49); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 524, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":525
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 525, __pyx_L93_error)
        try {
          __pyx_t_50 = ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 525, __pyx_L93_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_50); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 525, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":526
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "iid"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 526, __pyx_L93_error)
        try {
          __pyx_t_51 = ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 526, __pyx_L93_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_51); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 526, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":523
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 523, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 523, __pyx_L93_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 523, __pyx_L93_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 523, __pyx_L93_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 523, __pyx_L93_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":528
 *               (<c.BinnedEstimate3D[int,int,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "iid"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_iid);
        __Pyx_GIVEREF(__pyx_n_s_iid);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_iid;

        /* "include/generated/BinnedEstimate3D.pyx":520
 *             self._config = "ids"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,double]*> self.ptr())._config()) != "iid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L98_try_end;
      __pyx_L93_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":529
 *             ])
 *             self._config = "iid"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L94_exception_handled;
      }
      __pyx_L94_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L98_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":530
 *             self._config = "iid"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":531
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 531, __pyx_L100_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 531, __pyx_L100_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 531, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_iii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 531, __pyx_L100_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":532
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 532, __pyx_L100_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 532, __pyx_L100_error)

          /* "include/generated/BinnedEstimate3D.pyx":531
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":534
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 534, __pyx_L100_error)
        try {
          __pyx_t_52 = ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 534, __pyx_L100_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_52); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 534, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":535
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 535, __pyx_L100_error)
        try {
          __pyx_t_53 = ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 535, __pyx_L100_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_53); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 535, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":536
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "iii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 536, __pyx_L100_error)
        try {
          __pyx_t_54 = ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 536, __pyx_L100_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_54); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 536, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":533
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 533, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 533, __pyx_L100_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 533, __pyx_L100_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 533, __pyx_L100_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 533, __pyx_L100_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":538
 *               (<c.BinnedEstimate3D[int,int,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "iii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_iii);
        __Pyx_GIVEREF(__pyx_n_s_iii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_iii;

        /* "include/generated/BinnedEstimate3D.pyx":530
 *             self._config = "iid"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,int]*> self.ptr())._config()) != "iii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L105_try_end;
      __pyx_L100_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":539
 *             ])
 *             self._config = "iii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L101_exception_handled;
      }
      __pyx_L101_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L105_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":540
 *             self._config = "iii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":541
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 541, __pyx_L107_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 541, __pyx_L107_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 541, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_iis, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 541, __pyx_L107_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":542
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 542, __pyx_L107_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 542, __pyx_L107_error)

          /* "include/generated/BinnedEstimate3D.pyx":541
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":544
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 544, __pyx_L107_error)
        try {
          __pyx_t_55 = ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 544, __pyx_L107_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_55); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 544, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":545
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 545, __pyx_L107_error)
        try {
          __pyx_t_56 = ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 545, __pyx_L107_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_56); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 545, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":546
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "iis"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 546, __pyx_L107_error)
        try {
          __pyx_t_57 = ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 546, __pyx_L107_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_57); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 546, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":543
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 543, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 543, __pyx_L107_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 543, __pyx_L107_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 543, __pyx_L107_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 543, __pyx_L107_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":548
 *               (<c.BinnedEstimate3D[int,int,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "iis"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_iis);
        __Pyx_GIVEREF(__pyx_n_s_iis);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_iis;

        /* "include/generated/BinnedEstimate3D.pyx":540
 *             self._config = "iii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,int,string]*> self.ptr())._config()) != "iis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L112_try_end;
      __pyx_L107_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":549
 *             ])
 *             self._config = "iis"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L108_exception_handled;
      }
      __pyx_L108_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L112_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":550
 *             self._config = "iis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":551
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 551, __pyx_L114_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 551, __pyx_L114_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 551, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_isd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 551, __pyx_L114_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":552
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 552, __pyx_L114_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 552, __pyx_L114_error)

          /* "include/generated/BinnedEstimate3D.pyx":551
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":554
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 554, __pyx_L114_error)
        try {
          __pyx_t_58 = ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 554, __pyx_L114_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_58); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 554, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":555
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 555, __pyx_L114_error)
        try {
          __pyx_t_59 = ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 555, __pyx_L114_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_59); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 555, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":556
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "isd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 556, __pyx_L114_error)
        try {
          __pyx_t_60 = ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 556, __pyx_L114_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_60); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 556, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":553
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 553, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 553, __pyx_L114_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 553, __pyx_L114_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 553, __pyx_L114_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 553, __pyx_L114_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":558
 *               (<c.BinnedEstimate3D[int,string,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "isd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_isd);
        __Pyx_GIVEREF(__pyx_n_s_isd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_isd;

        /* "include/generated/BinnedEstimate3D.pyx":550
 *             self._config = "iis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,double]*> self.ptr())._config()) != "isd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L119_try_end;
      __pyx_L114_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":559
 *             ])
 *             self._config = "isd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L115_exception_handled;
      }
      __pyx_L115_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L119_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":560
 *             self._config = "isd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":561
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 561, __pyx_L121_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 561, __pyx_L121_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 561, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_isi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 561, __pyx_L121_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":562
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 562, __pyx_L121_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 562, __pyx_L121_error)

          /* "include/generated/BinnedEstimate3D.pyx":561
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":564
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 564, __pyx_L121_error)
        try {
          __pyx_t_61 = ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 564, __pyx_L121_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_61); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 564, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":565
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 565, __pyx_L121_error)
        try {
          __pyx_t_62 = ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 565, __pyx_L121_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_62); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 565, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":566
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "isi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 566, __pyx_L121_error)
        try {
          __pyx_t_63 = ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 566, __pyx_L121_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_63); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 566, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":563
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 563, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 563, __pyx_L121_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 563, __pyx_L121_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 563, __pyx_L121_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 563, __pyx_L121_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":568
 *               (<c.BinnedEstimate3D[int,string,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "isi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_isi);
        __Pyx_GIVEREF(__pyx_n_s_isi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_isi;

        /* "include/generated/BinnedEstimate3D.pyx":560
 *             self._config = "isd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,int]*> self.ptr())._config()) != "isi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L126_try_end;
      __pyx_L121_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":569
 *             ])
 *             self._config = "isi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L122_exception_handled;
      }
      __pyx_L122_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L126_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":570
 *             self._config = "isi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":571
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 571, __pyx_L128_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 571, __pyx_L128_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 571, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_iss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 571, __pyx_L128_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":572
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 572, __pyx_L128_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 572, __pyx_L128_error)

          /* "include/generated/BinnedEstimate3D.pyx":571
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":574
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 574, __pyx_L128_error)
        try {
          __pyx_t_64 = ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 574, __pyx_L128_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_64); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 574, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":575
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 575, __pyx_L128_error)
        try {
          __pyx_t_65 = ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 575, __pyx_L128_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_65); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 575, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":576
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "iss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 576, __pyx_L128_error)
        try {
          __pyx_t_66 = ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 576, __pyx_L128_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_66); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 576, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":573
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 573, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 573, __pyx_L128_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 573, __pyx_L128_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 573, __pyx_L128_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 573, __pyx_L128_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":578
 *               (<c.BinnedEstimate3D[int,string,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "iss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_iss);
        __Pyx_GIVEREF(__pyx_n_s_iss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_iss;

        /* "include/generated/BinnedEstimate3D.pyx":570
 *             self._config = "isi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[int,string,string]*> self.ptr())._config()) != "iss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L133_try_end;
      __pyx_L128_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":579
 *             ])
 *             self._config = "iss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L129_exception_handled;
      }
      __pyx_L129_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L133_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":580
 *             self._config = "iss"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":581
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 581, __pyx_L135_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 581, __pyx_L135_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 581, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_sdd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 581, __pyx_L135_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":582
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 582, __pyx_L135_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 582, __pyx_L135_error)

          /* "include/generated/BinnedEstimate3D.pyx":581
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":584
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 584, __pyx_L135_error)
        try {
          __pyx_t_67 = ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 584, __pyx_L135_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_67); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 584, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":585
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 585, __pyx_L135_error)
        try {
          __pyx_t_68 = ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 585, __pyx_L135_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_68); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 585, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":586
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sdd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 586, __pyx_L135_error)
        try {
          __pyx_t_69 = ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 586, __pyx_L135_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_double(__pyx_t_69); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 586, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":583
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 583, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 583, __pyx_L135_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 583, __pyx_L135_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 583, __pyx_L135_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 583, __pyx_L135_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":588
 *               (<c.BinnedEstimate3D[string,double,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sdd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sdd);
        __Pyx_GIVEREF(__pyx_n_s_sdd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sdd;

        /* "include/generated/BinnedEstimate3D.pyx":580
 *             self._config = "iss"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,double]*> self.ptr())._config()) != "sdd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L140_try_end;
      __pyx_L135_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":589
 *             ])
 *             self._config = "sdd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L136_exception_handled;
      }
      __pyx_L136_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L140_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":590
 *             self._config = "sdd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":591
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 591, __pyx_L142_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 591, __pyx_L142_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 591, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_sdi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 591, __pyx_L142_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":592
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 592, __pyx_L142_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 592, __pyx_L142_error)

          /* "include/generated/BinnedEstimate3D.pyx":591
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":594
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 594, __pyx_L142_error)
        try {
          __pyx_t_70 = ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 594, __pyx_L142_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_70); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 594, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":595
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 595, __pyx_L142_error)
        try {
          __pyx_t_71 = ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 595, __pyx_L142_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_71); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 595, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":596
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sdi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 596, __pyx_L142_error)
        try {
          __pyx_t_72 = ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 596, __pyx_L142_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_72); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 596, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":593
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 593, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 593, __pyx_L142_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 593, __pyx_L142_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 593, __pyx_L142_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 593, __pyx_L142_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":598
 *               (<c.BinnedEstimate3D[string,double,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sdi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sdi);
        __Pyx_GIVEREF(__pyx_n_s_sdi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sdi;

        /* "include/generated/BinnedEstimate3D.pyx":590
 *             self._config = "sdd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,int]*> self.ptr())._config()) != "sdi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L147_try_end;
      __pyx_L142_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":599
 *             ])
 *             self._config = "sdi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L143_exception_handled;
      }
      __pyx_L143_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L147_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":600
 *             self._config = "sdi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":601
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 601, __pyx_L149_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 601, __pyx_L149_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 601, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_sds, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 601, __pyx_L149_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":602
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 602, __pyx_L149_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 602, __pyx_L149_error)

          /* "include/generated/BinnedEstimate3D.pyx":601
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":604
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 604, __pyx_L149_error)
        try {
          __pyx_t_73 = ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 604, __pyx_L149_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_73); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 604, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":605
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 605, __pyx_L149_error)
        try {
          __pyx_t_74 = ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 605, __pyx_L149_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_74); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 605, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":606
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sds"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 606, __pyx_L149_error)
        try {
          __pyx_t_75 = ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 606, __pyx_L149_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_75); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 606, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":603
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 603, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 603, __pyx_L149_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 603, __pyx_L149_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 603, __pyx_L149_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 603, __pyx_L149_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":608
 *               (<c.BinnedEstimate3D[string,double,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sds"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sds);
        __Pyx_GIVEREF(__pyx_n_s_sds);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sds;

        /* "include/generated/BinnedEstimate3D.pyx":600
 *             self._config = "sdi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,double,string]*> self.ptr())._config()) != "sds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L154_try_end;
      __pyx_L149_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":609
 *             ])
 *             self._config = "sds"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L150_exception_handled;
      }
      __pyx_L150_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L154_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":610
 *             self._config = "sds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":611
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 611, __pyx_L156_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 611, __pyx_L156_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 611, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_sid, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 611, __pyx_L156_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":612
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 612, __pyx_L156_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 612, __pyx_L156_error)

          /* "include/generated/BinnedEstimate3D.pyx":611
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":614
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 614, __pyx_L156_error)
        try {
          __pyx_t_76 = ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 614, __pyx_L156_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_76); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 614, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":615
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 615, __pyx_L156_error)
        try {
          __pyx_t_77 = ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 615, __pyx_L156_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_77); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 615, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":616
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sid"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 616, __pyx_L156_error)
        try {
          __pyx_t_78 = ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 616, __pyx_L156_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_78); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 616, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":613
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 613, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 613, __pyx_L156_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 613, __pyx_L156_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 613, __pyx_L156_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 613, __pyx_L156_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":618
 *               (<c.BinnedEstimate3D[string,int,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sid"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sid);
        __Pyx_GIVEREF(__pyx_n_s_sid);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sid;

        /* "include/generated/BinnedEstimate3D.pyx":610
 *             self._config = "sds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,double]*> self.ptr())._config()) != "sid":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L161_try_end;
      __pyx_L156_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":619
 *             ])
 *             self._config = "sid"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L157_exception_handled;
      }
      __pyx_L157_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L161_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":620
 *             self._config = "sid"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":621
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 621, __pyx_L163_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 621, __pyx_L163_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 621, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_sii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 621, __pyx_L163_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":622
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 622, __pyx_L163_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 622, __pyx_L163_error)

          /* "include/generated/BinnedEstimate3D.pyx":621
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":624
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 624, __pyx_L163_error)
        try {
          __pyx_t_79 = ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 624, __pyx_L163_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_79); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 624, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":625
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 625, __pyx_L163_error)
        try {
          __pyx_t_80 = ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 625, __pyx_L163_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_80); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 625, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":626
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 626, __pyx_L163_error)
        try {
          __pyx_t_81 = ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 626, __pyx_L163_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_int(__pyx_t_81); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 626, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":623
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 623, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 623, __pyx_L163_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 623, __pyx_L163_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 623, __pyx_L163_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 623, __pyx_L163_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":628
 *               (<c.BinnedEstimate3D[string,int,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sii);
        __Pyx_GIVEREF(__pyx_n_s_sii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sii;

        /* "include/generated/BinnedEstimate3D.pyx":620
 *             self._config = "sid"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,int]*> self.ptr())._config()) != "sii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L168_try_end;
      __pyx_L163_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":629
 *             ])
 *             self._config = "sii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L164_exception_handled;
      }
      __pyx_L164_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L168_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":630
 *             self._config = "sii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":631
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 631, __pyx_L170_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 631, __pyx_L170_error)
        }
        __pyx_t_15 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 631, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_15, __pyx_n_s_sis, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 631, __pyx_L170_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":632
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 632, __pyx_L170_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(18, 632, __pyx_L170_error)

          /* "include/generated/BinnedEstimate3D.pyx":631
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":634
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 634, __pyx_L170_error)
        try {
          __pyx_t_82 = ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 634, __pyx_L170_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_82); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 634, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":635
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 635, __pyx_L170_error)
        try {
          __pyx_t_83 = ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 635, __pyx_L170_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_int(__pyx_t_83); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 635, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":636
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sis"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 636, __pyx_L170_error)
        try {
          __pyx_t_84 = ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 636, __pyx_L170_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_84); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 636, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":633
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 633, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_15)) __PYX_ERR(18, 633, __pyx_L170_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_14)) __PYX_ERR(18, 633, __pyx_L170_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_5)) __PYX_ERR(18, 633, __pyx_L170_error);
        __pyx_t_15 = 0;
        __pyx_t_14 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 633, __pyx_L170_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":638
 *               (<c.BinnedEstimate3D[string,int,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sis"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sis);
        __Pyx_GIVEREF(__pyx_n_s_sis);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sis;

        /* "include/generated/BinnedEstimate3D.pyx":630
 *             self._config = "sii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,int,string]*> self.ptr())._config()) != "sis":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L175_try_end;
      __pyx_L170_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":639
 *             ])
 *             self._config = "sis"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L171_exception_handled;
      }
      __pyx_L171_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L175_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":640
 *             self._config = "sis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":641
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 641, __pyx_L177_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 641, __pyx_L177_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 641, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_ssd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 641, __pyx_L177_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":642
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 642, __pyx_L177_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(18, 642, __pyx_L177_error)

          /* "include/generated/BinnedEstimate3D.pyx":641
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":644
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 644, __pyx_L177_error)
        try {
          __pyx_t_85 = ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 644, __pyx_L177_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_85); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 644, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":645
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 645, __pyx_L177_error)
        try {
          __pyx_t_86 = ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 645, __pyx_L177_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_86); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 645, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":646
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ssd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 646, __pyx_L177_error)
        try {
          __pyx_t_87 = ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 646, __pyx_L177_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_87); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 646, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":643
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 643, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(18, 643, __pyx_L177_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(18, 643, __pyx_L177_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(18, 643, __pyx_L177_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 643, __pyx_L177_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":648
 *               (<c.BinnedEstimate3D[string,string,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ssd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ssd);
        __Pyx_GIVEREF(__pyx_n_s_ssd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ssd;

        /* "include/generated/BinnedEstimate3D.pyx":640
 *             self._config = "sis"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,double]*> self.ptr())._config()) != "ssd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L182_try_end;
      __pyx_L177_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":649
 *             ])
 *             self._config = "ssd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L178_exception_handled;
      }
      __pyx_L178_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L182_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":650
 *             self._config = "ssd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":651
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 651, __pyx_L184_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 651, __pyx_L184_error)
        }
        __pyx_t_14 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 651, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_14, __pyx_n_s_ssi, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 651, __pyx_L184_error)
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":652
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 652, __pyx_L184_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_Raise(__pyx_t_14, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __PYX_ERR(18, 652, __pyx_L184_error)

          /* "include/generated/BinnedEstimate3D.pyx":651
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":654
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 654, __pyx_L184_error)
        try {
          __pyx_t_88 = ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 654, __pyx_L184_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_88); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 654, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedEstimate3D.pyx":655
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 655, __pyx_L184_error)
        try {
          __pyx_t_89 = ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 655, __pyx_L184_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_89); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 655, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":656
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ssi"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 656, __pyx_L184_error)
        try {
          __pyx_t_90 = ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 656, __pyx_L184_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_90); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 656, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":653
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 653, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_14)) __PYX_ERR(18, 653, __pyx_L184_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_15)) __PYX_ERR(18, 653, __pyx_L184_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(18, 653, __pyx_L184_error);
        __pyx_t_14 = 0;
        __pyx_t_15 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 653, __pyx_L184_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":658
 *               (<c.BinnedEstimate3D[string,string,int]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ssi"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ssi);
        __Pyx_GIVEREF(__pyx_n_s_ssi);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ssi;

        /* "include/generated/BinnedEstimate3D.pyx":650
 *             self._config = "ssd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,int]*> self.ptr())._config()) != "ssi":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L189_try_end;
      __pyx_L184_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":659
 *             ])
 *             self._config = "ssi"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L185_exception_handled;
      }
      __pyx_L185_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L189_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":660
 *             self._config = "ssi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedEstimate3D.pyx":661
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 661, __pyx_L191_error)
        try {
          __pyx_t_10 = ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 661, __pyx_L191_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 661, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_sss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 661, __pyx_L191_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedEstimate3D.pyx":662
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 662, __pyx_L191_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(18, 662, __pyx_L191_error)

          /* "include/generated/BinnedEstimate3D.pyx":661
 *           except: pass
 *           try:
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedEstimate3D.pyx":664
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 664, __pyx_L191_error)
        try {
          __pyx_t_91 = ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 664, __pyx_L191_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_91); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 664, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedEstimate3D.pyx":665
 *             edges = tuple([
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 665, __pyx_L191_error)
        try {
          __pyx_t_92 = ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 665, __pyx_L191_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_92); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 665, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedEstimate3D.pyx":666
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).yEdges(False),
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(18, 666, __pyx_L191_error)
        try {
          __pyx_t_93 = ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(18, 666, __pyx_L191_error)
        }
        __pyx_t_15 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_93); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 666, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_15);

        /* "include/generated/BinnedEstimate3D.pyx":663
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_14 = PyList_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 663, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 0, __pyx_t_4)) __PYX_ERR(18, 663, __pyx_L191_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 1, __pyx_t_5)) __PYX_ERR(18, 663, __pyx_L191_error);
        __Pyx_GIVEREF(__pyx_t_15);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_14, 2, __pyx_t_15)) __PYX_ERR(18, 663, __pyx_L191_error);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_15 = 0;
        __pyx_t_15 = PyList_AsTuple(((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 663, __pyx_L191_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_15));
        __pyx_t_15 = 0;

        /* "include/generated/BinnedEstimate3D.pyx":668
 *               (<c.BinnedEstimate3D[string,string,string]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "sss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_sss);
        __Pyx_GIVEREF(__pyx_n_s_sss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sss;

        /* "include/generated/BinnedEstimate3D.pyx":660
 *             self._config = "ssi"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedEstimate3D[string,string,string]*> self.ptr())._config()) != "sss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L196_try_end;
      __pyx_L191_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":669
 *             ])
 *             self._config = "sss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L192_exception_handled;
      }
      __pyx_L192_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L196_try_end:;
    }

    /* "include/generated/BinnedEstimate3D.pyx":670
 *             self._config = "sss"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_Binning); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(18, 670, __pyx_L1_error)
    }
    __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_GIVEREF(__pyx_t_14);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_14;
    __pyx_t_14 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate3D.pyx":671
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(18, 671, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L199_bool_binop_done;
  }
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_5 = NULL;
  __pyx_t_94 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
      __pyx_t_94 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_94, 0+__pyx_t_94);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(18, 671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L199_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":672
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_5 = NULL;
    __pyx_t_94 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_15))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_15);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_15, function);
        __pyx_t_94 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_94, 0+__pyx_t_94);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_14))||((__pyx_t_14) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_14))) __PYX_ERR(18, 672, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_14);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_14);
    __pyx_t_14 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":671
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":391
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":674
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate3D.
 *         Clone this BinnedEstimate3D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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_16BinnedEstimate3D_16clone, "BinnedEstimate3D.clone(self)\n() -> BinnedEstimate3D.\n        Clone this BinnedEstimate3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_16clone};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_16clone(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_16clone(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  PyObject *__pyx_t_57 = NULL;
  PyObject *__pyx_t_58 = NULL;
  unsigned int __pyx_t_59;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedEstimate3D.pyx":677
 *         """() -> BinnedEstimate3D.
 *         Clone this BinnedEstimate3D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":678
 *         Clone this BinnedEstimate3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 678, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":679
 *         rtn = None
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 679, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 679, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":678
 *         Clone this BinnedEstimate3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         elif self._config == "ddi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":680
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 680, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":681
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         elif self._config == "ddi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 681, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 681, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":680
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 *         elif self._config == "dds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":682
 *         elif self._config == "ddi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 682, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":683
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 *         elif self._config == "dds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 683, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 683, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 683, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":682
 *         elif self._config == "ddi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,int]*> self.binned_ddi_ptr().newclone())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 *         elif self._config == "did":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":684
 *         elif self._config == "dds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 684, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":685
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 *         elif self._config == "did":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 685, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 685, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":684
 *         elif self._config == "dds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,double,string]*> self.binned_dds_ptr().newclone())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 *         elif self._config == "dii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":686
 *         elif self._config == "did":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 686, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":687
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 *         elif self._config == "dii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 687, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 687, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":686
 *         elif self._config == "did":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,double]*> self.binned_did_ptr().newclone())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 *         elif self._config == "dis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":688
 *         elif self._config == "dii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 688, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":689
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 *         elif self._config == "dis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 689, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 689, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":688
 *         elif self._config == "dii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,int]*> self.binned_dii_ptr().newclone())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 *         elif self._config == "dsd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":690
 *         elif self._config == "dis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 690, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":691
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 *         elif self._config == "dsd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 691, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 691, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 691, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":690
 *         elif self._config == "dis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,int,string]*> self.binned_dis_ptr().newclone())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 *         elif self._config == "dsi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":692
 *         elif self._config == "dsd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 692, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":693
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 *         elif self._config == "dsi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 693, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 693, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":692
 *         elif self._config == "dsd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,double]*> self.binned_dsd_ptr().newclone())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 *         elif self._config == "dss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":694
 *         elif self._config == "dsi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 694, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":695
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 *         elif self._config == "dss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 695, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 695, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":694
 *         elif self._config == "dsi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,int]*> self.binned_dsi_ptr().newclone())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 *         elif self._config == "idd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":696
 *         elif self._config == "dss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 696, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":697
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 *         elif self._config == "idd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 */
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 697, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 697, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,double,double>  *)__pyx_t_22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":696
 *         elif self._config == "dss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[double,string,string]*> self.binned_dss_ptr().newclone())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 *         elif self._config == "idi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":698
 *         elif self._config == "idd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 698, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":699
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 *         elif self._config == "idi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 699, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 699, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,double,int>  *)__pyx_t_24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":698
 *         elif self._config == "idd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,double]*> self.binned_idd_ptr().newclone())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 *         elif self._config == "ids":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":700
 *         elif self._config == "idi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 700, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":701
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 *         elif self._config == "ids":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 */
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 701, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 701, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,double,std::string>  *)__pyx_t_26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":700
 *         elif self._config == "idi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,int]*> self.binned_idi_ptr().newclone())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 *         elif self._config == "iid":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":702
 *         elif self._config == "ids":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 702, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":703
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 *         elif self._config == "iid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 */
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 703, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 703, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,int,double>  *)__pyx_t_28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":702
 *         elif self._config == "ids":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,double,string]*> self.binned_ids_ptr().newclone())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 *         elif self._config == "iii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":704
 *         elif self._config == "iid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 704, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":705
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 *         elif self._config == "iii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 705, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 705, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,int,int>  *)__pyx_t_30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 705, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":704
 *         elif self._config == "iid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,double]*> self.binned_iid_ptr().newclone())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 *         elif self._config == "iis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":706
 *         elif self._config == "iii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 706, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":707
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 *         elif self._config == "iis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 */
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 707, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 707, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,int,std::string>  *)__pyx_t_32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":706
 *         elif self._config == "iii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,int]*> self.binned_iii_ptr().newclone())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 *         elif self._config == "isd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":708
 *         elif self._config == "iis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 708, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":709
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 *         elif self._config == "isd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 */
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 709, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 709, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,std::string,double>  *)__pyx_t_34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 709, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":708
 *         elif self._config == "iis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,int,string]*> self.binned_iis_ptr().newclone())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 *         elif self._config == "isi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":710
 *         elif self._config == "isd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 710, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":711
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 *         elif self._config == "isi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 711, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 711, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,std::string,int>  *)__pyx_t_36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":710
 *         elif self._config == "isd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,double]*> self.binned_isd_ptr().newclone())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 *         elif self._config == "iss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":712
 *         elif self._config == "isi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 712, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":713
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 *         elif self._config == "iss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 */
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 713, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 713, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)__pyx_t_38)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":712
 *         elif self._config == "isi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,int]*> self.binned_isi_ptr().newclone())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 *         elif self._config == "sdd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":714
 *         elif self._config == "iss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 714, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":715
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 *         elif self._config == "sdd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 */
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 715, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 715, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,double,double>  *)__pyx_t_40)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 715, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":714
 *         elif self._config == "iss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[int,string,string]*> self.binned_iss_ptr().newclone())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 *         elif self._config == "sdi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":716
 *         elif self._config == "sdd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 716, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":717
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 *         elif self._config == "sdi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 */
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 717, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 717, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,double,int>  *)__pyx_t_42)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":716
 *         elif self._config == "sdd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,double]*> self.binned_sdd_ptr().newclone())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 *         elif self._config == "sds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":718
 *         elif self._config == "sdi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 718, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":719
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 *         elif self._config == "sds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 */
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 719, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 719, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)__pyx_t_44)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":718
 *         elif self._config == "sdi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,int]*> self.binned_sdi_ptr().newclone())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 *         elif self._config == "sid":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":720
 *         elif self._config == "sds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 720, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":721
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 *         elif self._config == "sid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 */
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 721, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 721, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,int,double>  *)__pyx_t_46)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":720
 *         elif self._config == "sds":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,double,string]*> self.binned_sds_ptr().newclone())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 *         elif self._config == "sii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":722
 *         elif self._config == "sid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 722, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":723
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 *         elif self._config == "sii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 */
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 723, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 723, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,int,int>  *)__pyx_t_48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":722
 *         elif self._config == "sid":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,double]*> self.binned_sid_ptr().newclone())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 *         elif self._config == "sis":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":724
 *         elif self._config == "sii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 724, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":725
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 *         elif self._config == "sis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 */
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 725, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 725, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)__pyx_t_50)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":724
 *         elif self._config == "sii":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,int]*> self.binned_sii_ptr().newclone())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 *         elif self._config == "ssd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":726
 *         elif self._config == "sis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 726, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":727
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 *         elif self._config == "ssd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 */
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 727, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 727, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)__pyx_t_52)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 727, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":726
 *         elif self._config == "sis":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,int,string]*> self.binned_sis_ptr().newclone())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 *         elif self._config == "ssi":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":728
 *         elif self._config == "ssd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 728, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":729
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 *         elif self._config == "ssi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 */
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 729, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 729, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)__pyx_t_54)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":728
 *         elif self._config == "ssd":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,double]*> self.binned_ssd_ptr().newclone())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 *         elif self._config == "sss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":730
 *         elif self._config == "ssi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 730, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":731
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 *         elif self._config == "sss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 731, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 731, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)__pyx_t_56)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":730
 *         elif self._config == "ssi":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,int]*> self.binned_ssi_ptr().newclone())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":732
 *         elif self._config == "sss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":733
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_57 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_57)) __PYX_ERR(18, 733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_57);
    __pyx_t_58 = NULL;
    __pyx_t_59 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_57))) {
      __pyx_t_58 = PyMethod_GET_SELF(__pyx_t_57);
      if (likely(__pyx_t_58)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_57);
        __Pyx_INCREF(__pyx_t_58);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_57, function);
        __pyx_t_59 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_58, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_57, __pyx_callargs+1-__pyx_t_59, 2+__pyx_t_59);
      __Pyx_XDECREF(__pyx_t_58); __pyx_t_58 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 733, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_57); __pyx_t_57 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":732
 *         elif self._config == "sss":
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, <c.BinnedEstimate3D[string,string,string]*> self.binned_sss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedEstimate3D.pyx":735
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_57 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_57)) __PYX_ERR(18, 735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_57);
    __pyx_t_58 = NULL;
    __pyx_t_59 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_57))) {
      __pyx_t_58 = PyMethod_GET_SELF(__pyx_t_57);
      if (likely(__pyx_t_58)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_57);
        __Pyx_INCREF(__pyx_t_58);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_57, function);
        __pyx_t_59 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_58, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_57, __pyx_callargs+1-__pyx_t_59, 1+__pyx_t_59);
      __Pyx_XDECREF(__pyx_t_58); __pyx_t_58 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_57); __pyx_t_57 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedEstimate3D.pyx":736
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":674
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate3D.
 *         Clone this BinnedEstimate3D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_57);
  __Pyx_XDECREF(__pyx_t_58);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.clone", __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/generated/BinnedEstimate3D.pyx":739
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex, "BinnedEstimate3D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_33;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedEstimate3D.pyx":741
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 741, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 3);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 741, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 741, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":743
 *         assert(len(indices) == 3) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 743, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(18, 743, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(18, 743, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 743, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate3D.pyx":744
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         if self._config == "ddi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 744, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":745
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 745, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 745, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":744
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":746
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 *         if self._config == "dds":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 746, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":747
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 747, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 747, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":746
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":748
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr()._local2global(localIndices)
 *         if self._config == "did":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 748, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":749
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 749, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 749, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":748
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr()._local2global(localIndices)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr()._local2global(localIndices)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":750
 *         if self._config == "dds":
 *           return self.binned_dds_ptr()._local2global(localIndices)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr()._local2global(localIndices)
 *         if self._config == "dii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 750, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":751
 *           return self.binned_dds_ptr()._local2global(localIndices)
 *         if self._config == "did":
 *           return self.binned_did_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 751, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 751, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 751, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":750
 *         if self._config == "dds":
 *           return self.binned_dds_ptr()._local2global(localIndices)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr()._local2global(localIndices)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":752
 *         if self._config == "did":
 *           return self.binned_did_ptr()._local2global(localIndices)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr()._local2global(localIndices)
 *         if self._config == "dis":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 752, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":753
 *           return self.binned_did_ptr()._local2global(localIndices)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 753, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 753, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":752
 *         if self._config == "did":
 *           return self.binned_did_ptr()._local2global(localIndices)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr()._local2global(localIndices)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":754
 *         if self._config == "dii":
 *           return self.binned_dii_ptr()._local2global(localIndices)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr()._local2global(localIndices)
 *         if self._config == "dsd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 754, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":755
 *           return self.binned_dii_ptr()._local2global(localIndices)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 755, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 755, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":754
 *         if self._config == "dii":
 *           return self.binned_dii_ptr()._local2global(localIndices)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr()._local2global(localIndices)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":756
 *         if self._config == "dis":
 *           return self.binned_dis_ptr()._local2global(localIndices)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 *         if self._config == "dsi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 756, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":757
 *           return self.binned_dis_ptr()._local2global(localIndices)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 757, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 757, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":756
 *         if self._config == "dis":
 *           return self.binned_dis_ptr()._local2global(localIndices)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":758
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 *         if self._config == "dss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 758, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":759
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 759, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 759, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 759, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":758
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr()._local2global(localIndices)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":760
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr()._local2global(localIndices)
 *         if self._config == "idd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 760, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":761
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 761, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 761, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":760
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr()._local2global(localIndices)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr()._local2global(localIndices)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":762
 *         if self._config == "dss":
 *           return self.binned_dss_ptr()._local2global(localIndices)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr()._local2global(localIndices)
 *         if self._config == "idi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 762, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":763
 *           return self.binned_dss_ptr()._local2global(localIndices)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 763, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_17->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 763, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":762
 *         if self._config == "dss":
 *           return self.binned_dss_ptr()._local2global(localIndices)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr()._local2global(localIndices)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":764
 *         if self._config == "idd":
 *           return self.binned_idd_ptr()._local2global(localIndices)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr()._local2global(localIndices)
 *         if self._config == "ids":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 764, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":765
 *           return self.binned_idd_ptr()._local2global(localIndices)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 765, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_18->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 765, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":764
 *         if self._config == "idd":
 *           return self.binned_idd_ptr()._local2global(localIndices)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr()._local2global(localIndices)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":766
 *         if self._config == "idi":
 *           return self.binned_idi_ptr()._local2global(localIndices)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr()._local2global(localIndices)
 *         if self._config == "iid":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 766, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":767
 *           return self.binned_idi_ptr()._local2global(localIndices)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 767, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_19->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 767, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":766
 *         if self._config == "idi":
 *           return self.binned_idi_ptr()._local2global(localIndices)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr()._local2global(localIndices)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":768
 *         if self._config == "ids":
 *           return self.binned_ids_ptr()._local2global(localIndices)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr()._local2global(localIndices)
 *         if self._config == "iii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 768, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":769
 *           return self.binned_ids_ptr()._local2global(localIndices)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 769, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_20->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 769, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":768
 *         if self._config == "ids":
 *           return self.binned_ids_ptr()._local2global(localIndices)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr()._local2global(localIndices)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":770
 *         if self._config == "iid":
 *           return self.binned_iid_ptr()._local2global(localIndices)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr()._local2global(localIndices)
 *         if self._config == "iis":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 770, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":771
 *           return self.binned_iid_ptr()._local2global(localIndices)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 771, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_21->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 771, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 771, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":770
 *         if self._config == "iid":
 *           return self.binned_iid_ptr()._local2global(localIndices)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr()._local2global(localIndices)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":772
 *         if self._config == "iii":
 *           return self.binned_iii_ptr()._local2global(localIndices)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr()._local2global(localIndices)
 *         if self._config == "isd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 772, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":773
 *           return self.binned_iii_ptr()._local2global(localIndices)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 773, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_22->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 773, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":772
 *         if self._config == "iii":
 *           return self.binned_iii_ptr()._local2global(localIndices)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr()._local2global(localIndices)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":774
 *         if self._config == "iis":
 *           return self.binned_iis_ptr()._local2global(localIndices)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr()._local2global(localIndices)
 *         if self._config == "isi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 774, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":775
 *           return self.binned_iis_ptr()._local2global(localIndices)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 775, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_23->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 775, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":774
 *         if self._config == "iis":
 *           return self.binned_iis_ptr()._local2global(localIndices)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr()._local2global(localIndices)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":776
 *         if self._config == "isd":
 *           return self.binned_isd_ptr()._local2global(localIndices)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr()._local2global(localIndices)
 *         if self._config == "iss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 776, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":777
 *           return self.binned_isd_ptr()._local2global(localIndices)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 777, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_24->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 777, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":776
 *         if self._config == "isd":
 *           return self.binned_isd_ptr()._local2global(localIndices)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr()._local2global(localIndices)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":778
 *         if self._config == "isi":
 *           return self.binned_isi_ptr()._local2global(localIndices)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr()._local2global(localIndices)
 *         if self._config == "sdd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 778, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":779
 *           return self.binned_isi_ptr()._local2global(localIndices)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 779, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_25->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 779, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":778
 *         if self._config == "isi":
 *           return self.binned_isi_ptr()._local2global(localIndices)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr()._local2global(localIndices)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":780
 *         if self._config == "iss":
 *           return self.binned_iss_ptr()._local2global(localIndices)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 *         if self._config == "sdi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 780, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":781
 *           return self.binned_iss_ptr()._local2global(localIndices)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 781, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_26->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 781, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":780
 *         if self._config == "iss":
 *           return self.binned_iss_ptr()._local2global(localIndices)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":782
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 *         if self._config == "sds":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 782, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":783
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 783, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_27->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 783, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":782
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr()._local2global(localIndices)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":784
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr()._local2global(localIndices)
 *         if self._config == "sid":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 784, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":785
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 785, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_28->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 785, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":784
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr()._local2global(localIndices)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr()._local2global(localIndices)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":786
 *         if self._config == "sds":
 *           return self.binned_sds_ptr()._local2global(localIndices)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr()._local2global(localIndices)
 *         if self._config == "sii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 786, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":787
 *           return self.binned_sds_ptr()._local2global(localIndices)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 787, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_29->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 787, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":786
 *         if self._config == "sds":
 *           return self.binned_sds_ptr()._local2global(localIndices)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr()._local2global(localIndices)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":788
 *         if self._config == "sid":
 *           return self.binned_sid_ptr()._local2global(localIndices)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr()._local2global(localIndices)
 *         if self._config == "sis":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 788, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":789
 *           return self.binned_sid_ptr()._local2global(localIndices)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 789, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_30->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 789, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 789, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":788
 *         if self._config == "sid":
 *           return self.binned_sid_ptr()._local2global(localIndices)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr()._local2global(localIndices)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":790
 *         if self._config == "sii":
 *           return self.binned_sii_ptr()._local2global(localIndices)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr()._local2global(localIndices)
 *         if self._config == "ssd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 790, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":791
 *           return self.binned_sii_ptr()._local2global(localIndices)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 791, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_31->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 791, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":790
 *         if self._config == "sii":
 *           return self.binned_sii_ptr()._local2global(localIndices)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr()._local2global(localIndices)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":792
 *         if self._config == "sis":
 *           return self.binned_sis_ptr()._local2global(localIndices)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 *         if self._config == "ssi":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 792, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":793
 *           return self.binned_sis_ptr()._local2global(localIndices)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 793, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_32->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 793, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":792
 *         if self._config == "sis":
 *           return self.binned_sis_ptr()._local2global(localIndices)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":794
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 *         if self._config == "sss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 794, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":795
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 795, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_33->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 795, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":794
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr()._local2global(localIndices)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":796
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 796, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":797
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 797, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_34->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 797, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":796
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr()._local2global(localIndices)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":798
 *         if self._config == "sss":
 *           return self.binned_sss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 798, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":739
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */

  /* 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.BinnedEstimate3D.localToGlobalIndex", __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/generated/BinnedEstimate3D.pyx":801
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_20_global_set, "BinnedEstimate3D._global_set(self, size_t idx, Estimate cont)\nint, Estimate -> void.\n        Set a Estimate at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 801, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 801, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(18, 801, __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, "_global_set") < 0)) __PYX_ERR(18, 801, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 801, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(18, 801, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(18, 801, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::Estimate *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedEstimate3D.pyx":804
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 804, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":805
 *         Set a Estimate at bin position idx."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 805, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 805, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 805, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":804
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":806
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 806, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":807
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 807, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 807, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 807, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":806
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":808
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 808, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":809
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 809, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 809, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 809, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":808
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":810
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 810, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":811
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 811, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 811, __pyx_L1_error)
    try {
      __pyx_t_7->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 811, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":810
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":812
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 812, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":813
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 813, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 813, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 813, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":812
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":814
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 814, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":815
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 815, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 815, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 815, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":814
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":816
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 816, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":817
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 817, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 817, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 817, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":816
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":818
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 818, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":819
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 819, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 819, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 819, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 819, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":818
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":820
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 820, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":821
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 821, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 821, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 821, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 821, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":820
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":822
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 822, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":823
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 823, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 823, __pyx_L1_error)
    try {
      __pyx_t_13->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 823, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":822
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":824
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 824, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":825
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 825, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 825, __pyx_L1_error)
    try {
      __pyx_t_14->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 825, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 825, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":824
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":826
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 826, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":827
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 827, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 827, __pyx_L1_error)
    try {
      __pyx_t_15->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 827, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":826
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":828
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 828, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":829
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 829, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 829, __pyx_L1_error)
    try {
      __pyx_t_16->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 829, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":828
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":830
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 830, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":831
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 831, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 831, __pyx_L1_error)
    try {
      __pyx_t_17->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 831, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":830
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":832
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 832, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":833
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 833, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 833, __pyx_L1_error)
    try {
      __pyx_t_18->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 833, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":832
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":834
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 834, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":835
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 835, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 835, __pyx_L1_error)
    try {
      __pyx_t_19->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 835, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":834
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":836
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 836, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":837
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 837, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 837, __pyx_L1_error)
    try {
      __pyx_t_20->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 837, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":836
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":838
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 838, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":839
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 839, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 839, __pyx_L1_error)
    try {
      __pyx_t_21->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 839, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":838
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":840
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 840, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":841
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 841, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 841, __pyx_L1_error)
    try {
      __pyx_t_22->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 841, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":840
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":842
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 842, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":843
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 843, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 843, __pyx_L1_error)
    try {
      __pyx_t_23->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 843, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 843, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":842
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":844
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 844, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":845
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 845, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 845, __pyx_L1_error)
    try {
      __pyx_t_24->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 845, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 845, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":844
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":846
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 846, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":847
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 847, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 847, __pyx_L1_error)
    try {
      __pyx_t_25->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 847, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 847, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":846
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":848
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 848, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":849
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 849, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 849, __pyx_L1_error)
    try {
      __pyx_t_26->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 849, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 849, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":848
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":850
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 850, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":851
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 851, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 851, __pyx_L1_error)
    try {
      __pyx_t_27->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 851, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":850
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":852
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 852, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":853
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 853, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 853, __pyx_L1_error)
    try {
      __pyx_t_28->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 853, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 853, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":852
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":854
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 854, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":855
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(idx, cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 855, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 855, __pyx_L1_error)
    try {
      __pyx_t_29->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 855, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 855, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":854
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":856
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 856, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":857
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(idx, cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 857, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 857, __pyx_L1_error)
    try {
      __pyx_t_30->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 857, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":856
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(idx, cont.estptr()[0])
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":858
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(idx, cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 858, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":801
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */

  /* 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.BinnedEstimate3D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":862
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_22_local_set, "BinnedEstimate3D._local_set(self, indices, Estimate cont)\nvector[int], Estimate -> void.\n        Set a Estimate at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 862, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 862, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(18, 862, __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, "_local_set") < 0)) __PYX_ERR(18, 862, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Estimate *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(18, 862, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Estimate, 1, "cont", 0))) __PYX_ERR(18, 862, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Estimate *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Estimate *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_33;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedEstimate3D.pyx":865
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 865, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":866
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 866, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 866, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 866, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 866, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":865
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":867
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 867, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":868
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 868, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 868, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 868, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 868, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":867
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":869
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 869, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":870
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 870, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 870, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 870, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 870, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":869
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":871
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 871, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":872
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 872, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 872, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 872, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 872, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":871
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":873
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 873, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":874
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 874, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 874, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 874, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 874, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":873
 *         if self._config == "did":
 *           return self.binned_did_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":875
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 875, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":876
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 876, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 876, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 876, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 876, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":875
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":877
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 877, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":878
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 878, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 878, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 878, __pyx_L1_error)
    try {
      __pyx_t_13->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 878, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":877
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":879
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 879, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":880
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 880, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 880, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 880, __pyx_L1_error)
    try {
      __pyx_t_14->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 880, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":879
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":881
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 881, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":882
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 882, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 882, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 882, __pyx_L1_error)
    try {
      __pyx_t_15->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 882, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":881
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":883
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 883, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":884
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 884, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 884, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 884, __pyx_L1_error)
    try {
      __pyx_t_16->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 884, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":883
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":885
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 885, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":886
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 886, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 886, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 886, __pyx_L1_error)
    try {
      __pyx_t_17->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 886, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":885
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":887
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 887, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":888
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 888, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 888, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 888, __pyx_L1_error)
    try {
      __pyx_t_18->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 888, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":887
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":889
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 889, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":890
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 890, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 890, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 890, __pyx_L1_error)
    try {
      __pyx_t_19->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 890, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":889
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":891
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 891, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":892
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 892, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 892, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 892, __pyx_L1_error)
    try {
      __pyx_t_20->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 892, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":891
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":893
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 893, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":894
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 894, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 894, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 894, __pyx_L1_error)
    try {
      __pyx_t_21->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 894, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":893
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":895
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 895, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":896
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 896, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 896, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 896, __pyx_L1_error)
    try {
      __pyx_t_22->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 896, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":895
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":897
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 897, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":898
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 898, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 898, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 898, __pyx_L1_error)
    try {
      __pyx_t_23->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 898, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":897
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":899
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 899, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":900
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 900, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 900, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 900, __pyx_L1_error)
    try {
      __pyx_t_24->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 900, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":899
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":901
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 901, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":902
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 902, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 902, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 902, __pyx_L1_error)
    try {
      __pyx_t_25->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 902, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":901
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":903
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 903, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":904
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 904, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 904, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 904, __pyx_L1_error)
    try {
      __pyx_t_26->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 904, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":903
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":905
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 905, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":906
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 906, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 906, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 906, __pyx_L1_error)
    try {
      __pyx_t_27->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 906, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":905
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":907
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 907, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":908
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 908, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 908, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 908, __pyx_L1_error)
    try {
      __pyx_t_28->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 908, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":907
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":909
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 909, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":910
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 910, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 910, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 910, __pyx_L1_error)
    try {
      __pyx_t_29->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 910, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":909
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":911
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 911, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":912
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 912, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 912, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 912, __pyx_L1_error)
    try {
      __pyx_t_30->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 912, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":911
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":913
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 913, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":914
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 914, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 914, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 914, __pyx_L1_error)
    try {
      __pyx_t_31->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 914, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":913
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":915
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 915, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":916
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 916, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 916, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 916, __pyx_L1_error)
    try {
      __pyx_t_32->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 916, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":915
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":917
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 917, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":918
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 918, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 918, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Estimate *)__pyx_v_cont->__pyx_base.__pyx_vtab)->estptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Estimate *)NULL))) __PYX_ERR(18, 918, __pyx_L1_error)
    try {
      __pyx_t_33->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 918, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":917
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":919
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().set(self.localToGlobalIndex(*indices), cont.estptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 919, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":862
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */

  /* 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.BinnedEstimate3D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":922
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_24set, "BinnedEstimate3D.set(self, *args)\nSet bin with Estimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_24set};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_24set(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_24set(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedEstimate3D.pyx":924
 *     def set(self, *args):
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 924, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 924, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 924, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":925
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedEstimate3D.pyx":926
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 926, __pyx_L1_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/generated/BinnedEstimate3D.pyx":925
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":928
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 928, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":922
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedEstimate3D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":930
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_26reset, "BinnedEstimate3D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_26reset};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_26reset(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_26reset(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_4;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_29;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedEstimate3D.pyx":932
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().reset()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 932, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":933
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 933, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 933, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":932
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().reset()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":934
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().reset()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().reset()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 934, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":935
 *           return self.binned_ddd_ptr().reset()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 935, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 935, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 935, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":934
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().reset()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().reset()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":936
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().reset()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().reset()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 936, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":937
 *           return self.binned_ddi_ptr().reset()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 937, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 937, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 937, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":936
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().reset()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().reset()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":938
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().reset()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().reset()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 938, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":939
 *           return self.binned_dds_ptr().reset()
 *         if self._config == "did":
 *           return self.binned_did_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 939, __pyx_L1_error)
    try {
      __pyx_t_6->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 939, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":938
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().reset()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().reset()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":940
 *         if self._config == "did":
 *           return self.binned_did_ptr().reset()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().reset()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 940, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":941
 *           return self.binned_did_ptr().reset()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 941, __pyx_L1_error)
    try {
      __pyx_t_7->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 941, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 941, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":940
 *         if self._config == "did":
 *           return self.binned_did_ptr().reset()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().reset()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":942
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().reset()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().reset()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 942, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":943
 *           return self.binned_dii_ptr().reset()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 943, __pyx_L1_error)
    try {
      __pyx_t_8->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 943, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 943, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":942
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().reset()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().reset()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":944
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().reset()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().reset()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 944, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":945
 *           return self.binned_dis_ptr().reset()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 945, __pyx_L1_error)
    try {
      __pyx_t_9->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 945, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 945, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":944
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().reset()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().reset()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":946
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().reset()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().reset()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 946, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":947
 *           return self.binned_dsd_ptr().reset()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 947, __pyx_L1_error)
    try {
      __pyx_t_10->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 947, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 947, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":946
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().reset()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().reset()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":948
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().reset()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().reset()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 948, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":949
 *           return self.binned_dsi_ptr().reset()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 949, __pyx_L1_error)
    try {
      __pyx_t_11->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 949, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":948
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().reset()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().reset()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":950
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().reset()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().reset()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 950, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":951
 *           return self.binned_dss_ptr().reset()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 951, __pyx_L1_error)
    try {
      __pyx_t_12->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 951, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":950
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().reset()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().reset()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":952
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().reset()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().reset()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 952, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":953
 *           return self.binned_idd_ptr().reset()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 953, __pyx_L1_error)
    try {
      __pyx_t_13->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 953, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":952
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().reset()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().reset()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":954
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().reset()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().reset()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 954, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":955
 *           return self.binned_idi_ptr().reset()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 955, __pyx_L1_error)
    try {
      __pyx_t_14->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 955, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":954
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().reset()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().reset()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":956
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().reset()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().reset()
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 956, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":957
 *           return self.binned_ids_ptr().reset()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 957, __pyx_L1_error)
    try {
      __pyx_t_15->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 957, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":956
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().reset()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().reset()
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":958
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().reset()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().reset()
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 958, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":959
 *           return self.binned_iid_ptr().reset()
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 959, __pyx_L1_error)
    try {
      __pyx_t_16->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 959, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":958
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().reset()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().reset()
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":960
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().reset()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().reset()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 960, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":961
 *           return self.binned_iii_ptr().reset()
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 961, __pyx_L1_error)
    try {
      __pyx_t_17->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 961, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":960
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().reset()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().reset()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":962
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().reset()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().reset()
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 962, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":963
 *           return self.binned_iis_ptr().reset()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 963, __pyx_L1_error)
    try {
      __pyx_t_18->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 963, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 963, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":962
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().reset()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().reset()
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":964
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().reset()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().reset()
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 964, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":965
 *           return self.binned_isd_ptr().reset()
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 965, __pyx_L1_error)
    try {
      __pyx_t_19->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 965, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 965, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":964
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().reset()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().reset()
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":966
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().reset()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().reset()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 966, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":967
 *           return self.binned_isi_ptr().reset()
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 967, __pyx_L1_error)
    try {
      __pyx_t_20->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 967, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":966
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().reset()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().reset()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":968
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().reset()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().reset()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 968, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":969
 *           return self.binned_iss_ptr().reset()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 969, __pyx_L1_error)
    try {
      __pyx_t_21->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 969, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":968
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().reset()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().reset()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":970
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().reset()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().reset()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 970, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":971
 *           return self.binned_sdd_ptr().reset()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 971, __pyx_L1_error)
    try {
      __pyx_t_22->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 971, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":970
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().reset()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().reset()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":972
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().reset()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().reset()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 972, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":973
 *           return self.binned_sdi_ptr().reset()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 973, __pyx_L1_error)
    try {
      __pyx_t_23->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 973, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":972
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().reset()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().reset()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":974
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().reset()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().reset()
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 974, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":975
 *           return self.binned_sds_ptr().reset()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 975, __pyx_L1_error)
    try {
      __pyx_t_24->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 975, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 975, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":974
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().reset()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().reset()
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":976
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().reset()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().reset()
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 976, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":977
 *           return self.binned_sid_ptr().reset()
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 977, __pyx_L1_error)
    try {
      __pyx_t_25->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 977, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":976
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().reset()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().reset()
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":978
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().reset()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().reset()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 978, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":979
 *           return self.binned_sii_ptr().reset()
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 979, __pyx_L1_error)
    try {
      __pyx_t_26->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 979, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 979, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":978
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().reset()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().reset()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":980
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().reset()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().reset()
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 980, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":981
 *           return self.binned_sis_ptr().reset()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 981, __pyx_L1_error)
    try {
      __pyx_t_27->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 981, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":980
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().reset()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().reset()
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":982
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().reset()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().reset()
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 982, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":983
 *           return self.binned_ssd_ptr().reset()
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 983, __pyx_L1_error)
    try {
      __pyx_t_28->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 983, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 983, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":982
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().reset()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().reset()
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":984
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().reset()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 984, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":985
 *           return self.binned_ssi_ptr().reset()
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 985, __pyx_L1_error)
    try {
      __pyx_t_29->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 985, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 985, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":984
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().reset()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":986
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 986, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":930
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":990
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_28numBins, "BinnedEstimate3D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedEstimate.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 990, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 990, __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, "numBins") < 0)) __PYX_ERR(18, 990, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(18, 990, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_28numBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_32;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedEstimate3D.pyx":993
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 993, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":994
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 994, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 994, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 994, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 994, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 994, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":993
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":995
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 995, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":996
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 996, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 996, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 996, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 996, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":995
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":997
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 997, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":998
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 998, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 998, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 998, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 998, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":997
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":999
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 999, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1000
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1000, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1000, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1000, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1000, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1000, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":999
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1001
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1001, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1002
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1002, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1002, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1002, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1002, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1001
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1003
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1003, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1004
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1004, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1004, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1004, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1004, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1003
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1005
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1005, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1006
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1006, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1006, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1006, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1006, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1005
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1007
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1007, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1008
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1008, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1008, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1008, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1008, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1008, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1007
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1009
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1009, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1010
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1010, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1010, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1010, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1010, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1009
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1011
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1011, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1012
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1012, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1012, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1012, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_15->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1012, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1012, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1011
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1013
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1013, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1014
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1014, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1014, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1014, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_16->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1014, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1013
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1015
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1015, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1016
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1016, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1016, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1016, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_17->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1016, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1015
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1017
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1017, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1018
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1018, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1018, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1018, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_18->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1018, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1017
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1019
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1019, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1020
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1020, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1020, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1020, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_19->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1020, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1019
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1021
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1021, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1022
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1022, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1022, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1022, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_20->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1022, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1021
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1023
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1023, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1024
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1024, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1024, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1024, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_21->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1024, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1023
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1025
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1025, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1026
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1026, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1026, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1026, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_22->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1026, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1025
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1027
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1027, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1028
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1028, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1028, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1028, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_23->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1028, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1027
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1029
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1029, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1030
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1030, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1030, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1030, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_24->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1030, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1030, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1029
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1031
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1031, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1032
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1032, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1032, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1032, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_25->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1032, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1032, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1031
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1033
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1033, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1034
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1034, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1034, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1034, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_26->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1034, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1033
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1035
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1035, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1036
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1036, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1036, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1036, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_27->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1036, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1035
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1037
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1037, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1038
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1038, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1038, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1038, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_28->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1038, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1037
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1039
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1039, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1040
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1040, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1040, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1040, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_29->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1040, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1040, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1039
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1041
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1041, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1042
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1042, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1042, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1042, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_30->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1042, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1041
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1043
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1043, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1044
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1044, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1044, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1044, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_31->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1044, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1043
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1045
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1045, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1046
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1046, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1046, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1046, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_32->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1046, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1045
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1047
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1047, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":990
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */

  /* 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.BinnedEstimate3D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1050
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_30isMasked, "BinnedEstimate3D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1050, __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, "isMasked") < 0)) __PYX_ERR(18, 1050, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 1050, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1052
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isMasked(index)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1052, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1053
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1053, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1053, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1053, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1052
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isMasked(index)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1054
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isMasked(index)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().isMasked(index)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1054, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1055
 *           return self.binned_ddd_ptr().isMasked(index)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1055, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1055, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1055, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1054
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isMasked(index)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().isMasked(index)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1056
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isMasked(index)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().isMasked(index)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1056, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1057
 *           return self.binned_ddi_ptr().isMasked(index)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1057, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1057, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1057, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1056
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isMasked(index)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().isMasked(index)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1058
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isMasked(index)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().isMasked(index)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1058, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1059
 *           return self.binned_dds_ptr().isMasked(index)
 *         if self._config == "did":
 *           return self.binned_did_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1059, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1059, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1059, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1059, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1058
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isMasked(index)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().isMasked(index)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1060
 *         if self._config == "did":
 *           return self.binned_did_ptr().isMasked(index)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().isMasked(index)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1060, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1061
 *           return self.binned_did_ptr().isMasked(index)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1061, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1061, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1061, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1060
 *         if self._config == "did":
 *           return self.binned_did_ptr().isMasked(index)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().isMasked(index)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1062
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isMasked(index)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().isMasked(index)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1062, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1063
 *           return self.binned_dii_ptr().isMasked(index)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1063, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1063, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1063, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1063, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1062
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isMasked(index)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().isMasked(index)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1064
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isMasked(index)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().isMasked(index)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1064, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1065
 *           return self.binned_dis_ptr().isMasked(index)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1065, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1065, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1065, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1064
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isMasked(index)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().isMasked(index)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1066
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isMasked(index)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().isMasked(index)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1066, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1067
 *           return self.binned_dsd_ptr().isMasked(index)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1067, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1067, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1067, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1066
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isMasked(index)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().isMasked(index)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1068
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isMasked(index)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().isMasked(index)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1068, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1069
 *           return self.binned_dsi_ptr().isMasked(index)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1069, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1069, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1069, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1069, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1068
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isMasked(index)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().isMasked(index)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1070
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isMasked(index)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().isMasked(index)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1070, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1071
 *           return self.binned_dss_ptr().isMasked(index)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1071, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1071, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1071, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1071, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1070
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isMasked(index)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().isMasked(index)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1072
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isMasked(index)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().isMasked(index)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1072, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1073
 *           return self.binned_idd_ptr().isMasked(index)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1073, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1073, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1073, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1073, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1072
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isMasked(index)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().isMasked(index)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1074
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isMasked(index)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().isMasked(index)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1074, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1075
 *           return self.binned_idi_ptr().isMasked(index)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1075, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1075, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1075, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1075, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1074
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isMasked(index)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().isMasked(index)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1076
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isMasked(index)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().isMasked(index)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1076, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1077
 *           return self.binned_ids_ptr().isMasked(index)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1077, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1077, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1077, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1077, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1076
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isMasked(index)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().isMasked(index)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1078
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isMasked(index)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().isMasked(index)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1078, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1079
 *           return self.binned_iid_ptr().isMasked(index)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1079, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1079, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1079, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1078
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isMasked(index)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().isMasked(index)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1080
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isMasked(index)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().isMasked(index)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1080, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1081
 *           return self.binned_iii_ptr().isMasked(index)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1081, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1081, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1081, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1080
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isMasked(index)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().isMasked(index)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1082
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isMasked(index)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().isMasked(index)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1082, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1083
 *           return self.binned_iis_ptr().isMasked(index)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1083, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1083, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1083, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1083, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1082
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isMasked(index)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().isMasked(index)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1084
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isMasked(index)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().isMasked(index)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1084, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1085
 *           return self.binned_isd_ptr().isMasked(index)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1085, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1085, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1085, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1085, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1084
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isMasked(index)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().isMasked(index)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1086
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isMasked(index)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().isMasked(index)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1086, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1087
 *           return self.binned_isi_ptr().isMasked(index)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1087, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1087, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1087, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1086
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isMasked(index)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().isMasked(index)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1088
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isMasked(index)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().isMasked(index)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1088, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1089
 *           return self.binned_iss_ptr().isMasked(index)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1089, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1089, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1089, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1088
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isMasked(index)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().isMasked(index)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1090
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isMasked(index)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().isMasked(index)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1090, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1091
 *           return self.binned_sdd_ptr().isMasked(index)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1091, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1091, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1091, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1090
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isMasked(index)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().isMasked(index)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1092
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isMasked(index)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().isMasked(index)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1092, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1093
 *           return self.binned_sdi_ptr().isMasked(index)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1093, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1093, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1093, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1092
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isMasked(index)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().isMasked(index)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1094
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isMasked(index)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().isMasked(index)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1094, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1095
 *           return self.binned_sds_ptr().isMasked(index)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1095, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1095, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1095, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1094
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isMasked(index)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().isMasked(index)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1096
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isMasked(index)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().isMasked(index)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1096, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1097
 *           return self.binned_sid_ptr().isMasked(index)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1097, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1097, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1097, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1096
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isMasked(index)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().isMasked(index)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1098
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isMasked(index)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().isMasked(index)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1098, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1099
 *           return self.binned_sii_ptr().isMasked(index)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1099, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1099, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1099, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1098
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isMasked(index)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().isMasked(index)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1100
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isMasked(index)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().isMasked(index)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1100, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1101
 *           return self.binned_sis_ptr().isMasked(index)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1101, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1101, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1101, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1100
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isMasked(index)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().isMasked(index)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1102
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isMasked(index)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().isMasked(index)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1102, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1103
 *           return self.binned_ssd_ptr().isMasked(index)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1103, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1103, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1103, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1102
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isMasked(index)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().isMasked(index)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1104
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isMasked(index)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1105
 *           return self.binned_ssi_ptr().isMasked(index)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1105, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1105, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1105, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1104
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isMasked(index)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1106
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1106, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1050
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":1109
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_32isVisible, "BinnedEstimate3D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1109, __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, "isVisible") < 0)) __PYX_ERR(18, 1109, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 1109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1111
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isVisible(index)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1111, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1112
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1112, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1112, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1112, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1111
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isVisible(index)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1113
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isVisible(index)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().isVisible(index)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1113, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1114
 *           return self.binned_ddd_ptr().isVisible(index)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1114, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1114, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1114, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1113
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isVisible(index)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().isVisible(index)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1115
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isVisible(index)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().isVisible(index)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1115, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1116
 *           return self.binned_ddi_ptr().isVisible(index)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1116, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1116, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1116, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1115
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().isVisible(index)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().isVisible(index)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1117
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isVisible(index)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().isVisible(index)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1117, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1118
 *           return self.binned_dds_ptr().isVisible(index)
 *         if self._config == "did":
 *           return self.binned_did_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1118, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1118, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1118, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1117
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().isVisible(index)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().isVisible(index)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1119
 *         if self._config == "did":
 *           return self.binned_did_ptr().isVisible(index)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().isVisible(index)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1119, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1120
 *           return self.binned_did_ptr().isVisible(index)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1120, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1120, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1120, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1119
 *         if self._config == "did":
 *           return self.binned_did_ptr().isVisible(index)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().isVisible(index)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1121
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isVisible(index)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().isVisible(index)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1121, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1122
 *           return self.binned_dii_ptr().isVisible(index)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1122, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1122, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1122, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1121
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().isVisible(index)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().isVisible(index)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1123
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isVisible(index)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().isVisible(index)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1123, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1124
 *           return self.binned_dis_ptr().isVisible(index)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1124, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1124, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1124, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1123
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().isVisible(index)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().isVisible(index)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1125
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isVisible(index)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().isVisible(index)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1125, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1126
 *           return self.binned_dsd_ptr().isVisible(index)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1126, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1126, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1126, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1125
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().isVisible(index)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().isVisible(index)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1127
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isVisible(index)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().isVisible(index)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1127, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1128
 *           return self.binned_dsi_ptr().isVisible(index)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1128, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1128, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1128, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1127
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().isVisible(index)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().isVisible(index)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1129
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isVisible(index)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().isVisible(index)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1129, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1130
 *           return self.binned_dss_ptr().isVisible(index)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1130, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1130, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1130, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1129
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().isVisible(index)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().isVisible(index)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1131
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isVisible(index)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().isVisible(index)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1131, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1132
 *           return self.binned_idd_ptr().isVisible(index)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1132, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1132, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1132, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1131
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().isVisible(index)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().isVisible(index)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1133
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isVisible(index)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().isVisible(index)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1133, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1134
 *           return self.binned_idi_ptr().isVisible(index)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1134, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1134, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1134, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1133
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().isVisible(index)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().isVisible(index)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1135
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isVisible(index)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().isVisible(index)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1135, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1136
 *           return self.binned_ids_ptr().isVisible(index)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1136, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1136, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1136, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1135
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().isVisible(index)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().isVisible(index)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1137
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isVisible(index)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().isVisible(index)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1137, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1138
 *           return self.binned_iid_ptr().isVisible(index)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1138, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1138, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1138, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1137
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().isVisible(index)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().isVisible(index)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1139
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isVisible(index)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().isVisible(index)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1139, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1140
 *           return self.binned_iii_ptr().isVisible(index)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1140, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1140, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1140, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1139
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().isVisible(index)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().isVisible(index)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1141
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isVisible(index)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().isVisible(index)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1141, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1142
 *           return self.binned_iis_ptr().isVisible(index)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1142, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1142, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1142, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1141
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().isVisible(index)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().isVisible(index)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1143
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isVisible(index)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().isVisible(index)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1143, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1144
 *           return self.binned_isd_ptr().isVisible(index)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1144, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1144, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1144, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1143
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().isVisible(index)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().isVisible(index)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1145
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isVisible(index)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().isVisible(index)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1145, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1146
 *           return self.binned_isi_ptr().isVisible(index)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1146, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1146, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1146, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1145
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().isVisible(index)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().isVisible(index)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1147
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isVisible(index)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().isVisible(index)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1147, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1148
 *           return self.binned_iss_ptr().isVisible(index)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1148, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1148, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1148, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1147
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().isVisible(index)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().isVisible(index)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1149
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isVisible(index)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().isVisible(index)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1149, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1150
 *           return self.binned_sdd_ptr().isVisible(index)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1150, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1150, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1150, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1149
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().isVisible(index)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().isVisible(index)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1151
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isVisible(index)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().isVisible(index)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1151, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1152
 *           return self.binned_sdi_ptr().isVisible(index)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1152, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1152, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1152, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1151
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().isVisible(index)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().isVisible(index)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1153
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isVisible(index)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().isVisible(index)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1153, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1154
 *           return self.binned_sds_ptr().isVisible(index)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1154, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1154, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1154, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1153
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().isVisible(index)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().isVisible(index)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1155
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isVisible(index)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().isVisible(index)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1155, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1156
 *           return self.binned_sid_ptr().isVisible(index)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1156, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1156, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1156, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1155
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().isVisible(index)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().isVisible(index)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1157
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isVisible(index)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().isVisible(index)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1157, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1158
 *           return self.binned_sii_ptr().isVisible(index)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1158, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1158, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1158, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1157
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().isVisible(index)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().isVisible(index)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1159
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isVisible(index)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().isVisible(index)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1159, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1160
 *           return self.binned_sis_ptr().isVisible(index)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1160, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1160, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1160, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1159
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().isVisible(index)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().isVisible(index)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1161
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isVisible(index)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().isVisible(index)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1161, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1162
 *           return self.binned_ssd_ptr().isVisible(index)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1162, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1162, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1162, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1161
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().isVisible(index)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().isVisible(index)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1163
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isVisible(index)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1163, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1164
 *           return self.binned_ssi_ptr().isVisible(index)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1164, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1164, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1164, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1163
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().isVisible(index)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1165
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1165, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1109
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":1168
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_34binDim, "BinnedEstimate3D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_34binDim(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1170
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().binDim()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1170, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1171
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1171, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1171, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1170
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().binDim()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1172
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().binDim()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().binDim()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1172, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1173
 *           return self.binned_ddd_ptr().binDim()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1173, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1173, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1172
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().binDim()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().binDim()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1174
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().binDim()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().binDim()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1174, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1175
 *           return self.binned_ddi_ptr().binDim()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1175, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1175, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1174
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().binDim()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().binDim()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1176
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().binDim()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().binDim()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1176, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1177
 *           return self.binned_dds_ptr().binDim()
 *         if self._config == "did":
 *           return self.binned_did_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1177, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1177, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1176
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().binDim()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().binDim()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1178
 *         if self._config == "did":
 *           return self.binned_did_ptr().binDim()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().binDim()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1178, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1179
 *           return self.binned_did_ptr().binDim()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1179, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1179, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1178
 *         if self._config == "did":
 *           return self.binned_did_ptr().binDim()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().binDim()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1180
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().binDim()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().binDim()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1180, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1181
 *           return self.binned_dii_ptr().binDim()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1181, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1181, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1180
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().binDim()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().binDim()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1182
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().binDim()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().binDim()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1182, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1183
 *           return self.binned_dis_ptr().binDim()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1183, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1183, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1182
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().binDim()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().binDim()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1184
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().binDim()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().binDim()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1184, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1185
 *           return self.binned_dsd_ptr().binDim()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1185, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1185, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1184
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().binDim()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().binDim()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1186
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().binDim()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().binDim()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1186, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1187
 *           return self.binned_dsi_ptr().binDim()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1187, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1187, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1186
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().binDim()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().binDim()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1188
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().binDim()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().binDim()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1188, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1189
 *           return self.binned_dss_ptr().binDim()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1189, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_13->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1189, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1188
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().binDim()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().binDim()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1190
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().binDim()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().binDim()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1190, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1191
 *           return self.binned_idd_ptr().binDim()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1191, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_14->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1191, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1190
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().binDim()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().binDim()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1192
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().binDim()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().binDim()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1192, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1193
 *           return self.binned_idi_ptr().binDim()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1193, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_15->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1193, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1192
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().binDim()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().binDim()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1194
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().binDim()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().binDim()
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1194, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1195
 *           return self.binned_ids_ptr().binDim()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1195, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_16->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1195, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1194
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().binDim()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().binDim()
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1196
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().binDim()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().binDim()
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1196, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1197
 *           return self.binned_iid_ptr().binDim()
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1197, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_17->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1197, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1196
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().binDim()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().binDim()
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1198
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().binDim()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().binDim()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1198, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1199
 *           return self.binned_iii_ptr().binDim()
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1199, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_18->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1199, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1198
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().binDim()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().binDim()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1200
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().binDim()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().binDim()
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1200, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1201
 *           return self.binned_iis_ptr().binDim()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1201, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_19->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1201, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1200
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().binDim()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().binDim()
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1202
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().binDim()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().binDim()
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1202, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1203
 *           return self.binned_isd_ptr().binDim()
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1203, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_20->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1203, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1202
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().binDim()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().binDim()
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1204
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().binDim()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().binDim()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1204, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1205
 *           return self.binned_isi_ptr().binDim()
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1205, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_21->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1205, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1204
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().binDim()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().binDim()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1206
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().binDim()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().binDim()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1206, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1207
 *           return self.binned_iss_ptr().binDim()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1207, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_22->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1207, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1206
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().binDim()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().binDim()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1208
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().binDim()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().binDim()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1208, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1209
 *           return self.binned_sdd_ptr().binDim()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1209, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_23->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1209, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1209, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1208
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().binDim()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().binDim()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1210
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().binDim()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().binDim()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1210, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1211
 *           return self.binned_sdi_ptr().binDim()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1211, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_24->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1211, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1210
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().binDim()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().binDim()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1212
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().binDim()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().binDim()
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1212, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1213
 *           return self.binned_sds_ptr().binDim()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1213, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_25->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1213, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1212
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().binDim()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().binDim()
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1214
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().binDim()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().binDim()
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1214, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1215
 *           return self.binned_sid_ptr().binDim()
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1215, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_26->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1215, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1214
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().binDim()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().binDim()
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1216
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().binDim()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().binDim()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1216, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1217
 *           return self.binned_sii_ptr().binDim()
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1217, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_27->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1217, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1216
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().binDim()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().binDim()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1218
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().binDim()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().binDim()
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1218, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1219
 *           return self.binned_sis_ptr().binDim()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1219, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_28->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1219, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1218
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().binDim()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().binDim()
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1220
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().binDim()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().binDim()
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1221
 *           return self.binned_ssd_ptr().binDim()
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1221, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_29->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1221, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1220
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().binDim()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().binDim()
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1222
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().binDim()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1223
 *           return self.binned_ssi_ptr().binDim()
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1223, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_30->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1223, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1222
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().binDim()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1224
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1224, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1168
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1227
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_16BinnedEstimate3D_36__len__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1228
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 1228, __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(18, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":1227
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedEstimate3D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1230
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_38bins, "BinnedEstimate3D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_38bins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1230, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1230, __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, "bins") < 0)) __PYX_ERR(18, 1230, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(18, 1230, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_38bins(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_38bins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1232
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(18, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1232, __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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 1232, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1232, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(18, 1232, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1232, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1232, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(18, 1232, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1232, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(18, 1232, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1233
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(18, 1233, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 1233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(18, 1233, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedEstimate3D.pyx":1234
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(18, 1234, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 1234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1234, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(18, 1234, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedEstimate3D.pyx":1233
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedEstimate3D.pyx":1232
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 1232, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1232, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(18, 1232, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1233
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedEstimate3D.pyx":1232
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(18, 1232, __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/generated/BinnedEstimate3D.pyx":1230
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.bins", __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/generated/BinnedEstimate3D.pyx":1236
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_40_bin, "BinnedEstimate3D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1236, __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(18, 1236, __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(18, 1236, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 1236, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_40_bin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_17;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_18;
  std::vector<size_t>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_20;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_21;
  std::vector<size_t>  __pyx_t_22;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_23;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_24;
  std::vector<size_t>  __pyx_t_25;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_26;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_27;
  std::vector<size_t>  __pyx_t_28;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_29;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_30;
  std::vector<size_t>  __pyx_t_31;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_32;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_33;
  std::vector<size_t>  __pyx_t_34;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_35;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_36;
  std::vector<size_t>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_38;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_39;
  std::vector<size_t>  __pyx_t_40;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_41;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_42;
  std::vector<size_t>  __pyx_t_43;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_44;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_45;
  std::vector<size_t>  __pyx_t_46;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_47;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_48;
  std::vector<size_t>  __pyx_t_49;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_50;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_51;
  std::vector<size_t>  __pyx_t_52;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_53;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_54;
  std::vector<size_t>  __pyx_t_55;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_56;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_57;
  std::vector<size_t>  __pyx_t_58;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_59;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_60;
  std::vector<size_t>  __pyx_t_61;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_62;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_63;
  std::vector<size_t>  __pyx_t_64;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_65;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_66;
  std::vector<size_t>  __pyx_t_67;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_68;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_69;
  std::vector<size_t>  __pyx_t_70;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_71;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_72;
  std::vector<size_t>  __pyx_t_73;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_74;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_75;
  std::vector<size_t>  __pyx_t_76;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_77;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_78;
  std::vector<size_t>  __pyx_t_79;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_80;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_81;
  std::vector<size_t>  __pyx_t_82;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_83;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_84;
  std::vector<size_t>  __pyx_t_85;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_86;
  __Pyx_FakeReference<YODA::Estimate> __pyx_t_87;
  std::vector<size_t>  __pyx_t_88;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1238
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin3D(Estimate)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":1239
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin3D(Estimate)
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(18, 1239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":1240
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin3D(Estimate)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin3D(((PyObject *)__pyx_ptype_4yoda_4core_Estimate)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":1241
 *         st = self.isMasked(i)
 *         b = Bin3D(Estimate)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1241, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1242
 *         b = Bin3D(Estimate)
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         elif self._config == "ddi":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1242, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1242, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1243
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1243, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1243, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1243, __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/generated/BinnedEstimate3D.pyx":1241
 *         st = self.isMasked(i)
 *         b = Bin3D(Estimate)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1244
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1244, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1245
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         elif self._config == "ddi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 *         elif self._config == "dds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1245, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1245, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1246
 *         elif self._config == "ddi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1246, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1246, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1246, __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/generated/BinnedEstimate3D.pyx":1244
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1247
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1247, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1248
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 *         elif self._config == "dds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 *         elif self._config == "did":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1248, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1248, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1249
 *         elif self._config == "dds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1249, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1249, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1249, __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/generated/BinnedEstimate3D.pyx":1247
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddi_ptr()._global2local(i), st)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1250
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1250, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1251
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 *         elif self._config == "did":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 *         elif self._config == "dii":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1251, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1251, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_18), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1252
 *         elif self._config == "did":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1252, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_17->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1252, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_19); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1252, __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/generated/BinnedEstimate3D.pyx":1250
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dds_ptr()._global2local(i), st)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1253
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1253, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1254
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 *         elif self._config == "dii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 *         elif self._config == "dis":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1254, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1254, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_21), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1255
 *         elif self._config == "dii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1255, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_20->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1255, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1255, __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/generated/BinnedEstimate3D.pyx":1253
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_did_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_did_ptr()._global2local(i), st)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1256
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1256, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1257
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 *         elif self._config == "dis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 *         elif self._config == "dsd":
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1257, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1257, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_24), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1258
 *         elif self._config == "dis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1258, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_23->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1258, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_25); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1258, __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/generated/BinnedEstimate3D.pyx":1256
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dii_ptr()._global2local(i), st)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1259
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1259, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1260
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 *         elif self._config == "dsd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 *         elif self._config == "dsi":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1260, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1260, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_27), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1261
 *         elif self._config == "dsd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1261, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_26->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1261, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1261, __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/generated/BinnedEstimate3D.pyx":1259
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dis_ptr()._global2local(i), st)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1262
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1262, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1263
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 *         elif self._config == "dsi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 *         elif self._config == "dss":
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1263, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1263, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_30), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1264
 *         elif self._config == "dsi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1264, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_29->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1264, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_31); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1264, __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/generated/BinnedEstimate3D.pyx":1262
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsd_ptr()._global2local(i), st)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1265
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1265, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1266
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 *         elif self._config == "dss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 *         elif self._config == "idd":
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1266, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1266, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_33), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1267
 *         elif self._config == "dss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1267, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_32->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1267, __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/generated/BinnedEstimate3D.pyx":1265
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dsi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dsi_ptr()._global2local(i), st)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1268, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1269
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 *         elif self._config == "idd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 *         elif self._config == "idi":
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1269, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1269, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_36), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1270
 *         elif self._config == "idd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1270, __pyx_L1_error)
    try {
      __pyx_t_37 = __pyx_t_35->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1270, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_37); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1270, __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/generated/BinnedEstimate3D.pyx":1268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dss_ptr()._global2local(i), st)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1271, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1272
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 *         elif self._config == "idi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 *         elif self._config == "ids":
 */
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1272, __pyx_L1_error)
    try {
      __pyx_t_39 = __pyx_t_38->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1272, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_39), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1273
 *         elif self._config == "idi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1273, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_38->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_40); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1273, __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/generated/BinnedEstimate3D.pyx":1271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idd_ptr()._global2local(i), st)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1274
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1274, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1275
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 *         elif self._config == "ids":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 *         elif self._config == "iid":
 */
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1275, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1275, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_42), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1276
 *         elif self._config == "ids":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1276, __pyx_L1_error)
    try {
      __pyx_t_43 = __pyx_t_41->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1276, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_43); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1276, __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/generated/BinnedEstimate3D.pyx":1274
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_idi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_idi_ptr()._global2local(i), st)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1277
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1277, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1278
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 *         elif self._config == "iid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 *         elif self._config == "iii":
 */
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1278, __pyx_L1_error)
    try {
      __pyx_t_45 = __pyx_t_44->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1278, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_45), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1279
 *         elif self._config == "iid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1279, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_44->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1279, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_46); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1279, __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/generated/BinnedEstimate3D.pyx":1277
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ids_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ids_ptr()._global2local(i), st)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1280
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1280, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1281
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 *         elif self._config == "iii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 *         elif self._config == "iis":
 */
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1281, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1281, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_48), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1282
 *         elif self._config == "iii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1282, __pyx_L1_error)
    try {
      __pyx_t_49 = __pyx_t_47->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1282, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_49); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1282, __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/generated/BinnedEstimate3D.pyx":1280
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iid_ptr()._global2local(i), st)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1283
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1283, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1284
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 *         elif self._config == "iis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 *         elif self._config == "isd":
 */
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1284, __pyx_L1_error)
    try {
      __pyx_t_51 = __pyx_t_50->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1284, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_51), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1285
 *         elif self._config == "iis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1285, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_50->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1285, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_52); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1285, __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/generated/BinnedEstimate3D.pyx":1283
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iii_ptr()._global2local(i), st)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1286
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1286, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1287
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 *         elif self._config == "isd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 *         elif self._config == "isi":
 */
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1287, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1287, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_54), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1288
 *         elif self._config == "isd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1288, __pyx_L1_error)
    try {
      __pyx_t_55 = __pyx_t_53->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1288, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_55); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1288, __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/generated/BinnedEstimate3D.pyx":1286
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iis_ptr()._global2local(i), st)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1289
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1289, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1290
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 *         elif self._config == "isi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 *         elif self._config == "iss":
 */
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1290, __pyx_L1_error)
    try {
      __pyx_t_57 = __pyx_t_56->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1290, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_57), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1291
 *         elif self._config == "isi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1291, __pyx_L1_error)
    try {
      __pyx_t_58 = __pyx_t_56->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1291, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_58); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1291, __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/generated/BinnedEstimate3D.pyx":1289
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isd_ptr()._global2local(i), st)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1292
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1292, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1293
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 *         elif self._config == "iss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 *         elif self._config == "sdd":
 */
    __pyx_t_59 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_59 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1293, __pyx_L1_error)
    try {
      __pyx_t_60 = __pyx_t_59->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1293, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_60), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1294
 *         elif self._config == "iss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_59 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_59 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1294, __pyx_L1_error)
    try {
      __pyx_t_61 = __pyx_t_59->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1294, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_61); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1294, __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/generated/BinnedEstimate3D.pyx":1292
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_isi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_isi_ptr()._global2local(i), st)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1295
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1295, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1296
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 *         elif self._config == "sdd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 *         elif self._config == "sdi":
 */
    __pyx_t_62 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_62 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1296, __pyx_L1_error)
    try {
      __pyx_t_63 = __pyx_t_62->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1296, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_63), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1297
 *         elif self._config == "sdd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_62 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_62 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1297, __pyx_L1_error)
    try {
      __pyx_t_64 = __pyx_t_62->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1297, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_64); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1297, __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/generated/BinnedEstimate3D.pyx":1295
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_iss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_iss_ptr()._global2local(i), st)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1298
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1298, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1299
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 *         elif self._config == "sdi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 *         elif self._config == "sds":
 */
    __pyx_t_65 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_65 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1299, __pyx_L1_error)
    try {
      __pyx_t_66 = __pyx_t_65->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1299, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_66), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1300
 *         elif self._config == "sdi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_65 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_65 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1300, __pyx_L1_error)
    try {
      __pyx_t_67 = __pyx_t_65->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1300, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_67); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1300, __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/generated/BinnedEstimate3D.pyx":1298
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdd_ptr()._global2local(i), st)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1301
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1301, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1302
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 *         elif self._config == "sds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 *         elif self._config == "sid":
 */
    __pyx_t_68 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_68 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1302, __pyx_L1_error)
    try {
      __pyx_t_69 = __pyx_t_68->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1302, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_69), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1303
 *         elif self._config == "sds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_68 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_68 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1303, __pyx_L1_error)
    try {
      __pyx_t_70 = __pyx_t_68->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1303, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_70); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1303, __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/generated/BinnedEstimate3D.pyx":1301
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sdi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sdi_ptr()._global2local(i), st)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1304
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1304, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1305
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 *         elif self._config == "sid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 *         elif self._config == "sii":
 */
    __pyx_t_71 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_71 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1305, __pyx_L1_error)
    try {
      __pyx_t_72 = __pyx_t_71->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1305, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_72), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1306
 *         elif self._config == "sid":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_71 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_71 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1306, __pyx_L1_error)
    try {
      __pyx_t_73 = __pyx_t_71->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1306, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_73); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1306, __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/generated/BinnedEstimate3D.pyx":1304
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sds_ptr()._global2local(i), st)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1307
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1307, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1308
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 *         elif self._config == "sii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 *         elif self._config == "sis":
 */
    __pyx_t_74 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_74 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1308, __pyx_L1_error)
    try {
      __pyx_t_75 = __pyx_t_74->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1308, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_75), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1309
 *         elif self._config == "sii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_74 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_74 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1309, __pyx_L1_error)
    try {
      __pyx_t_76 = __pyx_t_74->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1309, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_76); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1309, __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/generated/BinnedEstimate3D.pyx":1307
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sid_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sid_ptr()._global2local(i), st)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1310
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1310, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1311
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 *         elif self._config == "sis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 *         elif self._config == "ssd":
 */
    __pyx_t_77 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_77 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1311, __pyx_L1_error)
    try {
      __pyx_t_78 = __pyx_t_77->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1311, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_78), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1312
 *         elif self._config == "sis":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_77 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_77 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1312, __pyx_L1_error)
    try {
      __pyx_t_79 = __pyx_t_77->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1312, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_79); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1312, __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/generated/BinnedEstimate3D.pyx":1310
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sii_ptr()._global2local(i), st)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1313
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1313, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1314
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 *         elif self._config == "ssd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 *         elif self._config == "ssi":
 */
    __pyx_t_80 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_80 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1314, __pyx_L1_error)
    try {
      __pyx_t_81 = __pyx_t_80->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1314, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_81), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1315
 *         elif self._config == "ssd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_80 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_80 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1315, __pyx_L1_error)
    try {
      __pyx_t_82 = __pyx_t_80->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1315, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_82); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1315, __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/generated/BinnedEstimate3D.pyx":1313
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sis_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sis_ptr()._global2local(i), st)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1316
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1316, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1317
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 *         elif self._config == "ssi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 *         elif self._config == "sss":
 */
    __pyx_t_83 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_83 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1317, __pyx_L1_error)
    try {
      __pyx_t_84 = __pyx_t_83->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1317, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_84), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1318
 *         elif self._config == "ssi":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_83 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_83 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1318, __pyx_L1_error)
    try {
      __pyx_t_85 = __pyx_t_83->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1318, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_85); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1318, __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/generated/BinnedEstimate3D.pyx":1316
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssd_ptr()._global2local(i), st)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1319
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 1319, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedEstimate3D.pyx":1320
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 *         elif self._config == "sss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_86 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_86 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1320, __pyx_L1_error)
    try {
      __pyx_t_87 = __pyx_t_86->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1320, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_87), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1321
 *         elif self._config == "sss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_86 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_86 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1321, __pyx_L1_error)
    try {
      __pyx_t_88 = __pyx_t_86->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1321, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_88); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(18, 1321, __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/generated/BinnedEstimate3D.pyx":1319
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ssi_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ssi_ptr()._global2local(i), st)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":1322
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1322, __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/generated/BinnedEstimate3D.pyx":1323
 *           rtn.setIndices(i, self.binned_sss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":1236
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1325
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_42bin, "BinnedEstimate3D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_42bin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_42bin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_42bin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1327
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 1327, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 1327, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 1327, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":1328
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 1328, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":1329
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y, z):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(18, 1329, __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/generated/BinnedEstimate3D.pyx":1325
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedEstimate3D.bin", __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;
}

/* "include/generated/BinnedEstimate3D.pyx":1331
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_44binAt, "BinnedEstimate3D.binAt(self, x, y, z)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1331, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1331, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, 1); __PYX_ERR(18, 1331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1331, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, 2); __PYX_ERR(18, 1331, __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(18, 1331, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, __pyx_nargs); __PYX_ERR(18, 1331, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_44binAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1333
 *     def binAt(self, x, y, z):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(18, 1333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_x, __pyx_v_y, __pyx_v_z};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1333, __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
  if (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;
    }
  }
  #endif
  {
    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(18, 1333, __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/generated/BinnedEstimate3D.pyx":1331
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1335
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_46maskBin, "BinnedEstimate3D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1335, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1335, __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, "maskBin") < 0)) __PYX_ERR(18, 1335, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(18, 1335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedEstimate3D<double,double,double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_33;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedEstimate3D.pyx":1337
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1338
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1338, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1337
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1339
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1339, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1340
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1340, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1340, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1340, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1340, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1339
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 *         elif self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1341
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1342
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1342, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1342, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1342, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1342, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1341
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 *         elif self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1343
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskBin(idx, status)
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1344
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1344, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1344, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1344, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1344, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1343
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskBin(idx, status)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskBin(idx, status)
 *         elif self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1345
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskBin(idx, status)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskBin(idx, status)
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1346
 *           return self.binned_dds_ptr().maskBin(idx, status)
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1346, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1346, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1346, __pyx_L1_error)
    try {
      __pyx_t_10->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1346, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1345
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskBin(idx, status)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskBin(idx, status)
 *         elif self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1347
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskBin(idx, status)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskBin(idx, status)
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1348
 *           return self.binned_did_ptr().maskBin(idx, status)
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1348, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1348, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1348, __pyx_L1_error)
    try {
      __pyx_t_11->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1348, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1347
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskBin(idx, status)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskBin(idx, status)
 *         elif self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1349
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskBin(idx, status)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskBin(idx, status)
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1350
 *           return self.binned_dii_ptr().maskBin(idx, status)
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1350, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1350, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1350, __pyx_L1_error)
    try {
      __pyx_t_12->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1350, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1349
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskBin(idx, status)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskBin(idx, status)
 *         elif self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1351
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskBin(idx, status)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1352
 *           return self.binned_dis_ptr().maskBin(idx, status)
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1352, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1352, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1352, __pyx_L1_error)
    try {
      __pyx_t_13->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1352, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1351
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskBin(idx, status)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 *         elif self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1353
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1354
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1354, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1354, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1354, __pyx_L1_error)
    try {
      __pyx_t_14->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1354, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1353
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskBin(idx, status)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 *         elif self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1355
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskBin(idx, status)
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1356
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1356, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1356, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1356, __pyx_L1_error)
    try {
      __pyx_t_15->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1356, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1355
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskBin(idx, status)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskBin(idx, status)
 *         elif self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1357
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskBin(idx, status)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskBin(idx, status)
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1358
 *           return self.binned_dss_ptr().maskBin(idx, status)
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1358, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1358, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1358, __pyx_L1_error)
    try {
      __pyx_t_16->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1358, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1357
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskBin(idx, status)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskBin(idx, status)
 *         elif self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1359
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskBin(idx, status)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskBin(idx, status)
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1360
 *           return self.binned_idd_ptr().maskBin(idx, status)
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1360, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1360, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1360, __pyx_L1_error)
    try {
      __pyx_t_17->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1360, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1359
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskBin(idx, status)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskBin(idx, status)
 *         elif self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1361
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskBin(idx, status)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskBin(idx, status)
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1361, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1362
 *           return self.binned_idi_ptr().maskBin(idx, status)
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1362, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1362, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1362, __pyx_L1_error)
    try {
      __pyx_t_18->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1362, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1361
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskBin(idx, status)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskBin(idx, status)
 *         elif self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1363
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskBin(idx, status)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskBin(idx, status)
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1363, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1364
 *           return self.binned_ids_ptr().maskBin(idx, status)
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1364, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1364, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1364, __pyx_L1_error)
    try {
      __pyx_t_19->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1364, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1363
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskBin(idx, status)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskBin(idx, status)
 *         elif self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1365
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskBin(idx, status)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskBin(idx, status)
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1365, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1366
 *           return self.binned_iid_ptr().maskBin(idx, status)
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1366, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1366, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1366, __pyx_L1_error)
    try {
      __pyx_t_20->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1366, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1365
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskBin(idx, status)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskBin(idx, status)
 *         elif self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1367
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskBin(idx, status)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskBin(idx, status)
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1367, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1368
 *           return self.binned_iii_ptr().maskBin(idx, status)
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1368, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1368, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1368, __pyx_L1_error)
    try {
      __pyx_t_21->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1368, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1367
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskBin(idx, status)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskBin(idx, status)
 *         elif self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1369
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskBin(idx, status)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskBin(idx, status)
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1369, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1370
 *           return self.binned_iis_ptr().maskBin(idx, status)
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1370, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1370, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1370, __pyx_L1_error)
    try {
      __pyx_t_22->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1370, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1370, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1369
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskBin(idx, status)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskBin(idx, status)
 *         elif self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1371
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskBin(idx, status)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskBin(idx, status)
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1371, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1372
 *           return self.binned_isd_ptr().maskBin(idx, status)
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1372, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1372, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1372, __pyx_L1_error)
    try {
      __pyx_t_23->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1372, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1371
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskBin(idx, status)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskBin(idx, status)
 *         elif self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1373
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskBin(idx, status)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskBin(idx, status)
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1373, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1374
 *           return self.binned_isi_ptr().maskBin(idx, status)
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1374, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1374, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1374, __pyx_L1_error)
    try {
      __pyx_t_24->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1374, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1373
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskBin(idx, status)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskBin(idx, status)
 *         elif self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1375
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskBin(idx, status)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1375, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1376
 *           return self.binned_iss_ptr().maskBin(idx, status)
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1376, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1376, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1376, __pyx_L1_error)
    try {
      __pyx_t_25->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1376, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1375
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskBin(idx, status)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 *         elif self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1377
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1377, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1378
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1378, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1378, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1378, __pyx_L1_error)
    try {
      __pyx_t_26->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1378, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1377
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskBin(idx, status)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 *         elif self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1379
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskBin(idx, status)
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1379, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1380
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1380, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1380, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1380, __pyx_L1_error)
    try {
      __pyx_t_27->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1380, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1379
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskBin(idx, status)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskBin(idx, status)
 *         elif self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1381
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskBin(idx, status)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskBin(idx, status)
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1381, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1382
 *           return self.binned_sds_ptr().maskBin(idx, status)
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1382, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1382, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1382, __pyx_L1_error)
    try {
      __pyx_t_28->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1382, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1381
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskBin(idx, status)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskBin(idx, status)
 *         elif self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1383
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskBin(idx, status)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskBin(idx, status)
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1383, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1384
 *           return self.binned_sid_ptr().maskBin(idx, status)
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1384, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1384, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1384, __pyx_L1_error)
    try {
      __pyx_t_29->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1384, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1383
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskBin(idx, status)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskBin(idx, status)
 *         elif self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1385
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskBin(idx, status)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskBin(idx, status)
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1385, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1386
 *           return self.binned_sii_ptr().maskBin(idx, status)
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1386, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1386, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1386, __pyx_L1_error)
    try {
      __pyx_t_30->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1386, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1385
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskBin(idx, status)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskBin(idx, status)
 *         elif self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1387
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskBin(idx, status)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1387, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1388
 *           return self.binned_sis_ptr().maskBin(idx, status)
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1388, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1388, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1388, __pyx_L1_error)
    try {
      __pyx_t_31->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1388, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1387
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskBin(idx, status)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 *         elif self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1389
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1389, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1390
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           return self.binned_sss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1390, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1390, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1390, __pyx_L1_error)
    try {
      __pyx_t_32->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1390, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1389
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskBin(idx, status)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 *         elif self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1391
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1391, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1392
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 *         elif self._config == "sss":
 *           return self.binned_sss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1392, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1392, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1392, __pyx_L1_error)
    try {
      __pyx_t_33->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1392, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1391
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskBin(idx, status)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1335
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedEstimate3D.maskBin", __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;
}

/* "include/generated/BinnedEstimate3D.pyx":1394
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_48maskBins, "BinnedEstimate3D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1394, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1394, __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, "maskBins") < 0)) __PYX_ERR(18, 1394, __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_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(18, 1394, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1396
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 1396, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 1396, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 1396, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":1397
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1397, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1397, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(18, 1397, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1397, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(18, 1397, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(18, 1397, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1398
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, y, z, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":1397
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":1394
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.maskBins", __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;
}

/* "include/generated/BinnedEstimate3D.pyx":1400
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_50maskBinAt, "BinnedEstimate3D.maskBinAt(self, x, y, z, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_status,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1400, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1400, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, 1); __PYX_ERR(18, 1400, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1400, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, 2); __PYX_ERR(18, 1400, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1400, __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, "maskBinAt") < 0)) __PYX_ERR(18, 1400, __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);
        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_status = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, __pyx_nargs); __PYX_ERR(18, 1400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1402
 *     def maskBinAt(self, x, y, z, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_x, __pyx_v_y, __pyx_v_z};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1402, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(18, 1402, __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/generated/BinnedEstimate3D.pyx":1400
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */

  /* 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.BinnedEstimate3D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1404
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_52maskSlice, "BinnedEstimate3D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1404, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1404, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(18, 1404, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1404, __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, "maskSlice") < 0)) __PYX_ERR(18, 1404, __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_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(18, 1404, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_32;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1406
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1406, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1407
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1407, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1407, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1407, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1407, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(18, 1407, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1406
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1408
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1408, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1409
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1409, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1409, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1409, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1409, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1409, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1408
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1410
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1410, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1411
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1411, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1411, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1411, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1411, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(18, 1411, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1410
 *         elif self._config == "ddi":
 *           return self.binned_ddi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1412
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1412, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1413
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1413, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1413, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1413, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1413, __pyx_L1_error)
    try {
      __pyx_t_9->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1413, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1412
 *         elif self._config == "dds":
 *           return self.binned_dds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1414
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1414, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1415
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1415, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1415, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1415, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1415, __pyx_L1_error)
    try {
      __pyx_t_10->maskSlice(__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(18, 1415, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1414
 *         elif self._config == "did":
 *           return self.binned_did_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1416
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1417
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1417, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1417, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1417, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1417, __pyx_L1_error)
    try {
      __pyx_t_11->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1417, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1416
 *         elif self._config == "dii":
 *           return self.binned_dii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1418
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1418, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1419
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1419, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1419, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1419, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1419, __pyx_L1_error)
    try {
      __pyx_t_12->maskSlice(__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(18, 1419, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1418
 *         elif self._config == "dis":
 *           return self.binned_dis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1420
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1421
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1421, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1421, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1421, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1421, __pyx_L1_error)
    try {
      __pyx_t_13->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1421, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1420
 *         elif self._config == "dsd":
 *           return self.binned_dsd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1422
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1422, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1423
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1423, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1423, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1423, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1423, __pyx_L1_error)
    try {
      __pyx_t_14->maskSlice(__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(18, 1423, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1422
 *         elif self._config == "dsi":
 *           return self.binned_dsi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1424
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1424, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1425
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1425, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1425, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1425, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1425, __pyx_L1_error)
    try {
      __pyx_t_15->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1425, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1424
 *         elif self._config == "dss":
 *           return self.binned_dss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1426
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1427
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1427, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1427, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1427, __pyx_L1_error)
    try {
      __pyx_t_16->maskSlice(__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(18, 1427, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1426
 *         elif self._config == "idd":
 *           return self.binned_idd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1428
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1429
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1429, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1429, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1429, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1429, __pyx_L1_error)
    try {
      __pyx_t_17->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1429, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1428
 *         elif self._config == "idi":
 *           return self.binned_idi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1430
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1431
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1431, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1431, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1431, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1431, __pyx_L1_error)
    try {
      __pyx_t_18->maskSlice(__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(18, 1431, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1430
 *         elif self._config == "ids":
 *           return self.binned_ids_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1432
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1433
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1433, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1433, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1433, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1433, __pyx_L1_error)
    try {
      __pyx_t_19->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1433, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1432
 *         elif self._config == "iid":
 *           return self.binned_iid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1434
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1434, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1435
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1435, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1435, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1435, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1435, __pyx_L1_error)
    try {
      __pyx_t_20->maskSlice(__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(18, 1435, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1434
 *         elif self._config == "iii":
 *           return self.binned_iii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1436
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1437
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1437, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1437, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1437, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1437, __pyx_L1_error)
    try {
      __pyx_t_21->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1437, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1436
 *         elif self._config == "iis":
 *           return self.binned_iis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1438
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1438, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1439
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1439, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1439, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1439, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1439, __pyx_L1_error)
    try {
      __pyx_t_22->maskSlice(__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(18, 1439, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1438
 *         elif self._config == "isd":
 *           return self.binned_isd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1440
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1440, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1441
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1441, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1441, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1441, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1441, __pyx_L1_error)
    try {
      __pyx_t_23->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1441, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1440
 *         elif self._config == "isi":
 *           return self.binned_isi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1442
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1442, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1443
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1443, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1443, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1443, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1443, __pyx_L1_error)
    try {
      __pyx_t_24->maskSlice(__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(18, 1443, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1442
 *         elif self._config == "iss":
 *           return self.binned_iss_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1444
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1444, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1445
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1445, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1445, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1445, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1445, __pyx_L1_error)
    try {
      __pyx_t_25->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1445, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1444
 *         elif self._config == "sdd":
 *           return self.binned_sdd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1446
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1446, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1447
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1447, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1447, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1447, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1447, __pyx_L1_error)
    try {
      __pyx_t_26->maskSlice(__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(18, 1447, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1446
 *         elif self._config == "sdi":
 *           return self.binned_sdi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1448
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1448, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1449
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1449, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1449, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1449, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1449, __pyx_L1_error)
    try {
      __pyx_t_27->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1449, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1448
 *         elif self._config == "sds":
 *           return self.binned_sds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1450
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1450, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1451
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1451, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1451, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1451, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1451, __pyx_L1_error)
    try {
      __pyx_t_28->maskSlice(__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(18, 1451, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1450
 *         elif self._config == "sid":
 *           return self.binned_sid_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1452
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1452, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1453
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1453, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1453, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1453, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1453, __pyx_L1_error)
    try {
      __pyx_t_29->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1453, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1452
 *         elif self._config == "sii":
 *           return self.binned_sii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1454
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1454, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1455
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1455, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1455, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1455, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1455, __pyx_L1_error)
    try {
      __pyx_t_30->maskSlice(__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(18, 1455, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1454
 *         elif self._config == "sis":
 *           return self.binned_sis_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1456
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1456, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1457
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1457, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1457, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1457, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1457, __pyx_L1_error)
    try {
      __pyx_t_31->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1457, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1456
 *         elif self._config == "ssd":
 *           return self.binned_ssd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1458
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1458, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1459
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sss":
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1459, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1459, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 1459, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1459, __pyx_L1_error)
    try {
      __pyx_t_32->maskSlice(__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(18, 1459, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1458
 *         elif self._config == "ssi":
 *           return self.binned_ssi_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1404
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1461
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1462
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 1462, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(18, 1462, __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(18, 1462, __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(18, 1462, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedEstimate3D.pyx":1463
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1463, __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/generated/BinnedEstimate3D.pyx":1461
 *           return self.binned_sss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1466
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_56mkScatter, "BinnedEstimate3D.mkScatter(self, path='', pat_match='', includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter4D.\n\n        Make a new Scatter4D.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_57mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_56mkScatter};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_57mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_pat_match = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_pat_match,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_match);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1466, __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(18, 1466, __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_path = values[0];
    __pyx_v_pat_match = values[1];
    __pyx_v_includeOverflows = values[2];
    __pyx_v_includeMaskedBins = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 4, __pyx_nargs); __PYX_ERR(18, 1466, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_56mkScatter(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_path, __pyx_v_pat_match, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_56mkScatter(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_pat_match, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter4D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  YODA::Scatter4D __pyx_t_7;
  YODA::Scatter4D *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_34;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_35;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1470
 * 
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1471
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ddi":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1471, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1471, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1471, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1471, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1471, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1471, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1472
 *         if self._config == "ddd":
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1472, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1470
 * 
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1473
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1473, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1474
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ddi":
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dds":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1474, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1474, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1474, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1474, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1474, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_10->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1474, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1475
 *         elif self._config == "ddi":
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1475, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1473
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1476
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1477
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dds":
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "did":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1477, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1477, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1477, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1477, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1477, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1477, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1478
 *         elif self._config == "dds":
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1478, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1476
 *           s = <c.Scatter4D> self.binned_ddi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1479
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1479, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1480
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "did":
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dii":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1480, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1480, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1480, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1480, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1480, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_12->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1480, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1481
 *         elif self._config == "did":
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1481, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1479
 *           s = <c.Scatter4D> self.binned_dds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1482
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1483
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dii":
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dis":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1483, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1483, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1483, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1483, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1483, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_13->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1483, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1484
 *         elif self._config == "dii":
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1484, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1482
 *           s = <c.Scatter4D> self.binned_did_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1485
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1485, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1486
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dis":
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1486, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1486, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1486, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1486, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1486, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_14->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1486, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1487
 *         elif self._config == "dis":
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1487, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1485
 *           s = <c.Scatter4D> self.binned_dii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1488
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1488, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1489
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsd":
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsi":
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1489, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1489, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1489, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1489, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1489, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_15->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1489, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1490
 *         elif self._config == "dsd":
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1490, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1488
 *           s = <c.Scatter4D> self.binned_dis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1491
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1491, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1492
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsi":
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dss":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1492, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1492, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1492, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1492, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1492, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_16->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1492, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1493
 *         elif self._config == "dsi":
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1493, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1491
 *           s = <c.Scatter4D> self.binned_dsd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1494
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1494, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1495
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dss":
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idd":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1495, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1495, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1495, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1495, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1495, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_17->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1495, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1496
 *         elif self._config == "dss":
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1496, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1494
 *           s = <c.Scatter4D> self.binned_dsi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1497
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1497, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1498
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idd":
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idi":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1498, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1498, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1498, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1498, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1498, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_18->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1498, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1499
 *         elif self._config == "idd":
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1499, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1497
 *           s = <c.Scatter4D> self.binned_dss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1500
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1500, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1501
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idi":
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ids":
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1501, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1501, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1501, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1501, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1501, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_19->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1501, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1502
 *         elif self._config == "idi":
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1502, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1500
 *           s = <c.Scatter4D> self.binned_idd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1503
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1503, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1504
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ids":
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iid":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1504, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1504, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1504, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1504, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1504, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_20->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1504, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1505
 *         elif self._config == "ids":
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1505, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1503
 *           s = <c.Scatter4D> self.binned_idi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1506
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1506, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1507
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iid":
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iii":
 */
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1507, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1507, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1507, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1507, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1507, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_21->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1507, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1508
 *         elif self._config == "iid":
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1508, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1506
 *           s = <c.Scatter4D> self.binned_ids_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1509
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1509, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1510
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iii":
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iis":
 */
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1510, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1510, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1510, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1510, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1510, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_22->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1510, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1511
 *         elif self._config == "iii":
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1511, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1509
 *           s = <c.Scatter4D> self.binned_iid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1512
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1512, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1513
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iis":
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isd":
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1513, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1513, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1513, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1513, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1513, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_23->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1513, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1514
 *         elif self._config == "iis":
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1514, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1512
 *           s = <c.Scatter4D> self.binned_iii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1515
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1515, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1516
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isd":
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isi":
 */
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1516, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1516, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1516, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1516, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1516, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_24->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1516, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1517
 *         elif self._config == "isd":
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1517, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1515
 *           s = <c.Scatter4D> self.binned_iis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1518
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1518, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1519
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isi":
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iss":
 */
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1519, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1519, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1519, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1519, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1519, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_25->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1519, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1520
 *         elif self._config == "isi":
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1520, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1518
 *           s = <c.Scatter4D> self.binned_isd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1521
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1521, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1522
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iss":
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdd":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1522, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1522, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1522, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1522, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1522, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_26->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1522, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1523
 *         elif self._config == "iss":
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1523, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1521
 *           s = <c.Scatter4D> self.binned_isi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1524
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1525
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdd":
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdi":
 */
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1525, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1525, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1525, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1525, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1525, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_27->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1525, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1526
 *         elif self._config == "sdd":
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1526, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1524
 *           s = <c.Scatter4D> self.binned_iss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1527
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1527, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1528
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdi":
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sds":
 */
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1528, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1528, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1528, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1528, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1528, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_28->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1528, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1529
 *         elif self._config == "sdi":
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1529, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1527
 *           s = <c.Scatter4D> self.binned_sdd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1530
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1530, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1531
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sds":
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sid":
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1531, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1531, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1531, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1531, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1531, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_29->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1531, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1532
 *         elif self._config == "sds":
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1532, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1530
 *           s = <c.Scatter4D> self.binned_sdi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1533
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1533, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1534
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sid":
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sii":
 */
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1534, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1534, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1534, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1534, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1534, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_30->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1534, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1535
 *         elif self._config == "sid":
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1535, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1533
 *           s = <c.Scatter4D> self.binned_sds_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1536
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1537
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sii":
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sis":
 */
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1537, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1537, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1537, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1537, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1537, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_31->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1537, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1538
 *         elif self._config == "sii":
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1538, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1536
 *           s = <c.Scatter4D> self.binned_sid_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1539
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1539, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1540
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sis":
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssd":
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1540, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1540, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1540, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1540, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1540, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_32->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1540, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1541
 *         elif self._config == "sis":
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1541, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1539
 *           s = <c.Scatter4D> self.binned_sii_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1542
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1542, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1543
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssd":
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssi":
 */
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1543, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1543, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1543, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1543, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1543, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_33->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1543, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1544
 *         elif self._config == "ssd":
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1544, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1542
 *           s = <c.Scatter4D> self.binned_sis_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1545
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1546
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssi":
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sss":
 */
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1546, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1546, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1546, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1546, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1546, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_34->mkScatter(__pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1546, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1547
 *         elif self._config == "ssi":
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           s = <c.Scatter4D> self.binned_sss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1547, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1545
 *           s = <c.Scatter4D> self.binned_ssd_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1548
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1548, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1549
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sss":
 *           s = <c.Scatter4D> self.binned_sss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1549, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1549, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_match); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1549, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1549, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1549, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_35->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1549, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":1550
 *         elif self._config == "sss":
 *           s = <c.Scatter4D> self.binned_sss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedEstimate3D self, BinnedEstimate3D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_8 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1550, __pyx_L1_error)
    }
    __pyx_t_9 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 1550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1548
 *           s = <c.Scatter4D> self.binned_ssi_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_sss_ptr().mkScatter(path,pat_match,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1466
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */

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

/* "include/generated/BinnedEstimate3D.pyx":1552
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate3D self, BinnedEstimate3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate3D -> BinnedEstimate3D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_59divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_58divideBy, "BinnedEstimate3D.divideBy(self, BinnedEstimate3D other, efficiency=False)\nBinnedEstimate3D -> BinnedEstimate3D\n\n        Divide this BinnedEstimate3D by other,\n        returning a BinnedEstimate3D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_59divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_58divideBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_59divideBy(PyObject *__pyx_v_self, 
#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_BinnedEstimate3D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1552, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1552, __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(18, 1552, __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_BinnedEstimate3D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(18, 1552, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.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_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 1552, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_58divideBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_58divideBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  PyObject *__pyx_t_57 = NULL;
  PyObject *__pyx_t_58 = NULL;
  unsigned int __pyx_t_59;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1558
 *         returning a BinnedEstimate3D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1558, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 1558, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 1558, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":1559
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "ddd":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":1560
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "ddd":
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1560, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1561
 *         rtn = None
 *         if efficiency:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1561, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1562
 *         if efficiency:
 *           if self._config == "ddd":
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1562, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1562, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedEstimate3D.pyx":1563
 *           if self._config == "ddd":
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ddi":
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1563, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1561
 *         rtn = None
 *         if efficiency:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1564
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1564, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1565
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1565, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1565, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedEstimate3D.pyx":1566
 *           elif self._config == "ddi":
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dds":
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1564
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1567
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1567, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1568
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1568, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1568, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedEstimate3D.pyx":1569
 *           elif self._config == "dds":
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "did":
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1567
 *             tmp = c.BE_eff_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1570
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1570, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1571
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":
 */
      __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1571, __pyx_L1_error)
      __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1571, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_9, __pyx_t_10);

      /* "include/generated/BinnedEstimate3D.pyx":1572
 *           elif self._config == "did":
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dii":
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1570
 *             tmp = c.BE_eff_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1573
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1573, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1574
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":
 */
      __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1574, __pyx_L1_error)
      __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1574, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_11, __pyx_t_12);

      /* "include/generated/BinnedEstimate3D.pyx":1575
 *           elif self._config == "dii":
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dis":
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1573
 *             tmp = c.BE_eff_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1576
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1576, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1577
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":
 */
      __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1577, __pyx_L1_error)
      __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1577, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_13, __pyx_t_14);

      /* "include/generated/BinnedEstimate3D.pyx":1578
 *           elif self._config == "dis":
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dsd":
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1576
 *             tmp = c.BE_eff_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1579
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1579, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1580
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":
 */
      __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1580, __pyx_L1_error)
      __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1580, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_15, __pyx_t_16);

      /* "include/generated/BinnedEstimate3D.pyx":1581
 *           elif self._config == "dsd":
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dsi":
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1581, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1579
 *             tmp = c.BE_eff_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1582
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1582, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1583
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":
 */
      __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1583, __pyx_L1_error)
      __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1583, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_17, __pyx_t_18);

      /* "include/generated/BinnedEstimate3D.pyx":1584
 *           elif self._config == "dsi":
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dss":
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1582
 *             tmp = c.BE_eff_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1585
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1585, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1586
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":
 */
      __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1586, __pyx_L1_error)
      __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1586, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_19, __pyx_t_20);

      /* "include/generated/BinnedEstimate3D.pyx":1587
 *           elif self._config == "dss":
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "idd":
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1587, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1585
 *             tmp = c.BE_eff_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1588
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1588, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1589
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":
 */
      __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1589, __pyx_L1_error)
      __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1589, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_21, __pyx_t_22);

      /* "include/generated/BinnedEstimate3D.pyx":1590
 *           elif self._config == "idd":
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "idi":
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1588
 *             tmp = c.BE_eff_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1591
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1591, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1592
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":
 */
      __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1592, __pyx_L1_error)
      __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1592, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_23, __pyx_t_24);

      /* "include/generated/BinnedEstimate3D.pyx":1593
 *           elif self._config == "idi":
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ids":
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1593, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1591
 *             tmp = c.BE_eff_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1594
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1594, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1595
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":
 */
      __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1595, __pyx_L1_error)
      __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1595, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_25, __pyx_t_26);

      /* "include/generated/BinnedEstimate3D.pyx":1596
 *           elif self._config == "ids":
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iid":
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1594
 *             tmp = c.BE_eff_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1597
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1597, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1598
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":
 */
      __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1598, __pyx_L1_error)
      __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1598, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_27, __pyx_t_28);

      /* "include/generated/BinnedEstimate3D.pyx":1599
 *           elif self._config == "iid":
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iii":
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1597
 *             tmp = c.BE_eff_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1600
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1600, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1601
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":
 */
      __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1601, __pyx_L1_error)
      __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1601, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_29, __pyx_t_30);

      /* "include/generated/BinnedEstimate3D.pyx":1602
 *           elif self._config == "iii":
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iis":
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1600
 *             tmp = c.BE_eff_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1603
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1603, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1604
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":
 */
      __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1604, __pyx_L1_error)
      __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1604, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_31, __pyx_t_32);

      /* "include/generated/BinnedEstimate3D.pyx":1605
 *           elif self._config == "iis":
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "isd":
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1603
 *             tmp = c.BE_eff_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1606
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1606, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1607
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":
 */
      __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1607, __pyx_L1_error)
      __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1607, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_33, __pyx_t_34);

      /* "include/generated/BinnedEstimate3D.pyx":1608
 *           elif self._config == "isd":
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "isi":
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1606
 *             tmp = c.BE_eff_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1609
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1609, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1610
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":
 */
      __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1610, __pyx_L1_error)
      __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1610, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_35, __pyx_t_36);

      /* "include/generated/BinnedEstimate3D.pyx":1611
 *           elif self._config == "isi":
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iss":
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1609
 *             tmp = c.BE_eff_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1612
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1612, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1613
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":
 */
      __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1613, __pyx_L1_error)
      __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1613, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_37, __pyx_t_38);

      /* "include/generated/BinnedEstimate3D.pyx":1614
 *           elif self._config == "iss":
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sdd":
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1612
 *             tmp = c.BE_eff_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1615
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1615, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1616
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":
 */
      __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1616, __pyx_L1_error)
      __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1616, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_39, __pyx_t_40);

      /* "include/generated/BinnedEstimate3D.pyx":1617
 *           elif self._config == "sdd":
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sdi":
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1617, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1615
 *             tmp = c.BE_eff_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1618
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1618, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1619
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":
 */
      __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1619, __pyx_L1_error)
      __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1619, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_41, __pyx_t_42);

      /* "include/generated/BinnedEstimate3D.pyx":1620
 *           elif self._config == "sdi":
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sds":
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1618
 *             tmp = c.BE_eff_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1621
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1621, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1622
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":
 */
      __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1622, __pyx_L1_error)
      __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1622, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_43, __pyx_t_44);

      /* "include/generated/BinnedEstimate3D.pyx":1623
 *           elif self._config == "sds":
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sid":
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1621
 *             tmp = c.BE_eff_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1624
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1624, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1625
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":
 */
      __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1625, __pyx_L1_error)
      __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1625, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_45, __pyx_t_46);

      /* "include/generated/BinnedEstimate3D.pyx":1626
 *           elif self._config == "sid":
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sii":
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1624
 *             tmp = c.BE_eff_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1627
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1627, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1628
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":
 */
      __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1628, __pyx_L1_error)
      __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1628, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_47, __pyx_t_48);

      /* "include/generated/BinnedEstimate3D.pyx":1629
 *           elif self._config == "sii":
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sis":
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1629, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1627
 *             tmp = c.BE_eff_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1630
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1630, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1631
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":
 */
      __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1631, __pyx_L1_error)
      __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1631, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_49, __pyx_t_50);

      /* "include/generated/BinnedEstimate3D.pyx":1632
 *           elif self._config == "sis":
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ssd":
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1630
 *             tmp = c.BE_eff_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1633
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1633, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1634
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":
 */
      __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1634, __pyx_L1_error)
      __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1634, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_51, __pyx_t_52);

      /* "include/generated/BinnedEstimate3D.pyx":1635
 *           elif self._config == "ssd":
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ssi":
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1635, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1633
 *             tmp = c.BE_eff_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1636
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1636, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1637
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":
 */
      __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1637, __pyx_L1_error)
      __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1637, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_53, __pyx_t_54);

      /* "include/generated/BinnedEstimate3D.pyx":1638
 *           elif self._config == "ssi":
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sss":
 *             tmp = c.BE_eff_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1636
 *             tmp = c.BE_eff_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1639
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1639, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1640
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":
 *             tmp = c.BE_eff_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 */
      __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1640, __pyx_L1_error)
      __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1640, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_55, __pyx_t_56);

      /* "include/generated/BinnedEstimate3D.pyx":1641
 *           elif self._config == "sss":
 *             tmp = c.BE_eff_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "ddd":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1639
 *             tmp = c.BE_eff_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_eff_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedEstimate3D.pyx":1560
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "ddd":
 *             tmp = c.BE_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":1643
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1643, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1644
 *         else:
 *           if self._config == "ddd":
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1644, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1644, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedEstimate3D.pyx":1645
 *           if self._config == "ddd":
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ddi":
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1643
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1646
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1646, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1647
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1647, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1647, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedEstimate3D.pyx":1648
 *           elif self._config == "ddi":
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dds":
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1648, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1646
 *             tmp = c.BE_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1649
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1649, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1650
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1650, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1650, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedEstimate3D.pyx":1651
 *           elif self._config == "dds":
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "did":
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1651, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1649
 *             tmp = c.BE_div_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1652
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1652, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1653
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":
 */
      __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1653, __pyx_L1_error)
      __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1653, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_10, __pyx_t_9);

      /* "include/generated/BinnedEstimate3D.pyx":1654
 *           elif self._config == "did":
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dii":
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1654, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1652
 *             tmp = c.BE_div_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "did":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1655
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1655, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1656
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":
 */
      __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1656, __pyx_L1_error)
      __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1656, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_12, __pyx_t_11);

      /* "include/generated/BinnedEstimate3D.pyx":1657
 *           elif self._config == "dii":
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dis":
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1657, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1655
 *             tmp = c.BE_div_did(self.binned_did_ptr(), other.binned_did_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1658
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1658, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1659
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":
 */
      __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1659, __pyx_L1_error)
      __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1659, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_14, __pyx_t_13);

      /* "include/generated/BinnedEstimate3D.pyx":1660
 *           elif self._config == "dis":
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dsd":
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1660, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1658
 *             tmp = c.BE_div_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1661
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1661, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1662
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":
 */
      __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1662, __pyx_L1_error)
      __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1662, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_16, __pyx_t_15);

      /* "include/generated/BinnedEstimate3D.pyx":1663
 *           elif self._config == "dsd":
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dsi":
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1663, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1661
 *             tmp = c.BE_div_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1664
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1664, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1665
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":
 */
      __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1665, __pyx_L1_error)
      __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1665, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_18, __pyx_t_17);

      /* "include/generated/BinnedEstimate3D.pyx":1666
 *           elif self._config == "dsi":
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "dss":
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1666, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1664
 *             tmp = c.BE_div_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1667
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1667, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1668
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":
 */
      __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1668, __pyx_L1_error)
      __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1668, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_20, __pyx_t_19);

      /* "include/generated/BinnedEstimate3D.pyx":1669
 *           elif self._config == "dss":
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "idd":
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1669, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1667
 *             tmp = c.BE_div_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "dss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1670
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1670, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1671
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":
 */
      __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1671, __pyx_L1_error)
      __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1671, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_22, __pyx_t_21);

      /* "include/generated/BinnedEstimate3D.pyx":1672
 *           elif self._config == "idd":
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "idi":
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1670
 *             tmp = c.BE_div_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1673
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1673, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1674
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":
 */
      __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1674, __pyx_L1_error)
      __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1674, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_24, __pyx_t_23);

      /* "include/generated/BinnedEstimate3D.pyx":1675
 *           elif self._config == "idi":
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ids":
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1675, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1673
 *             tmp = c.BE_div_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "idi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1676
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1676, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1677
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":
 */
      __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1677, __pyx_L1_error)
      __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1677, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_26, __pyx_t_25);

      /* "include/generated/BinnedEstimate3D.pyx":1678
 *           elif self._config == "ids":
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iid":
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1678, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1676
 *             tmp = c.BE_div_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ids":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1679
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1679, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1680
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":
 */
      __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1680, __pyx_L1_error)
      __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1680, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_28, __pyx_t_27);

      /* "include/generated/BinnedEstimate3D.pyx":1681
 *           elif self._config == "iid":
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iii":
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1679
 *             tmp = c.BE_div_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1682
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1682, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1683
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":
 */
      __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1683, __pyx_L1_error)
      __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1683, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_30, __pyx_t_29);

      /* "include/generated/BinnedEstimate3D.pyx":1684
 *           elif self._config == "iii":
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iis":
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1684, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1682
 *             tmp = c.BE_div_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1685
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1685, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1686
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":
 */
      __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1686, __pyx_L1_error)
      __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1686, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_32, __pyx_t_31);

      /* "include/generated/BinnedEstimate3D.pyx":1687
 *           elif self._config == "iis":
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "isd":
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1687, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1685
 *             tmp = c.BE_div_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1688
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1688, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1689
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":
 */
      __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1689, __pyx_L1_error)
      __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1689, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_34, __pyx_t_33);

      /* "include/generated/BinnedEstimate3D.pyx":1690
 *           elif self._config == "isd":
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "isi":
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1690, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1688
 *             tmp = c.BE_div_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1691
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1691, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1692
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":
 */
      __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1692, __pyx_L1_error)
      __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1692, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_36, __pyx_t_35);

      /* "include/generated/BinnedEstimate3D.pyx":1693
 *           elif self._config == "isi":
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "iss":
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1691
 *             tmp = c.BE_div_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "isi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1694
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1694, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1695
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":
 */
      __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1695, __pyx_L1_error)
      __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1695, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_38, __pyx_t_37);

      /* "include/generated/BinnedEstimate3D.pyx":1696
 *           elif self._config == "iss":
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sdd":
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1696, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1694
 *             tmp = c.BE_div_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "iss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1697
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1697, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1698
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":
 */
      __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1698, __pyx_L1_error)
      __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1698, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_40, __pyx_t_39);

      /* "include/generated/BinnedEstimate3D.pyx":1699
 *           elif self._config == "sdd":
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sdi":
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1699, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1697
 *             tmp = c.BE_div_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1700
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1700, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1701
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":
 */
      __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1701, __pyx_L1_error)
      __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1701, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_42, __pyx_t_41);

      /* "include/generated/BinnedEstimate3D.pyx":1702
 *           elif self._config == "sdi":
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sds":
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1702, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1700
 *             tmp = c.BE_div_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1703
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1703, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1704
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":
 */
      __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1704, __pyx_L1_error)
      __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1704, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_44, __pyx_t_43);

      /* "include/generated/BinnedEstimate3D.pyx":1705
 *           elif self._config == "sds":
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sid":
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1705, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1703
 *             tmp = c.BE_div_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sds":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1706
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1706, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1707
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":
 */
      __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1707, __pyx_L1_error)
      __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1707, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_46, __pyx_t_45);

      /* "include/generated/BinnedEstimate3D.pyx":1708
 *           elif self._config == "sid":
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sii":
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1706
 *             tmp = c.BE_div_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sid":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1709
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1709, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1710
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":
 */
      __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1710, __pyx_L1_error)
      __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1710, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_48, __pyx_t_47);

      /* "include/generated/BinnedEstimate3D.pyx":1711
 *           elif self._config == "sii":
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sis":
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1711, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1709
 *             tmp = c.BE_div_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sii":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1712
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1712, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1713
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":
 */
      __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1713, __pyx_L1_error)
      __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1713, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_50, __pyx_t_49);

      /* "include/generated/BinnedEstimate3D.pyx":1714
 *           elif self._config == "sis":
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ssd":
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1712
 *             tmp = c.BE_div_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sis":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1715
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1715, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1716
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":
 */
      __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1716, __pyx_L1_error)
      __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1716, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_52, __pyx_t_51);

      /* "include/generated/BinnedEstimate3D.pyx":1717
 *           elif self._config == "ssd":
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ssi":
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1715
 *             tmp = c.BE_div_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1718
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1718, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1719
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":
 */
      __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1719, __pyx_L1_error)
      __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1719, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_54, __pyx_t_53);

      /* "include/generated/BinnedEstimate3D.pyx":1720
 *           elif self._config == "ssi":
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sss":
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1720, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1718
 *             tmp = c.BE_div_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedEstimate3D.pyx":1721
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1721, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedEstimate3D.pyx":1722
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1722, __pyx_L1_error)
      __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1722, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_56, __pyx_t_55);

      /* "include/generated/BinnedEstimate3D.pyx":1723
 *           elif self._config == "sss":
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1721
 *             tmp = c.BE_div_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *           elif self._config == "sss":             # <<<<<<<<<<<<<<
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":1724
 *             tmp = c.BE_div_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_57 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_57)) __PYX_ERR(18, 1724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_57);
  __pyx_t_58 = NULL;
  __pyx_t_59 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_57))) {
    __pyx_t_58 = PyMethod_GET_SELF(__pyx_t_57);
    if (likely(__pyx_t_58)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_57);
      __Pyx_INCREF(__pyx_t_58);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_57, function);
      __pyx_t_59 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_58, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_57, __pyx_callargs+1-__pyx_t_59, 1+__pyx_t_59);
    __Pyx_XDECREF(__pyx_t_58); __pyx_t_58 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_57); __pyx_t_57 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":1725
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":1552
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate3D self, BinnedEstimate3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate3D -> BinnedEstimate3D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_57);
  __Pyx_XDECREF(__pyx_t_58);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.divideBy", __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/generated/BinnedEstimate3D.pyx":1727
 *         return rtn
 * 
 *     def __div__(BinnedEstimate3D self, BinnedEstimate3D 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_16BinnedEstimate3D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_61__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 1727, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_60__div__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_60__div__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1728
 * 
 *     def __div__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedEstimate3D self, BinnedEstimate3D 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(18, 1728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(18, 1728, __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/generated/BinnedEstimate3D.pyx":1727
 *         return rtn
 * 
 *     def __div__(BinnedEstimate3D self, BinnedEstimate3D 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.BinnedEstimate3D.__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/generated/BinnedEstimate3D.pyx":1730
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_63__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 1730, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_62__truediv__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_62__truediv__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1731
 * 
 *     def __truediv__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(18, 1731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(18, 1731, __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/generated/BinnedEstimate3D.pyx":1730
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedEstimate3D self, BinnedEstimate3D 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.BinnedEstimate3D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1733
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_65_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_16BinnedEstimate3D_64_mknp, "BinnedEstimate3D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_65_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_64_mknp};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_65_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1733, __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(18, 1733, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 1733, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_64_mknp(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_64_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1734
 * 
 *     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/generated/BinnedEstimate3D.pyx":1735
 *     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(18, 1735, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedEstimate3D.pyx":1736
 *         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(18, 1736, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(18, 1736, __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/generated/BinnedEstimate3D.pyx":1734
 * 
 *     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/generated/BinnedEstimate3D.pyx":1737
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedEstimate3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(18, 1737, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedEstimate3D.pyx":1738
 *             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/generated/BinnedEstimate3D.pyx":1734
 * 
 *     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/generated/BinnedEstimate3D.pyx":1733
 *         return self.divideBy(other)
 * 
 *     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.BinnedEstimate3D._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/generated/BinnedEstimate3D.pyx":1741
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_66lengthContent, "BinnedEstimate3D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_67lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_66lengthContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_67lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1741, __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, "lengthContent") < 0)) __PYX_ERR(18, 1741, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 1741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_66lengthContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_66lengthContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1743
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1743, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1744
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1744, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1744, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1744, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1743
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1745
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1745, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1746
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1746, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1746, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1746, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1745
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1747
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1747, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1748
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1748, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1748, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1748, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1748, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1747
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthContent(fixed_length)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1749
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1750
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1750, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1750, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1750, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1749
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthContent(fixed_length)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1751
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1751, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1752
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1752, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1752, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1752, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1751
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthContent(fixed_length)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1753
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1753, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1754
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1754, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1754, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1754, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1753
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthContent(fixed_length)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1755
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1755, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1756
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1756, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1756, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1756, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1755
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthContent(fixed_length)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1757
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1757, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1758
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1758, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1758, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1758, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1757
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthContent(fixed_length)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1759
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1759, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1760
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1760, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1760, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1760, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1759
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthContent(fixed_length)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1761
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1761, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1762
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1762, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1762, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1762, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1761
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthContent(fixed_length)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1763
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1763, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1764
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1764, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1764, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1764, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1763
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthContent(fixed_length)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1765
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1765, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1766
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1766, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1766, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1766, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1765
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthContent(fixed_length)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1767
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1767, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1768
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1768, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1768, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1768, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1767
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthContent(fixed_length)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1769
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1769, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1770
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1770, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1770, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1770, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1769
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthContent(fixed_length)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1771
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1771, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1772
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1772, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1772, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1772, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1771
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthContent(fixed_length)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1773
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1773, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1774
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1774, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1774, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1774, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1773
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthContent(fixed_length)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1775
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1775, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1776
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1776, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1776, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1776, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1775
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthContent(fixed_length)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1777
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1778
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1778, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1778, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1778, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1777
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthContent(fixed_length)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1779
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1779, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1780
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1780, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1780, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1780, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1779
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthContent(fixed_length)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1781
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1781, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1782
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1782, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1782, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1782, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1781
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthContent(fixed_length)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1783
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1783, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1784
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1784, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1784, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1784, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1783
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthContent(fixed_length)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1785
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1785, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1786
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1786, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1786, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1786, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1785
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthContent(fixed_length)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1787
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1787, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1788
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1788, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1788, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1788, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1787
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthContent(fixed_length)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1789
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1789, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1790
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1790, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1790, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1790, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1789
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthContent(fixed_length)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1791
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1791, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1792
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1792, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1792, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1792, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1791
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthContent(fixed_length)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1793
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1793, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1794
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1794, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1794, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1794, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1793
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthContent(fixed_length)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1795
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1795, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1796
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1796, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1796, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1796, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1795
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthContent(fixed_length)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1797
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1797, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1741
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":1799
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_68serializeContent, "BinnedEstimate3D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_69serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_68serializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_69serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1799, __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, "serializeContent") < 0)) __PYX_ERR(18, 1799, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 1799, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_68serializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_68serializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  std::vector<double>  __pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  std::vector<double>  __pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  std::vector<double>  __pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  std::vector<double>  __pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  std::vector<double>  __pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  std::vector<double>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  std::vector<double>  __pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  std::vector<double>  __pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  std::vector<double>  __pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  std::vector<double>  __pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  std::vector<double>  __pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  std::vector<double>  __pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  std::vector<double>  __pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  std::vector<double>  __pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  std::vector<double>  __pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  std::vector<double>  __pyx_t_57;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1801
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1801, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1802
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1802, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1802, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1802, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1802, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1801
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1803
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1803, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1804
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1804, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1804, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1804, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1803
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1805
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1805, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1806
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1806, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1806, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1806, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1805
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeContent(fixed_length)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1807
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1807, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1808
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1808, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1808, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1808, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1807
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeContent(fixed_length)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1809
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1809, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1810
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1810, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1810, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1810, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1809
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeContent(fixed_length)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1811
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1811, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1812
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1812, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1812, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1812, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1811
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeContent(fixed_length)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1813
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1813, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1814
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1814, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1814, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1814, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1814, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1813
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeContent(fixed_length)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1815
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1815, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1816
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1816, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1816, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1816, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1815
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeContent(fixed_length)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1817
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1817, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1818
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1818, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1818, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1818, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1818, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1817
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeContent(fixed_length)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1819
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1819, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1820
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1820, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1820, __pyx_L1_error)
    try {
      __pyx_t_23 = __pyx_t_22->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1820, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1820, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1819
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeContent(fixed_length)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1821
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1821, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1822
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1822, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1822, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_24->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1822, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1821
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeContent(fixed_length)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1823
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1823, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1824
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1824, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1824, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1824, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1824, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1823
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeContent(fixed_length)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1825
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1825, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1826
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1826, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1826, __pyx_L1_error)
    try {
      __pyx_t_29 = __pyx_t_28->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1826, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1825
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeContent(fixed_length)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1827
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1827, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1828
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1828, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1828, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_30->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1828, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_31); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1827
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeContent(fixed_length)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1829
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1829, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1830
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1830, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1830, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1830, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_33); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1830, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1829
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeContent(fixed_length)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1831
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1831, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1832
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1832, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1832, __pyx_L1_error)
    try {
      __pyx_t_35 = __pyx_t_34->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1832, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_35); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1831
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeContent(fixed_length)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1833
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1833, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1834
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1834, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1834, __pyx_L1_error)
    try {
      __pyx_t_37 = __pyx_t_36->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1834, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_37); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1834, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1833
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeContent(fixed_length)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1835
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1835, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1836
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1836, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1836, __pyx_L1_error)
    try {
      __pyx_t_39 = __pyx_t_38->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1836, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_39); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1836, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1835
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeContent(fixed_length)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1837
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1837, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1838
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1838, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1838, __pyx_L1_error)
    try {
      __pyx_t_41 = __pyx_t_40->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1838, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_41); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1837
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeContent(fixed_length)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1839
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1839, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1840
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1840, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1840, __pyx_L1_error)
    try {
      __pyx_t_43 = __pyx_t_42->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1840, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_43); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1840, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1839
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeContent(fixed_length)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1841
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1841, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1842
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1842, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1842, __pyx_L1_error)
    try {
      __pyx_t_45 = __pyx_t_44->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1842, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_45); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1842, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1841
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeContent(fixed_length)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1843
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1843, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1844
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1844, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1844, __pyx_L1_error)
    try {
      __pyx_t_47 = __pyx_t_46->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1844, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_47); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1843
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeContent(fixed_length)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1845
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1845, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1846
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1846, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1846, __pyx_L1_error)
    try {
      __pyx_t_49 = __pyx_t_48->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1846, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_49); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1846, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1845
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeContent(fixed_length)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1847
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1847, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1848
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1848, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1848, __pyx_L1_error)
    try {
      __pyx_t_51 = __pyx_t_50->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1848, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_51); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1847
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeContent(fixed_length)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1849
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1849, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1850
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1850, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1850, __pyx_L1_error)
    try {
      __pyx_t_53 = __pyx_t_52->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1850, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_53); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1850, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1849
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeContent(fixed_length)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1851
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1851, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1852
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1852, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1852, __pyx_L1_error)
    try {
      __pyx_t_55 = __pyx_t_54->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1852, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_55); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1852, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1851
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeContent(fixed_length)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1853
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1853, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1854
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1854, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1854, __pyx_L1_error)
    try {
      __pyx_t_57 = __pyx_t_56->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1854, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_57); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1854, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1853
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeContent(fixed_length)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1855
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1855, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1799
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":1857
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_70deserializeContent, "BinnedEstimate3D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_71deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_70deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_71deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1857, __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, "deserializeContent") < 0)) __PYX_ERR(18, 1857, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 1857, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_70deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_70deserializeContent(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_26;
  std::vector<double>  __pyx_t_27;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_28;
  std::vector<double>  __pyx_t_29;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_30;
  std::vector<double>  __pyx_t_31;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_32;
  std::vector<double>  __pyx_t_33;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_34;
  std::vector<double>  __pyx_t_35;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_36;
  std::vector<double>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_38;
  std::vector<double>  __pyx_t_39;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_40;
  std::vector<double>  __pyx_t_41;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_42;
  std::vector<double>  __pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_44;
  std::vector<double>  __pyx_t_45;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_46;
  std::vector<double>  __pyx_t_47;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_48;
  std::vector<double>  __pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_50;
  std::vector<double>  __pyx_t_51;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_52;
  std::vector<double>  __pyx_t_53;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_54;
  std::vector<double>  __pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_56;
  std::vector<double>  __pyx_t_57;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_58;
  std::vector<double>  __pyx_t_59;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_60;
  std::vector<double>  __pyx_t_61;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1860
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1860, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1860, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1860, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(18, 1860, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1860, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 1860, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(18, 1860, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1860, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(18, 1860, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 1860, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(18, 1860, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1860, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate3D.pyx":1861
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         if self._config == "ddi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1861, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1862
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1862, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1862, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1862, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1862, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1861
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1863
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().deserializeContent(data)
 *         if self._config == "dds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1863, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1864
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1864, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1864, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1864, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1864, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1863
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().deserializeContent(data)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1865
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeContent(data)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().deserializeContent(data)
 *         if self._config == "did":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1865, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1866
 *           return self.binned_ddi_ptr().deserializeContent(data)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1866, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1866, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1866, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1865
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeContent(data)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().deserializeContent(data)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1867
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeContent(data)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().deserializeContent(data)
 *         if self._config == "dii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1867, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1868
 *           return self.binned_dds_ptr().deserializeContent(data)
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1868, __pyx_L1_error)
    __pyx_t_15 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1868, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeContent(__pyx_t_15);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1868, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1867
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeContent(data)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().deserializeContent(data)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1869
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeContent(data)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().deserializeContent(data)
 *         if self._config == "dis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1869, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1870
 *           return self.binned_did_ptr().deserializeContent(data)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1870, __pyx_L1_error)
    __pyx_t_17 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1870, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeContent(__pyx_t_17);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1870, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1869
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeContent(data)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().deserializeContent(data)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1871
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeContent(data)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().deserializeContent(data)
 *         if self._config == "dsd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1871, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1872
 *           return self.binned_dii_ptr().deserializeContent(data)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1872, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1872, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeContent(__pyx_t_19);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1872, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1871
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeContent(data)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().deserializeContent(data)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1873
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeContent(data)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().deserializeContent(data)
 *         if self._config == "dsi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1873, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1874
 *           return self.binned_dis_ptr().deserializeContent(data)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1874, __pyx_L1_error)
    __pyx_t_21 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1874, __pyx_L1_error)
    try {
      __pyx_t_20->deserializeContent(__pyx_t_21);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1874, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1873
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeContent(data)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().deserializeContent(data)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1875
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeContent(data)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().deserializeContent(data)
 *         if self._config == "dss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1875, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1876
 *           return self.binned_dsd_ptr().deserializeContent(data)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1876, __pyx_L1_error)
    __pyx_t_23 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1876, __pyx_L1_error)
    try {
      __pyx_t_22->deserializeContent(__pyx_t_23);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1876, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1875
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeContent(data)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().deserializeContent(data)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1877
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeContent(data)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().deserializeContent(data)
 *         if self._config == "idd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1877, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1878
 *           return self.binned_dsi_ptr().deserializeContent(data)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1878, __pyx_L1_error)
    __pyx_t_25 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1878, __pyx_L1_error)
    try {
      __pyx_t_24->deserializeContent(__pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1878, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1877
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeContent(data)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().deserializeContent(data)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1879
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeContent(data)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().deserializeContent(data)
 *         if self._config == "idi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1879, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1880
 *           return self.binned_dss_ptr().deserializeContent(data)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1880, __pyx_L1_error)
    __pyx_t_27 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1880, __pyx_L1_error)
    try {
      __pyx_t_26->deserializeContent(__pyx_t_27);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1880, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1879
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeContent(data)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().deserializeContent(data)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1881
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeContent(data)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().deserializeContent(data)
 *         if self._config == "ids":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1881, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1882
 *           return self.binned_idd_ptr().deserializeContent(data)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1882, __pyx_L1_error)
    __pyx_t_29 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1882, __pyx_L1_error)
    try {
      __pyx_t_28->deserializeContent(__pyx_t_29);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1882, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1881
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeContent(data)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().deserializeContent(data)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1883
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeContent(data)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().deserializeContent(data)
 *         if self._config == "iid":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1883, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1884
 *           return self.binned_idi_ptr().deserializeContent(data)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1884, __pyx_L1_error)
    __pyx_t_31 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1884, __pyx_L1_error)
    try {
      __pyx_t_30->deserializeContent(__pyx_t_31);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1884, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1883
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeContent(data)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().deserializeContent(data)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1885
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeContent(data)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().deserializeContent(data)
 *         if self._config == "iii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1885, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1886
 *           return self.binned_ids_ptr().deserializeContent(data)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1886, __pyx_L1_error)
    __pyx_t_33 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1886, __pyx_L1_error)
    try {
      __pyx_t_32->deserializeContent(__pyx_t_33);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1886, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1885
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeContent(data)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().deserializeContent(data)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1887
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeContent(data)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().deserializeContent(data)
 *         if self._config == "iis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1887, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1888
 *           return self.binned_iid_ptr().deserializeContent(data)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1888, __pyx_L1_error)
    __pyx_t_35 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1888, __pyx_L1_error)
    try {
      __pyx_t_34->deserializeContent(__pyx_t_35);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1888, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1887
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeContent(data)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().deserializeContent(data)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1889
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeContent(data)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().deserializeContent(data)
 *         if self._config == "isd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1889, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1890
 *           return self.binned_iii_ptr().deserializeContent(data)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1890, __pyx_L1_error)
    __pyx_t_37 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1890, __pyx_L1_error)
    try {
      __pyx_t_36->deserializeContent(__pyx_t_37);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1890, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1889
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeContent(data)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().deserializeContent(data)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1891
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeContent(data)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().deserializeContent(data)
 *         if self._config == "isi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1891, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1892
 *           return self.binned_iis_ptr().deserializeContent(data)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1892, __pyx_L1_error)
    __pyx_t_39 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1892, __pyx_L1_error)
    try {
      __pyx_t_38->deserializeContent(__pyx_t_39);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1892, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1891
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeContent(data)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().deserializeContent(data)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1893
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeContent(data)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().deserializeContent(data)
 *         if self._config == "iss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1893, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1894
 *           return self.binned_isd_ptr().deserializeContent(data)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1894, __pyx_L1_error)
    __pyx_t_41 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1894, __pyx_L1_error)
    try {
      __pyx_t_40->deserializeContent(__pyx_t_41);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1894, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1893
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeContent(data)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().deserializeContent(data)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1895
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeContent(data)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().deserializeContent(data)
 *         if self._config == "sdd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1895, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1896
 *           return self.binned_isi_ptr().deserializeContent(data)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1896, __pyx_L1_error)
    __pyx_t_43 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1896, __pyx_L1_error)
    try {
      __pyx_t_42->deserializeContent(__pyx_t_43);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1896, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1895
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeContent(data)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().deserializeContent(data)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1897
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeContent(data)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().deserializeContent(data)
 *         if self._config == "sdi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1897, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1898
 *           return self.binned_iss_ptr().deserializeContent(data)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1898, __pyx_L1_error)
    __pyx_t_45 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1898, __pyx_L1_error)
    try {
      __pyx_t_44->deserializeContent(__pyx_t_45);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1898, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1897
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeContent(data)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().deserializeContent(data)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1899
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeContent(data)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().deserializeContent(data)
 *         if self._config == "sds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1899, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1900
 *           return self.binned_sdd_ptr().deserializeContent(data)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1900, __pyx_L1_error)
    __pyx_t_47 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1900, __pyx_L1_error)
    try {
      __pyx_t_46->deserializeContent(__pyx_t_47);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1900, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1899
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeContent(data)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().deserializeContent(data)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1901
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeContent(data)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().deserializeContent(data)
 *         if self._config == "sid":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1901, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1902
 *           return self.binned_sdi_ptr().deserializeContent(data)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1902, __pyx_L1_error)
    __pyx_t_49 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1902, __pyx_L1_error)
    try {
      __pyx_t_48->deserializeContent(__pyx_t_49);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1902, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1901
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeContent(data)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().deserializeContent(data)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1903
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeContent(data)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().deserializeContent(data)
 *         if self._config == "sii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1903, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1904
 *           return self.binned_sds_ptr().deserializeContent(data)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1904, __pyx_L1_error)
    __pyx_t_51 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1904, __pyx_L1_error)
    try {
      __pyx_t_50->deserializeContent(__pyx_t_51);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1904, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1903
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeContent(data)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().deserializeContent(data)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1905
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeContent(data)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().deserializeContent(data)
 *         if self._config == "sis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1905, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1906
 *           return self.binned_sid_ptr().deserializeContent(data)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1906, __pyx_L1_error)
    __pyx_t_53 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1906, __pyx_L1_error)
    try {
      __pyx_t_52->deserializeContent(__pyx_t_53);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1906, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1905
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeContent(data)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().deserializeContent(data)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1907
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeContent(data)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().deserializeContent(data)
 *         if self._config == "ssd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1907, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1908
 *           return self.binned_sii_ptr().deserializeContent(data)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1908, __pyx_L1_error)
    __pyx_t_55 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1908, __pyx_L1_error)
    try {
      __pyx_t_54->deserializeContent(__pyx_t_55);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1908, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1907
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeContent(data)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().deserializeContent(data)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1909
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeContent(data)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().deserializeContent(data)
 *         if self._config == "ssi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1909, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1910
 *           return self.binned_sis_ptr().deserializeContent(data)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1910, __pyx_L1_error)
    __pyx_t_57 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1910, __pyx_L1_error)
    try {
      __pyx_t_56->deserializeContent(__pyx_t_57);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1910, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1909
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeContent(data)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().deserializeContent(data)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1911
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeContent(data)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().deserializeContent(data)
 *         if self._config == "sss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1911, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1912
 *           return self.binned_ssd_ptr().deserializeContent(data)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_58 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_58 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1912, __pyx_L1_error)
    __pyx_t_59 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1912, __pyx_L1_error)
    try {
      __pyx_t_58->deserializeContent(__pyx_t_59);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1912, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1911
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeContent(data)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().deserializeContent(data)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1913
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeContent(data)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 1913, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":1914
 *           return self.binned_ssi_ptr().deserializeContent(data)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_60 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_60 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1914, __pyx_L1_error)
    __pyx_t_61 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1914, __pyx_L1_error)
    try {
      __pyx_t_60->deserializeContent(__pyx_t_61);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1914, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1913
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeContent(data)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1915
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1915, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1857
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1917
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_72lengthMeta, "BinnedEstimate3D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_73lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_72lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_73lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1917, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1917, __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, "lengthMeta") < 0)) __PYX_ERR(18, 1917, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(18, 1917, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_72lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_72lengthMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_32;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1919
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1919, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1920
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1920, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1920, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1920, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1920, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1920, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1919
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1921
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1921, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1922
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1922, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1922, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1922, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1922, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1922, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1921
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1923
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1923, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1924
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1924, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1924, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1924, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1924, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1923
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1925
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1925, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1926
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1926, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1926, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1926, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1926, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1925
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1927
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1927, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1928
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1928, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1928, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1928, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1928, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1927
 *         if self._config == "did":
 *           return self.binned_did_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1929
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1929, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1930
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1930, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1930, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1930, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1930, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1929
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1931
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1931, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1932
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1932, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1932, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1932, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1932, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1932, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1931
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1933
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1933, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1934
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1934, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1934, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1934, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1934, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1933
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1935
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1935, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1936
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1936, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1936, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1936, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1936, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1935
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1937
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1937, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1938
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1938, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1938, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1938, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_15->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1938, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1937
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1939
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1939, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1940
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1940, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1940, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1940, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_16->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1940, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1939
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1941
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1941, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1942
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 1942, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1942, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1942, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_17->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1942, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1941
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1943
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1943, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1944
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 1944, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1944, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1944, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_18->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1944, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1943
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1945
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1945, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1946
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 1946, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1946, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1946, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_19->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1946, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1945
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1947
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1947, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1948
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 1948, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1948, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1948, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_20->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1948, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1947
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1949
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1949, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1950
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 1950, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1950, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1950, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_21->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1950, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1949
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1951
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1951, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1952
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 1952, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1952, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1952, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_22->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1952, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1951
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1953
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1953, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1954
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1954, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1954, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1954, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_23->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1954, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1953
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1955
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1955, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1956
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 1956, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1956, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1956, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_24->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1956, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1955
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1957
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1957, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1958
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 1958, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1958, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1958, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_25->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1958, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1957
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1959
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1959, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1960
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 1960, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1960, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1960, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_26->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1960, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1959
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1961
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1961, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1962
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 1962, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1962, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1962, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_27->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1962, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1961
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1963
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1963, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1964
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 1964, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1964, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1964, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_28->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1964, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1963
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1965
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1965, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1966
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 1966, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1966, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1966, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_29->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1966, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1966, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1965
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1967
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1967, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1968
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 1968, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1968, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1968, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_30->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1968, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1967
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1969
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1969, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1970
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 1970, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1970, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1970, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_31->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1970, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1969
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1971
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1971, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1972
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1972, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1972, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1972, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_32->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1972, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1971
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1973
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 1973, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1917
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":1975
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_74serializeMeta, "BinnedEstimate3D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_75serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_74serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_75serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1975, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 1975, __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, "serializeMeta") < 0)) __PYX_ERR(18, 1975, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(18, 1975, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_74serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_74serializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_21;
  std::vector<std::string>  __pyx_t_22;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_23;
  std::vector<std::string>  __pyx_t_24;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_25;
  std::vector<std::string>  __pyx_t_26;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_27;
  std::vector<std::string>  __pyx_t_28;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_29;
  std::vector<std::string>  __pyx_t_30;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_31;
  std::vector<std::string>  __pyx_t_32;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_33;
  std::vector<std::string>  __pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_35;
  std::vector<std::string>  __pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_37;
  std::vector<std::string>  __pyx_t_38;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_39;
  std::vector<std::string>  __pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_41;
  std::vector<std::string>  __pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_43;
  std::vector<std::string>  __pyx_t_44;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_45;
  std::vector<std::string>  __pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_47;
  std::vector<std::string>  __pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_49;
  std::vector<std::string>  __pyx_t_50;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_51;
  std::vector<std::string>  __pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_53;
  std::vector<std::string>  __pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_55;
  std::vector<std::string>  __pyx_t_56;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_57;
  std::vector<std::string>  __pyx_t_58;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedEstimate3D.pyx":1977
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1977, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1978
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 1978, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1978, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1978, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1978, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1977
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1979
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1979, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1980
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 1980, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1980, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1980, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1980, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1979
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1981
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1981, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1982
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 1982, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1982, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1982, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1982, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1981
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1983
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1983, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1984
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 1984, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1984, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1984, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1984, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1984, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1983
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1985
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1985, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1986
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 1986, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1986, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1986, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1986, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1986, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1985
 *         if self._config == "did":
 *           return self.binned_did_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1987
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1987, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1988
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 1988, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1988, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1988, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1988, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1987
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1989
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1989, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1990
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 1990, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1990, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1990, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1990, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1989
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1991
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1991, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1992
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 1992, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1992, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1992, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1992, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1992, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1991
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1993
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1993, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1994
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 1994, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1994, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1994, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1994, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_22); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1994, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1993
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1995
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1995, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1996
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 1996, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1996, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1996, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1996, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_24); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1995
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1997
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1997, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":1998
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 1998, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1998, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1998, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 1998, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1997
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":1999
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 1999, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2000
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2000, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2000, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2000, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2000, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_28); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2000, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":1999
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2001
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2001, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2002
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2002, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2002, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2002, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2002, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_30); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2001
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2003
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2003, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2004
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2004, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2004, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2004, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2004, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_32); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2003
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2005
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2005, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2006
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2006, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2006, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2006, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2006, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_34); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2005
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2007
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2007, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2008
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2008, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2008, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2008, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2008, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_36); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2008, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2007
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2009
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2009, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2010
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2010, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2010, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2010, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2010, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_38); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2009
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2011
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2011, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2012
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2012, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2012, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2012, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2012, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_40); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2012, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2011
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2013
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2013, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2014
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2014, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2014, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2014, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2014, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_42); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2013
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2015
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2015, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2016
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2016, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2016, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2016, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2016, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_44); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2015
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2017
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2017, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2018
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2018, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2018, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2018, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2018, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_46); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2017
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2019
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2019, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2020
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2020, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2020, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2020, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2020, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_48); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2019
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2021
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2021, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2022
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2022, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2022, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2022, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2022, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_50); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2021
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2023
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2023, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2024
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2024, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2024, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2024, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2024, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_52); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2023
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2025
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2025, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2026
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2026, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2026, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2026, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2026, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_54); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2025
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2027
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2027, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2028
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2028, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2028, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2028, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2028, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_56); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2027
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2029
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2029, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2030
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_57 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_57 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2030, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2030, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2030, __pyx_L1_error)
    try {
      __pyx_t_58 = __pyx_t_57->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2030, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_58); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2030, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2029
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2031
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2031, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1975
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2033
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_76deserializeMeta, "BinnedEstimate3D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_77deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_76deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_77deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2033, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2033, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2033, __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, "deserializeMeta") < 0)) __PYX_ERR(18, 2033, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(18, 2033, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_76deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_76deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_33;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_36;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2036
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2036, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 2036, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(18, 2036, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2036, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 2036, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(18, 2036, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2036, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(18, 2036, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(18, 2036, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedEstimate3D.pyx":2037
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ddi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2037, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2038
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2038, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2038, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2038, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2038, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2037
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2039
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2039, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2040
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2040, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2040, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2040, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2040, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2040, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2039
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2041
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "did":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2041, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2042
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2042, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2042, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2042, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2042, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2041
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2043
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2043, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2044
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2044, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2044, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2044, __pyx_L1_error)
    try {
      __pyx_t_13->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2044, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2043
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2045
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2045, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2046
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2046, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2046, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2046, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2046, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2045
 *         if self._config == "did":
 *           return self.binned_did_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2047
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2047, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2048
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2048, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2048, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2048, __pyx_L1_error)
    try {
      __pyx_t_15->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2048, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2048, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2047
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2049
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2049, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2050
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2050, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2050, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2050, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2050, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2049
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2051
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2051, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2052
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2052, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2052, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2052, __pyx_L1_error)
    try {
      __pyx_t_17->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2052, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2051
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2053
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2053, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2054
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2054, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2054, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2054, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2054, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2053
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2055
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2055, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2056
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2056, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2056, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2056, __pyx_L1_error)
    try {
      __pyx_t_19->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2056, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2055
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2057
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ids":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2057, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2058
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2058, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2058, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2058, __pyx_L1_error)
    try {
      __pyx_t_20->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2058, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2057
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2059
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iid":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2059, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2060
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2060, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2060, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2060, __pyx_L1_error)
    try {
      __pyx_t_21->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2060, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2059
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2061
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2061, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2062
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2062, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2062, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2062, __pyx_L1_error)
    try {
      __pyx_t_22->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2062, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2062, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2061
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2063
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2063, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2064
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2064, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2064, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2064, __pyx_L1_error)
    try {
      __pyx_t_23->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2064, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2063
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2065
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2065, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2066
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2066, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2066, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2066, __pyx_L1_error)
    try {
      __pyx_t_24->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2066, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2066, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2065
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2067
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2067, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2068
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2068, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2068, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2068, __pyx_L1_error)
    try {
      __pyx_t_25->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2068, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2067
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2069
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2069, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2070
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2070, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2070, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2070, __pyx_L1_error)
    try {
      __pyx_t_26->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2070, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2070, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2069
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2071
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2071, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2072
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2072, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2072, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2072, __pyx_L1_error)
    try {
      __pyx_t_27->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2072, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2071
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2073
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2073, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2074
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2074, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2074, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2074, __pyx_L1_error)
    try {
      __pyx_t_28->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2074, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2073
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2075
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2075, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2076
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2076, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2076, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2076, __pyx_L1_error)
    try {
      __pyx_t_29->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2076, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2076, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2075
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2077
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sid":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2077, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2078
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2078, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2078, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2078, __pyx_L1_error)
    try {
      __pyx_t_30->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2078, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2077
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2079
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2079, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2080
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2080, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2080, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2080, __pyx_L1_error)
    try {
      __pyx_t_31->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2080, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2079
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2081
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sis":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2081, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2082
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2082, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2082, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2082, __pyx_L1_error)
    try {
      __pyx_t_32->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2082, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2081
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2083
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2083, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2084
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2084, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2084, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2084, __pyx_L1_error)
    try {
      __pyx_t_33->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2084, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2084, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2083
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2085
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssi":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2085, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2086
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2086, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2086, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2086, __pyx_L1_error)
    try {
      __pyx_t_34->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2086, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2086, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2085
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2087
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2087, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2088
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2088, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2088, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2088, __pyx_L1_error)
    try {
      __pyx_t_35->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2088, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2087
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2089
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(18, 2089, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedEstimate3D.pyx":2090
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2090, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2090, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2090, __pyx_L1_error)
    try {
      __pyx_t_36->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2090, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 2090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2089
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2091
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2091, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2033
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2094
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_78vals, "BinnedEstimate3D.vals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_79vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_78vals};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_79vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("vals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "vals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_78vals(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_78vals(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  unsigned 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("vals", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2095
 * 
 *     def vals(self):
 *         return self._mknp([b.val() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=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(18, 2095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2095, __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(18, 2095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(18, 2095, __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(18, 2095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 2095, __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))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 2095, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(18, 2095, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2095, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(18, 2095, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) 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(18, 2095, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2095, __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(18, 2095, __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_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
      __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(18, 2095, __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(18, 2095, __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
  if (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;
    }
  }
  #endif
  {
    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(18, 2095, __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/generated/BinnedEstimate3D.pyx":2094
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() 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.BinnedEstimate3D.vals", __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/generated/BinnedEstimate3D.pyx":2097
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_80auc, "BinnedEstimate3D.auc(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_81auc = {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_80auc};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_81auc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2097, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2097, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2097, __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, "auc") < 0)) __PYX_ERR(18, 2097, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("auc", 0, 0, 3, __pyx_nargs); __PYX_ERR(18, 2097, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_80auc(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_80auc(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auc", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2098
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_areaUnderCurve); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins};
    __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(18, 2098, __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/generated/BinnedEstimate3D.pyx":2097
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */

  /* 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.BinnedEstimate3D.auc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2101
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_82scale, "BinnedEstimate3D.scale(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_83scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_82scale};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_83scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2101, __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, "scale") < 0)) __PYX_ERR(18, 2101, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 2101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_82scale(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_82scale(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_12;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2102
 * 
 *     def scale(self, factor):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().scale(factor)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2102, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2103
 *     def scale(self, factor):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2103, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2103, __pyx_L1_error)
    try {
      __pyx_t_2->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2103, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2102
 * 
 *     def scale(self, factor):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().scale(factor)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2104
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().scale(factor)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2105
 *           return self.binned_ddd_ptr().scale(factor)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2105, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2105, __pyx_L1_error)
    try {
      __pyx_t_5->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2105, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2104
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().scale(factor)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2106
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().scale(factor)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().scale(factor)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2106, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2107
 *           return self.binned_ddi_ptr().scale(factor)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2107, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2107, __pyx_L1_error)
    try {
      __pyx_t_6->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2107, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2106
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().scale(factor)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().scale(factor)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2108
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().scale(factor)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().scale(factor)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2108, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2109
 *           return self.binned_dds_ptr().scale(factor)
 *         if self._config == "did":
 *           return self.binned_did_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2109, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2109, __pyx_L1_error)
    try {
      __pyx_t_7->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2109, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2108
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().scale(factor)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().scale(factor)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2110
 *         if self._config == "did":
 *           return self.binned_did_ptr().scale(factor)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().scale(factor)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2110, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2111
 *           return self.binned_did_ptr().scale(factor)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2111, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2111, __pyx_L1_error)
    try {
      __pyx_t_8->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2111, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2110
 *         if self._config == "did":
 *           return self.binned_did_ptr().scale(factor)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().scale(factor)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2112
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().scale(factor)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().scale(factor)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2112, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2113
 *           return self.binned_dii_ptr().scale(factor)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2113, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2113, __pyx_L1_error)
    try {
      __pyx_t_9->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2113, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2112
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().scale(factor)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().scale(factor)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2114
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().scale(factor)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().scale(factor)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2114, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2115
 *           return self.binned_dis_ptr().scale(factor)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2115, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2115, __pyx_L1_error)
    try {
      __pyx_t_10->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2115, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2114
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().scale(factor)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().scale(factor)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2116
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().scale(factor)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().scale(factor)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2116, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2117
 *           return self.binned_dsd_ptr().scale(factor)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2117, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2117, __pyx_L1_error)
    try {
      __pyx_t_11->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2117, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2116
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().scale(factor)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().scale(factor)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2118
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().scale(factor)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().scale(factor)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2118, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2119
 *           return self.binned_dsi_ptr().scale(factor)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2119, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2119, __pyx_L1_error)
    try {
      __pyx_t_12->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2119, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2118
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().scale(factor)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().scale(factor)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2120
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().scale(factor)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().scale(factor)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2120, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2121
 *           return self.binned_dss_ptr().scale(factor)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2121, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2121, __pyx_L1_error)
    try {
      __pyx_t_13->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2121, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2120
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().scale(factor)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().scale(factor)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2122
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().scale(factor)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().scale(factor)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2122, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2123
 *           return self.binned_idd_ptr().scale(factor)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2123, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2123, __pyx_L1_error)
    try {
      __pyx_t_14->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2123, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2122
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().scale(factor)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().scale(factor)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2124
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().scale(factor)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().scale(factor)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2124, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2125
 *           return self.binned_idi_ptr().scale(factor)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2125, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2125, __pyx_L1_error)
    try {
      __pyx_t_15->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2125, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2124
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().scale(factor)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().scale(factor)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2126
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().scale(factor)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().scale(factor)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2126, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2127
 *           return self.binned_ids_ptr().scale(factor)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2127, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2127, __pyx_L1_error)
    try {
      __pyx_t_16->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2127, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2126
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().scale(factor)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().scale(factor)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2128
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().scale(factor)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().scale(factor)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2128, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2129
 *           return self.binned_iid_ptr().scale(factor)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2129, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2129, __pyx_L1_error)
    try {
      __pyx_t_17->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2129, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2128
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().scale(factor)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().scale(factor)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2130
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().scale(factor)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().scale(factor)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2130, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2131
 *           return self.binned_iii_ptr().scale(factor)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2131, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2131, __pyx_L1_error)
    try {
      __pyx_t_18->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2131, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2130
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().scale(factor)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().scale(factor)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2132
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().scale(factor)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().scale(factor)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2132, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2133
 *           return self.binned_iis_ptr().scale(factor)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2133, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2133, __pyx_L1_error)
    try {
      __pyx_t_19->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2133, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2132
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().scale(factor)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().scale(factor)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2134
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().scale(factor)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().scale(factor)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2134, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2135
 *           return self.binned_isd_ptr().scale(factor)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2135, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2135, __pyx_L1_error)
    try {
      __pyx_t_20->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2135, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2134
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().scale(factor)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().scale(factor)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2136
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().scale(factor)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().scale(factor)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2137
 *           return self.binned_isi_ptr().scale(factor)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2137, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2137, __pyx_L1_error)
    try {
      __pyx_t_21->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2137, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2136
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().scale(factor)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().scale(factor)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2138
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().scale(factor)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().scale(factor)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2139
 *           return self.binned_iss_ptr().scale(factor)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2139, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2139, __pyx_L1_error)
    try {
      __pyx_t_22->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2139, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2138
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().scale(factor)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().scale(factor)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2140
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().scale(factor)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().scale(factor)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2141
 *           return self.binned_sdd_ptr().scale(factor)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2141, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2141, __pyx_L1_error)
    try {
      __pyx_t_23->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2141, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2140
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().scale(factor)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().scale(factor)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2142
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().scale(factor)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().scale(factor)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2143
 *           return self.binned_sdi_ptr().scale(factor)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2143, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2143, __pyx_L1_error)
    try {
      __pyx_t_24->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2143, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2142
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().scale(factor)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().scale(factor)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2144
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().scale(factor)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().scale(factor)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2145
 *           return self.binned_sds_ptr().scale(factor)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2145, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2145, __pyx_L1_error)
    try {
      __pyx_t_25->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2145, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2144
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().scale(factor)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().scale(factor)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2146
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().scale(factor)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().scale(factor)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2146, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2147
 *           return self.binned_sid_ptr().scale(factor)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2147, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2147, __pyx_L1_error)
    try {
      __pyx_t_26->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2147, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2146
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().scale(factor)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().scale(factor)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2148
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().scale(factor)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().scale(factor)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2149
 *           return self.binned_sii_ptr().scale(factor)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2149, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2149, __pyx_L1_error)
    try {
      __pyx_t_27->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2149, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2148
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().scale(factor)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().scale(factor)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2150
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().scale(factor)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().scale(factor)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2151
 *           return self.binned_sis_ptr().scale(factor)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2151, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2151, __pyx_L1_error)
    try {
      __pyx_t_28->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2151, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2150
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().scale(factor)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().scale(factor)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2152
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().scale(factor)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().scale(factor)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2152, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2153
 *           return self.binned_ssd_ptr().scale(factor)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().scale(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2153, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2153, __pyx_L1_error)
    try {
      __pyx_t_29->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2153, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2152
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().scale(factor)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().scale(factor)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2154
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().scale(factor)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2154, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2155
 *           return self.binned_ssi_ptr().scale(factor)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().scale(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2155, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2155, __pyx_L1_error)
    try {
      __pyx_t_30->scale(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2155, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2154
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().scale(factor)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2156
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().scale(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def indexAt(self, x, y, z):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2156, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2101
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 */

  /* 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.BinnedEstimate3D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2158
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_84indexAt, "BinnedEstimate3D.indexAt(self, x, y, z)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_85indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_84indexAt};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2158, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2158, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, 1); __PYX_ERR(18, 2158, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2158, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, 2); __PYX_ERR(18, 2158, __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, "indexAt") < 0)) __PYX_ERR(18, 2158, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, __pyx_nargs); __PYX_ERR(18, 2158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_84indexAt(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_8;
  int __pyx_t_9;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_10;
  std::string __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_13;
  int __pyx_t_14;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_18;
  std::string __pyx_t_19;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_24;
  int __pyx_t_25;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_34;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_35;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_36;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_37;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_38;
  std::string __pyx_t_39;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2159
 * 
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2159, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2160
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2160, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2160, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2160, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2160, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_2->indexAt(__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(18, 2160, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2159
 * 
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2161
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2161, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2162
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2162, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2162, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2162, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2162, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_8->indexAt(__pyx_t_5, __pyx_t_4, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2162, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2161
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2163
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2163, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2164
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2164, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2164, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2164, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2164, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_10->indexAt(__pyx_t_4, __pyx_t_5, __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(18, 2164, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2163
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().indexAt(x, y, z)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2165
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().indexAt(x, y, z)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2165, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2166
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 *         if self._config == "did":
 *           return self.binned_did_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2166, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2166, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2166, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2166, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_12->indexAt(__pyx_t_5, __pyx_t_9, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2166, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2165
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().indexAt(x, y, z)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().indexAt(x, y, z)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2167
 *         if self._config == "did":
 *           return self.binned_did_ptr().indexAt(x, y, z)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2167, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2168
 *           return self.binned_did_ptr().indexAt(x, y, z)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2168, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2168, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2168, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2168, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_13->indexAt(__pyx_t_4, __pyx_t_9, __pyx_t_14);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2168, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2167
 *         if self._config == "did":
 *           return self.binned_did_ptr().indexAt(x, y, z)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2169
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2169, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2170
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2170, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2170, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2170, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2170, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_15->indexAt(__pyx_t_4, __pyx_t_14, __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(18, 2170, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2169
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().indexAt(x, y, z)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2171
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2171, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2172
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2172, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2172, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2172, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2172, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_16->indexAt(__pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2172, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2171
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().indexAt(x, y, z)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2173
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2173, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2174
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2174, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2174, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2174, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2174, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_17->indexAt(__pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_14);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2174, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2173
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().indexAt(x, y, z)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2175
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2175, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2176
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2176, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2176, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2176, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2176, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_18->indexAt(__pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2176, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2175
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().indexAt(x, y, z)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2177
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2177, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2178
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2178, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2178, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2178, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2178, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_20->indexAt(__pyx_t_14, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2178, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2177
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().indexAt(x, y, z)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2179
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2179, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2180
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2180, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2180, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2180, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2180, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_21->indexAt(__pyx_t_14, __pyx_t_4, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2180, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2179
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().indexAt(x, y, z)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2181
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2181, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2182
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2182, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2182, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2182, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2182, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_22->indexAt(__pyx_t_9, __pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2182, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2181
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().indexAt(x, y, z)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2183
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2183, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2184
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2184, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2184, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2184, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2184, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_23->indexAt(__pyx_t_9, __pyx_t_14, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2184, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2183
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().indexAt(x, y, z)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2185
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2185, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2186
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2186, __pyx_L1_error)
    __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2186, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2186, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2186, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_24->indexAt(__pyx_t_14, __pyx_t_9, __pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2186, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2185
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().indexAt(x, y, z)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2187
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2187, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2188
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2188, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2188, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2188, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2188, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_26->indexAt(__pyx_t_25, __pyx_t_9, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2188, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2187
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().indexAt(x, y, z)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2189
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2189, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2190
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2190, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2190, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2190, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2190, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_27->indexAt(__pyx_t_9, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2190, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2189
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().indexAt(x, y, z)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2191
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2191, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2192
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2192, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2192, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2192, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2192, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_28->indexAt(__pyx_t_9, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2192, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2191
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().indexAt(x, y, z)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2193
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2193, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2194
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2194, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2194, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2194, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2194, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_29->indexAt(__pyx_t_25, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __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(18, 2194, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2193
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().indexAt(x, y, z)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2195
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2195, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2196
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2196, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2196, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2196, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2196, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_30->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_4, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2196, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2195
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().indexAt(x, y, z)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2197
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2197, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2198
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2198, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2198, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2198, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2198, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_31->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_5, __pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2198, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2197
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().indexAt(x, y, z)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2199
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2199, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2200
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2200, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2200, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2200, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2200, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_32->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2200, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2199
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().indexAt(x, y, z)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2201
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2201, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2202
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2202, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2202, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2202, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2202, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_33->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_25, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2202, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2201
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().indexAt(x, y, z)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2203
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2203, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2204
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2204, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2204, __pyx_L1_error)
    __pyx_t_25 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_25 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2204, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2204, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_34->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_25, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2204, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2203
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().indexAt(x, y, z)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2205
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2205, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2206
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2206, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2206, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2206, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2206, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_35->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_9, __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(18, 2206, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2205
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().indexAt(x, y, z)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2207
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2207, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2208
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2208, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2208, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2208, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 2208, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_36->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2208, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2207
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().indexAt(x, y, z)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2209
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2209, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2210
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().indexAt(x, y, z)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2210, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2210, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2210, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_z); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2210, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_37->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2210, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2209
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().indexAt(x, y, z)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2211
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2212
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2212, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2212, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2212, __pyx_L1_error)
    __pyx_t_39 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_z); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2212, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_38->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_19), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_39));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2212, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 2212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2211
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().indexAt(x, y, z)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2213
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2213, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2158
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */

  /* 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.BinnedEstimate3D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2215
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_86maskedBins, "BinnedEstimate3D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_87maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_86maskedBins};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_87maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_86maskedBins(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_86maskedBins(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  std::vector<size_t>  __pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  std::vector<size_t>  __pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  std::vector<size_t>  __pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  std::vector<size_t>  __pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  std::vector<size_t>  __pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  std::vector<size_t>  __pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  std::vector<size_t>  __pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  std::vector<size_t>  __pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  std::vector<size_t>  __pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  std::vector<size_t>  __pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  std::vector<size_t>  __pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  std::vector<size_t>  __pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  std::vector<size_t>  __pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  std::vector<size_t>  __pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  std::vector<size_t>  __pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  std::vector<size_t>  __pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  std::vector<size_t>  __pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  std::vector<size_t>  __pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  std::vector<size_t>  __pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  std::vector<size_t>  __pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  std::vector<size_t>  __pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  std::vector<size_t>  __pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  std::vector<size_t>  __pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2216
 * 
 *     def maskedBins(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskedBins()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2216, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2217
 *     def maskedBins(self):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2217, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2217, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2216
 * 
 *     def maskedBins(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskedBins()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2218
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskedBins()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2218, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2219
 *           return self.binned_ddd_ptr().maskedBins()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2219, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2219, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2218
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().maskedBins()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2220
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().maskedBins()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskedBins()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2221
 *           return self.binned_ddi_ptr().maskedBins()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2221, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2221, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2220
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().maskedBins()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().maskedBins()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2222
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().maskedBins()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskedBins()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2223
 *           return self.binned_dds_ptr().maskedBins()
 *         if self._config == "did":
 *           return self.binned_did_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2223, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2223, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2222
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().maskedBins()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().maskedBins()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2224
 *         if self._config == "did":
 *           return self.binned_did_ptr().maskedBins()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskedBins()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2224, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2225
 *           return self.binned_did_ptr().maskedBins()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2225, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2225, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2224
 *         if self._config == "did":
 *           return self.binned_did_ptr().maskedBins()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().maskedBins()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2226
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().maskedBins()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskedBins()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2226, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2227
 *           return self.binned_dii_ptr().maskedBins()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2227, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2227, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2226
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().maskedBins()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().maskedBins()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2228
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().maskedBins()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskedBins()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2228, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2229
 *           return self.binned_dis_ptr().maskedBins()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2229, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2229, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2228
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().maskedBins()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().maskedBins()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2230
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().maskedBins()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskedBins()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2230, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2231
 *           return self.binned_dsd_ptr().maskedBins()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2231, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2231, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2230
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().maskedBins()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().maskedBins()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2232
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().maskedBins()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskedBins()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2232, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2233
 *           return self.binned_dsi_ptr().maskedBins()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2233, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2233, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2232
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().maskedBins()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().maskedBins()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2234
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().maskedBins()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskedBins()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2234, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2235
 *           return self.binned_dss_ptr().maskedBins()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2235, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2235, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2234
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().maskedBins()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().maskedBins()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2236
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().maskedBins()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskedBins()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2236, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2237
 *           return self.binned_idd_ptr().maskedBins()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2237, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2237, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_24); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2236
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().maskedBins()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().maskedBins()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2238
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().maskedBins()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskedBins()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2238, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2239
 *           return self.binned_idi_ptr().maskedBins()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2239, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2239, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2238
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().maskedBins()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().maskedBins()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2240
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().maskedBins()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskedBins()
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2240, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2241
 *           return self.binned_ids_ptr().maskedBins()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2241, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2241, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2240
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().maskedBins()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().maskedBins()
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2242
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().maskedBins()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskedBins()
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2242, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2243
 *           return self.binned_iid_ptr().maskedBins()
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2243, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2243, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_30); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2242
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().maskedBins()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().maskedBins()
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2244
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().maskedBins()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskedBins()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2244, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2245
 *           return self.binned_iii_ptr().maskedBins()
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2245, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2245, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2244
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().maskedBins()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().maskedBins()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2246
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().maskedBins()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskedBins()
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2247
 *           return self.binned_iis_ptr().maskedBins()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2247, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2247, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2246
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().maskedBins()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().maskedBins()
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2248
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().maskedBins()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskedBins()
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2248, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2249
 *           return self.binned_isd_ptr().maskedBins()
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2249, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2249, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_36); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2248
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().maskedBins()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().maskedBins()
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2250
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().maskedBins()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskedBins()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2250, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2251
 *           return self.binned_isi_ptr().maskedBins()
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2251, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2251, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_38); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2250
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().maskedBins()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().maskedBins()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2252
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().maskedBins()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskedBins()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2252, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2253
 *           return self.binned_iss_ptr().maskedBins()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2253, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2253, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_40); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2252
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().maskedBins()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().maskedBins()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2254
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().maskedBins()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskedBins()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2254, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2255
 *           return self.binned_sdd_ptr().maskedBins()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2255, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2255, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_42); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2254
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().maskedBins()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().maskedBins()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2256
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().maskedBins()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskedBins()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2256, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2257
 *           return self.binned_sdi_ptr().maskedBins()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2257, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2257, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_44); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2256
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().maskedBins()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().maskedBins()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2258
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().maskedBins()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskedBins()
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2258, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2259
 *           return self.binned_sds_ptr().maskedBins()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2259, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2259, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_46); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2258
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().maskedBins()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().maskedBins()
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2260
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().maskedBins()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskedBins()
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2260, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2261
 *           return self.binned_sid_ptr().maskedBins()
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2261, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2261, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_48); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2260
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().maskedBins()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().maskedBins()
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2262
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().maskedBins()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskedBins()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2263
 *           return self.binned_sii_ptr().maskedBins()
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2263, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2263, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_50); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2262
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().maskedBins()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().maskedBins()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2264
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().maskedBins()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskedBins()
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2265
 *           return self.binned_sis_ptr().maskedBins()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2265, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2265, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_52); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2264
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().maskedBins()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().maskedBins()
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2266
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().maskedBins()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskedBins()
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2266, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2267
 *           return self.binned_ssd_ptr().maskedBins()
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2267, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_54); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2266
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().maskedBins()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().maskedBins()
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2268
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().maskedBins()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2269
 *           return self.binned_ssi_ptr().maskedBins()
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2269, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2269, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_56); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2268
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().maskedBins()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2270
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sources(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2270, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2215
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */

  /* 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.BinnedEstimate3D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2272
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_88sources, "BinnedEstimate3D.sources(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_89sources = {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_88sources};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_89sources(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sources (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sources", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sources", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_88sources(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_88sources(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::vector<std::string>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  std::vector<std::string>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  std::vector<std::string>  __pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  std::vector<std::string>  __pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  std::vector<std::string>  __pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  std::vector<std::string>  __pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  std::vector<std::string>  __pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  std::vector<std::string>  __pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  std::vector<std::string>  __pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  std::vector<std::string>  __pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  std::vector<std::string>  __pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  std::vector<std::string>  __pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  std::vector<std::string>  __pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  std::vector<std::string>  __pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  std::vector<std::string>  __pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  std::vector<std::string>  __pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  std::vector<std::string>  __pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  std::vector<std::string>  __pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  std::vector<std::string>  __pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  std::vector<std::string>  __pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sources", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2273
 * 
 *     def sources(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sources()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2273, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2274
 *     def sources(self):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2274, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2274, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2273
 * 
 *     def sources(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sources()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2275
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().sources()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2275, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2276
 *           return self.binned_ddd_ptr().sources()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2276, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2276, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2275
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().sources()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2277
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().sources()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().sources()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2277, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2278
 *           return self.binned_ddi_ptr().sources()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2278, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2278, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2277
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().sources()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().sources()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2279
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().sources()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().sources()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2279, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2280
 *           return self.binned_dds_ptr().sources()
 *         if self._config == "did":
 *           return self.binned_did_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2280, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2280, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2279
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().sources()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().sources()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2281
 *         if self._config == "did":
 *           return self.binned_did_ptr().sources()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().sources()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2281, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2282
 *           return self.binned_did_ptr().sources()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2282, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2282, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2281
 *         if self._config == "did":
 *           return self.binned_did_ptr().sources()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().sources()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2283
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().sources()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().sources()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2283, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2284
 *           return self.binned_dii_ptr().sources()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2284, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2284, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2283
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().sources()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().sources()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2285
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().sources()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().sources()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2285, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2286
 *           return self.binned_dis_ptr().sources()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2286, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2286, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2285
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().sources()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().sources()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2287
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().sources()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().sources()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2287, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2288
 *           return self.binned_dsd_ptr().sources()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2288, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2288, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2287
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().sources()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().sources()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2289
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().sources()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().sources()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2289, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2290
 *           return self.binned_dsi_ptr().sources()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2290, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2290, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2289
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().sources()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().sources()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2291
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().sources()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().sources()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2292
 *           return self.binned_dss_ptr().sources()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2292, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2292, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2291
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().sources()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().sources()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2293
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().sources()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().sources()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2294
 *           return self.binned_idd_ptr().sources()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2294, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2294, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_24); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2293
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().sources()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().sources()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2295
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().sources()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().sources()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2296
 *           return self.binned_idi_ptr().sources()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2296, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2296, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2295
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().sources()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().sources()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2297
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().sources()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().sources()
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2297, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2298
 *           return self.binned_ids_ptr().sources()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2298, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2298, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2297
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().sources()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().sources()
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2299
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().sources()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().sources()
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2299, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2300
 *           return self.binned_iid_ptr().sources()
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2300, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2300, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_30); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2299
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().sources()
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().sources()
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2301
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().sources()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().sources()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2301, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2302
 *           return self.binned_iii_ptr().sources()
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2302, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2302, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2301
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().sources()
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().sources()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2303
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().sources()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().sources()
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2303, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2304
 *           return self.binned_iis_ptr().sources()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2304, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2304, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2303
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().sources()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().sources()
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2305
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().sources()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().sources()
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2305, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2306
 *           return self.binned_isd_ptr().sources()
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2306, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2306, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_36); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2305
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().sources()
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().sources()
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2307
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().sources()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().sources()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2307, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2308
 *           return self.binned_isi_ptr().sources()
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2308, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2308, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_38); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2307
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().sources()
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().sources()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2309
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().sources()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().sources()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2309, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2310
 *           return self.binned_iss_ptr().sources()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2310, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2310, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_40); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2309
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().sources()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().sources()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2311
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().sources()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().sources()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2311, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2312
 *           return self.binned_sdd_ptr().sources()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2312, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2312, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_42); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2311
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().sources()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().sources()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2313
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().sources()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().sources()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2313, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2314
 *           return self.binned_sdi_ptr().sources()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2314, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2314, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_44); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2313
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().sources()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().sources()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2315
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().sources()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().sources()
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2315, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2316
 *           return self.binned_sds_ptr().sources()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2316, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2316, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_46); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2315
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().sources()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().sources()
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2317
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().sources()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().sources()
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2317, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2318
 *           return self.binned_sid_ptr().sources()
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2318, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2318, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_48); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2317
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().sources()
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().sources()
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2319
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().sources()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().sources()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2319, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2320
 *           return self.binned_sii_ptr().sources()
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2320, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2320, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_50); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2319
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().sources()
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().sources()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2321
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().sources()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().sources()
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2321, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2322
 *           return self.binned_sis_ptr().sources()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2322, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2322, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_52); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2321
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().sources()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().sources()
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2323
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().sources()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().sources()
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2323, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2324
 *           return self.binned_ssd_ptr().sources()
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().sources()             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().sources()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2324, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2324, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_54); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2324, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2323
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().sources()
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().sources()
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2325
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().sources()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2325, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2326
 *           return self.binned_ssi_ptr().sources()
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().sources()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2326, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->sources();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2326, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_56); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2325
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().sources()
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2327
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().sources()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2327, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2272
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 */

  /* 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.BinnedEstimate3D.sources", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2329
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve, "BinnedEstimate3D.areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve = {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeBinVol = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areaUnderCurve (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeBinVol,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_includeBinVol);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2329, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2329, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2329, __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, "areaUnderCurve") < 0)) __PYX_ERR(18, 2329, __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_includeBinVol = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("areaUnderCurve", 0, 0, 3, __pyx_nargs); __PYX_ERR(18, 2329, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeBinVol, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeBinVol, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_32;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areaUnderCurve", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2330
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2331
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2331, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2331, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2331, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2331, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_2->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2330
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2332
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2333
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2333, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2333, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2333, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2333, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_7->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2332
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2334
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2334, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2335
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2335, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2335, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2335, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2335, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_8->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2334
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2336
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2336, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2337
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "did":
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2337, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2337, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2337, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2337, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_9->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2336
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2338
 *         if self._config == "did":
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2338, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2339
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2339, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2339, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2339, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2339, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_10->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2338
 *         if self._config == "did":
 *           return self.binned_did_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2340
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2340, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2341
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2341, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2341, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2341, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2341, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_11->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2340
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2342
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2342, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2343
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2343, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2343, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2343, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2343, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_12->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2342
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2344
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2344, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2345
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2345, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2345, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2345, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2345, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_13->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2344
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2346
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2346, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2347
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2347, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2347, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2347, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2347, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_14->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2346
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2348
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2348, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2349
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2349, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2349, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2349, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2349, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_15->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2348
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2350
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2350, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2351
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2351, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2351, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2351, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2351, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_16->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2350
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2352
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2352, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2353
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2353, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2353, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2353, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2353, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_17->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2352
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2354
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2354, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2355
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2355, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2355, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2355, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2355, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_18->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2354
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2356
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2356, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2357
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2357, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2357, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2357, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2357, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_19->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2356
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2358
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2358, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2359
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2359, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2359, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2359, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2359, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_20->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2358
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2360
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2360, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2361
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2361, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2361, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2361, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2361, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_21->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2360
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2362
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2362, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2363
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2363, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2363, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2363, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2363, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_22->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2362
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2364
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2364, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2365
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2365, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2365, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2365, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2365, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_23->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2364
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2366
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2366, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2367
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2367, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2367, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2367, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2367, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_24->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2366
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2368
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2368, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2369
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2369, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2369, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2369, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2369, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_25->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2368
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2370
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2370, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2371
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2371, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2371, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2371, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2371, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_26->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2370
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2372
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2373
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2373, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2373, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2373, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2373, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_27->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2372
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2374
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2375
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2375, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2375, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2375, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2375, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_28->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2374
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2376
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2377
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2377, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2377, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2377, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2377, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_29->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2376
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2378
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2378, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2379
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2379, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2379, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2379, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2379, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_30->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2378
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2380
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2380, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2381
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2381, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2381, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2381, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2381, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_31->areaUnderCurve(__pyx_t_5, __pyx_t_4, __pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2380
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2382
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2382, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2383
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2383, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeBinVol); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2383, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2383, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2383, __pyx_L1_error)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_32->areaUnderCurve(__pyx_t_3, __pyx_t_4, __pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2382
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2384
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2384, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2329
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */

  /* 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.BinnedEstimate3D.areaUnderCurve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2386
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix, "BinnedEstimate3D.covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr='^stat|^uncor')");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix = {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  PyObject *__pyx_v_pat_uncorr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covarianceMatrix (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignoreOffDiagonalTerms,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,&__pyx_n_s_pat_uncorr,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s_stat_uncor));
    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_ignoreOffDiagonalTerms);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2386, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2386, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2386, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pat_uncorr);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2386, __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(18, 2386, __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_ignoreOffDiagonalTerms = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
    __pyx_v_pat_uncorr = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covarianceMatrix", 0, 0, 4, __pyx_nargs); __PYX_ERR(18, 2386, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_ignoreOffDiagonalTerms, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins, __pyx_v_pat_uncorr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins, PyObject *__pyx_v_pat_uncorr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  std::string __pyx_t_6;
  std::vector<std::vector<double> >  __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_9;
  std::vector<std::vector<double> >  __pyx_t_10;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_11;
  std::vector<std::vector<double> >  __pyx_t_12;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_13;
  std::vector<std::vector<double> >  __pyx_t_14;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_15;
  std::vector<std::vector<double> >  __pyx_t_16;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_17;
  std::vector<std::vector<double> >  __pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_19;
  std::vector<std::vector<double> >  __pyx_t_20;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_21;
  std::vector<std::vector<double> >  __pyx_t_22;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_23;
  std::vector<std::vector<double> >  __pyx_t_24;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_25;
  std::vector<std::vector<double> >  __pyx_t_26;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_27;
  std::vector<std::vector<double> >  __pyx_t_28;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_29;
  std::vector<std::vector<double> >  __pyx_t_30;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_31;
  std::vector<std::vector<double> >  __pyx_t_32;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_33;
  std::vector<std::vector<double> >  __pyx_t_34;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_35;
  std::vector<std::vector<double> >  __pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_37;
  std::vector<std::vector<double> >  __pyx_t_38;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_39;
  std::vector<std::vector<double> >  __pyx_t_40;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_41;
  std::vector<std::vector<double> >  __pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_43;
  std::vector<std::vector<double> >  __pyx_t_44;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_45;
  std::vector<std::vector<double> >  __pyx_t_46;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_47;
  std::vector<std::vector<double> >  __pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_49;
  std::vector<std::vector<double> >  __pyx_t_50;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_51;
  std::vector<std::vector<double> >  __pyx_t_52;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_53;
  std::vector<std::vector<double> >  __pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_55;
  std::vector<std::vector<double> >  __pyx_t_56;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_57;
  std::vector<std::vector<double> >  __pyx_t_58;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_59;
  std::vector<std::vector<double> >  __pyx_t_60;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covarianceMatrix", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2387
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2387, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2388
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2388, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2388, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2388, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2388, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2388, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2388, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2387
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2389
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2389, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2390
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2390, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2390, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2390, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2390, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2390, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2390, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2389
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2391
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2391, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2392
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2392, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2392, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2392, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2392, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2392, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2392, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2391
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2393
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2393, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2394
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "did":
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2394, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2394, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2394, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2394, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2394, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2394, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2393
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2395
 *         if self._config == "did":
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2395, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2396
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2396, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2396, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2396, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2396, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2396, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2396, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2395
 *         if self._config == "did":
 *           return self.binned_did_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2397
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2397, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2398
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2398, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2398, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2398, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2398, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2398, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2398, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2397
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2399
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2400
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2400, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2400, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2400, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2400, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2400, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2400, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_20); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2399
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2401
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2402
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2402, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2402, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2402, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2402, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2402, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_22); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2401
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2403
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2404
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2404, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2404, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2404, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2404, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2404, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_24); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2403
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2405
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2406
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2406, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2406, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2406, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2406, __pyx_L1_error)
    try {
      __pyx_t_26 = __pyx_t_25->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2406, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_26); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2405
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2407
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2408
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2408, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2408, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2408, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2408, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_27->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2408, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2407
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2409
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2410
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2410, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2410, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2410, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2410, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2410, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_30); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2409
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2411
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2412
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2412, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2412, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2412, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2412, __pyx_L1_error)
    try {
      __pyx_t_32 = __pyx_t_31->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2412, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_32); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2411
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2413
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2414
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2414, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2414, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2414, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2414, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2414, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_33->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2414, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_34); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2413
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2415
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2415, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2416
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2416, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2416, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2416, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2416, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2416, __pyx_L1_error)
    try {
      __pyx_t_36 = __pyx_t_35->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2416, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_36); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2416, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2415
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2417
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2417, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2418
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2418, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2418, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2418, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2418, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2418, __pyx_L1_error)
    try {
      __pyx_t_38 = __pyx_t_37->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2418, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_38); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2417
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2419
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2419, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2420
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2420, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2420, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2420, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2420, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2420, __pyx_L1_error)
    try {
      __pyx_t_40 = __pyx_t_39->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2420, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_40); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2419
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2421
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2421, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2422
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2422, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2422, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2422, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2422, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2422, __pyx_L1_error)
    try {
      __pyx_t_42 = __pyx_t_41->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2422, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_42); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2421
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2423
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2423, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2424
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2424, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2424, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2424, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2424, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2424, __pyx_L1_error)
    try {
      __pyx_t_44 = __pyx_t_43->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2424, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_44); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2423
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2425
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2425, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2426
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2426, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2426, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2426, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2426, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2426, __pyx_L1_error)
    try {
      __pyx_t_46 = __pyx_t_45->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2426, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_46); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2425
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2427
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2427, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2428
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2428, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2428, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2428, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2428, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2428, __pyx_L1_error)
    try {
      __pyx_t_48 = __pyx_t_47->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2428, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_48); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2427
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2429
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2429, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2430
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2430, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2430, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2430, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2430, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2430, __pyx_L1_error)
    try {
      __pyx_t_50 = __pyx_t_49->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2430, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_50); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2429
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2431
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2431, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2432
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2432, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2432, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2432, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2432, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2432, __pyx_L1_error)
    try {
      __pyx_t_52 = __pyx_t_51->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2432, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_52); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2431
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2433
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2433, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2434
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2434, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2434, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2434, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2434, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2434, __pyx_L1_error)
    try {
      __pyx_t_54 = __pyx_t_53->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2434, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_54); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2433
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2435
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2435, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2436
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2436, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2436, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2436, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2436, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2436, __pyx_L1_error)
    try {
      __pyx_t_56 = __pyx_t_55->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2436, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_56); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2435
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2437
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2437, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2438
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_57 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_57 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2438, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2438, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2438, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2438, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2438, __pyx_L1_error)
    try {
      __pyx_t_58 = __pyx_t_57->covarianceMatrix(__pyx_t_5, __pyx_t_4, __pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2438, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_58); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2437
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2439
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2439, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2440
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_59 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_59 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2440, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2440, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2440, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2440, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_pat_uncorr); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2440, __pyx_L1_error)
    try {
      __pyx_t_60 = __pyx_t_59->covarianceMatrix(__pyx_t_3, __pyx_t_4, __pyx_t_5, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2440, __pyx_L1_error)
    }
    __pyx_t_8 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_60); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 2440, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2439
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2441
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2441, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2386
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2443
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_94numBinsX, "BinnedEstimate3D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_95numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_94numBinsX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_95numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2443, __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, "numBinsX") < 0)) __PYX_ERR(18, 2443, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2443, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_94numBinsX(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_94numBinsX(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2445
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2445, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2446
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2446, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2446, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2446, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2445
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2447
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2447, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2448
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2448, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2448, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2448, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2447
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2449
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2449, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2450
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2450, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2450, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2450, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2449
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2451
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2452
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2452, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2451
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsX(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2453
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2454
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2454, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2453
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsX(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2455
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2455, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2456
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2456, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2456, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2456, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2455
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsX(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2457
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2457, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2458
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2458, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2458, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2457
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2459
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2460
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2460, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2460, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2460, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2459
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsX(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2461
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2461, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2462
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2462, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2462, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2462, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2461
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsX(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2463
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2463, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2464
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2464, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2464, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2464, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2463
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsX(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2465
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2465, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2466
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2466, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2466, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2466, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2465
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsX(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2467
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2467, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2468
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2468, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2468, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2468, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2467
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsX(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2469
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2469, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2470
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2470, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2470, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2470, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2469
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsX(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2471
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2471, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2472
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2472, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2472, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2472, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2471
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsX(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2473
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2473, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2474
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2474, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2474, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2474, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2473
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsX(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2475
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2475, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2476
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2476, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2476, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2476, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2475
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsX(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2477
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2477, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2478
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2478, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2478, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2478, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2477
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsX(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2479
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2479, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2480
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2480, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2480, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2480, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2479
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsX(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2481
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2481, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2482
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2482, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2482, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2482, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2481
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2483
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2483, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2484
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2484, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2484, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2484, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2483
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsX(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2485
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2485, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2486
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2486, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2486, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2486, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2485
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2487
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2487, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2488
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2488, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2488, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2488, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2487
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsX(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2489
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2489, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2490
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2490, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2490, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2490, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2489
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsX(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2491
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2491, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2492
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2492, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2492, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2492, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2491
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsX(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2493
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2493, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2494
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2494, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2494, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2494, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2493
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2495
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2495, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2496
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2496, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2496, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2496, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2495
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsX(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2497
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2497, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2498
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2498, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2498, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2498, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2497
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsX(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2499
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2499, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2443
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2502
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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_16BinnedEstimate3D_96xEdges, "BinnedEstimate3D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_97xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_96xEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2502, __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, "xEdges") < 0)) __PYX_ERR(18, 2502, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2502, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_96xEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_96xEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  std::vector<int>  __pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  std::vector<int>  __pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  std::vector<int>  __pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  std::vector<int>  __pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  std::vector<int>  __pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  std::vector<int>  __pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  std::vector<int>  __pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  std::vector<int>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  std::vector<int>  __pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  std::vector<std::string>  __pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  std::vector<std::string>  __pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  std::vector<std::string>  __pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  std::vector<std::string>  __pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  std::vector<std::string>  __pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  std::vector<std::string>  __pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  std::vector<std::string>  __pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  std::vector<std::string>  __pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  std::vector<std::string>  __pyx_t_57;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2504
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2504, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2505
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2505, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2505, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2505, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2504
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2506
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2506, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2507
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2507, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2507, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2507, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2506
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2508
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2508, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2509
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2509, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2509, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2509, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2508
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2510
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2510, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2511
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2511, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2511, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2511, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2510
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2512
 *         if self._config == "did":
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2512, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2513
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2513, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2513, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2513, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2513, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2512
 *         if self._config == "did":
 *           return self.binned_did_ptr().xEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2514
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2514, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2515
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2515, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2515, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2515, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2514
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2516
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2516, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2517
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2517, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2517, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2517, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2516
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2518
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2518, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2519
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2519, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2519, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2519, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2518
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2520
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2520, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2521
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2521, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2521, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2521, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2520
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2522
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2522, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2523
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2523, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2523, __pyx_L1_error)
    try {
      __pyx_t_23 = __pyx_t_22->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2523, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2522
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2524
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2525
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2525, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2525, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_24->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2525, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2524
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().xEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2526
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2526, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2527
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2527, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2527, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2527, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2526
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().xEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2528
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2528, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2529
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2529, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2529, __pyx_L1_error)
    try {
      __pyx_t_29 = __pyx_t_28->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2529, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2528
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().xEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2530
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2530, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2531
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2531, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2531, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_30->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2531, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_31); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2530
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().xEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2532
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2532, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2533
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2533, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2533, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2533, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_33); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2532
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().xEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2534
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2535
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2535, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2535, __pyx_L1_error)
    try {
      __pyx_t_35 = __pyx_t_34->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2535, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_35); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2534
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().xEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2536
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2537
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2537, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2537, __pyx_L1_error)
    try {
      __pyx_t_37 = __pyx_t_36->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2537, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_37); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2536
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().xEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2538
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2538, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2539
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2539, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2539, __pyx_L1_error)
    try {
      __pyx_t_39 = __pyx_t_38->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2539, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_39); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2538
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().xEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2540
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2540, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2541
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2541, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2541, __pyx_L1_error)
    try {
      __pyx_t_41 = __pyx_t_40->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2541, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_41); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2540
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().xEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2542
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2542, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2543
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2543, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2543, __pyx_L1_error)
    try {
      __pyx_t_43 = __pyx_t_42->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2543, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_43); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2542
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().xEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2544
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2544, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2545
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2545, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2545, __pyx_L1_error)
    try {
      __pyx_t_45 = __pyx_t_44->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2545, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_45); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2544
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().xEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2546
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2546, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2547
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2547, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2547, __pyx_L1_error)
    try {
      __pyx_t_47 = __pyx_t_46->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2547, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_47); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2546
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().xEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2548
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2548, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2549
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2549, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2549, __pyx_L1_error)
    try {
      __pyx_t_49 = __pyx_t_48->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2549, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_49); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2548
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().xEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2550
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2550, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2551
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2551, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2551, __pyx_L1_error)
    try {
      __pyx_t_51 = __pyx_t_50->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2551, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_51); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2550
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().xEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2552
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2552, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2553
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2553, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2553, __pyx_L1_error)
    try {
      __pyx_t_53 = __pyx_t_52->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2553, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_53); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2552
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().xEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2554
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2554, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2555
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2555, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2555, __pyx_L1_error)
    try {
      __pyx_t_55 = __pyx_t_54->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2555, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_55); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2554
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().xEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2556
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2556, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2557
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2557, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2557, __pyx_L1_error)
    try {
      __pyx_t_57 = __pyx_t_56->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2557, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_57); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2556
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().xEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2558
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2558, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2502
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2561
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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_16BinnedEstimate3D_98xWidths, "BinnedEstimate3D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_99xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_98xWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_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
) {
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2561, __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, "xWidths") < 0)) __PYX_ERR(18, 2561, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2561, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_98xWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_98xWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2563
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2563, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2564
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2564, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2564, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2564, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2563
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2565
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2565, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2566
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2566, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2566, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2566, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2565
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2567
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2567, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2568
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2568, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2568, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2568, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2567
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xWidths(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2569
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2569, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2570
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2570, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2570, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2570, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2569
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xWidths(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2571
 *         if self._config == "did":
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2571, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2572
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2572, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2572, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2572, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2571
 *         if self._config == "did":
 *           return self.binned_did_ptr().xWidths(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2573
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2573, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2574
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2574, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2574, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2574, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2573
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xWidths(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2575
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2575, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2576
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2576, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2576, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2576, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2576, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2575
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xWidths(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2577
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2577, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2578
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2578, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2578, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2578, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2578, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2577
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xWidths(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2579
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2579, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2580
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2580, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2580, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2580, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2579
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xWidths(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2581
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2581, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2561
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2584
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_100xMin, "BinnedEstimate3D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_101xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_100xMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_101xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_100xMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_100xMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2586
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMin()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2586, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2587
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2587, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2587, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2586
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMin()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2588
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMin()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xMin()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2588, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2589
 *           return self.binned_ddd_ptr().xMin()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2589, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2589, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2588
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMin()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xMin()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2590
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMin()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xMin()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2591
 *           return self.binned_ddi_ptr().xMin()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2591, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2591, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2590
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMin()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xMin()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2592
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMin()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xMin()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2592, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2593
 *           return self.binned_dds_ptr().xMin()
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2593, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2593, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2592
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMin()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xMin()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2594
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMin()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xMin()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2594, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2595
 *           return self.binned_did_ptr().xMin()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2595, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2595, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2594
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMin()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xMin()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2596
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMin()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xMin()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2596, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2597
 *           return self.binned_dii_ptr().xMin()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2597, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2597, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2596
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMin()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xMin()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2598
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMin()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xMin()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2598, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2599
 *           return self.binned_dis_ptr().xMin()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2599, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2599, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2598
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMin()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xMin()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2600
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMin()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xMin()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2600, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2601
 *           return self.binned_dsd_ptr().xMin()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2601, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2601, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2600
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMin()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xMin()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2602
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMin()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2602, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2603
 *           return self.binned_dsi_ptr().xMin()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2603, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2603, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2602
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMin()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2604
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2604, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2584
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2607
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_102xMax, "BinnedEstimate3D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_103xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_102xMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_103xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_102xMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_102xMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2609
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMax()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2609, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2610
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2610, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2610, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2610, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2609
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMax()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2611
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMax()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xMax()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2611, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2612
 *           return self.binned_ddd_ptr().xMax()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2612, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2612, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2611
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMax()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().xMax()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2613
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMax()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xMax()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2614
 *           return self.binned_ddi_ptr().xMax()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2614, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2614, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2613
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().xMax()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().xMax()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2615
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMax()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xMax()
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2615, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2616
 *           return self.binned_dds_ptr().xMax()
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2616, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2616, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2615
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().xMax()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().xMax()
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2617
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMax()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xMax()
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2617, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2618
 *           return self.binned_did_ptr().xMax()
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2618, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2618, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2617
 *         if self._config == "did":
 *           return self.binned_did_ptr().xMax()
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().xMax()
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2619
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMax()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xMax()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2619, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2620
 *           return self.binned_dii_ptr().xMax()
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2620, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2620, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2619
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().xMax()
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().xMax()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2621
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMax()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xMax()
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2621, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2622
 *           return self.binned_dis_ptr().xMax()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2622, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2622, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2621
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().xMax()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().xMax()
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2623
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMax()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xMax()
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2623, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2624
 *           return self.binned_dsd_ptr().xMax()
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2624, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2624, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2623
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().xMax()
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().xMax()
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2625
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMax()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2625, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2626
 *           return self.binned_dsi_ptr().xMax()
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2626, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2626, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2625
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().xMax()
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2627
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2627, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2607
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2630
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_104rebinXBy, "BinnedEstimate3D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_105rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_104rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_105rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__95);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2630, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2630, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2630, __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, "rebinXBy") < 0)) __PYX_ERR(18, 2630, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(18, 2630, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_104rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_104rebinXBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2632
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2632, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2633
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2633, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2633, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2633, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2633, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(18, 2633, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2632
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2634
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2634, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2635
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2635, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2635, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2635, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2635, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2635, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2634
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2636
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2636, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2637
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2637, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2637, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2637, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2637, __pyx_L1_error)
    try {
      __pyx_t_8->rebinXBy(__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(18, 2637, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2636
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2638
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2638, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2639
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2639, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2639, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2639, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2639, __pyx_L1_error)
    try {
      __pyx_t_9->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2639, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2638
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXBy(n,begin,end)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2640
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2640, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2641
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2641, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2641, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2641, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2641, __pyx_L1_error)
    try {
      __pyx_t_10->rebinXBy(__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(18, 2641, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2640
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2642
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2642, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2643
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2643, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2643, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2643, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2643, __pyx_L1_error)
    try {
      __pyx_t_11->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2643, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2643, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2642
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2644
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2644, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2645
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2645, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2645, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2645, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2645, __pyx_L1_error)
    try {
      __pyx_t_12->rebinXBy(__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(18, 2645, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2644
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2646
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2646, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2647
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2647, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2647, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2647, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2647, __pyx_L1_error)
    try {
      __pyx_t_13->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2647, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2646
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2648
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2648, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2649
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2649, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2649, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2649, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2649, __pyx_L1_error)
    try {
      __pyx_t_14->rebinXBy(__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(18, 2649, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2648
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXBy(n,begin,end)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2650
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2650, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2630
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2653
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_106rebinXTo, "BinnedEstimate3D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_107rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_106rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_107rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2653, __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, "rebinXTo") < 0)) __PYX_ERR(18, 2653, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 2653, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_106rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_106rebinXTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  std::vector<double>  __pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  std::vector<double>  __pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  std::vector<double>  __pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  std::vector<double>  __pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  std::vector<double>  __pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  std::vector<double>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2655
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2655, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2656
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2656, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2656, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2656, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2655
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2657
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2657, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2658
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2658, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2658, __pyx_L1_error)
    try {
      __pyx_t_5->rebinXTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2658, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2657
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2659
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinXTo(edges)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2659, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2660
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2660, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2660, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2660, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2659
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinXTo(edges)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinXTo(edges)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2661
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXTo(edges)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinXTo(edges)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2661, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2662
 *           return self.binned_dds_ptr().rebinXTo(edges)
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2662, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2662, __pyx_L1_error)
    try {
      __pyx_t_9->rebinXTo(__pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2662, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2661
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinXTo(edges)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinXTo(edges)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2663
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXTo(edges)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().rebinXTo(edges)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2663, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2664
 *           return self.binned_did_ptr().rebinXTo(edges)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2664, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2664, __pyx_L1_error)
    try {
      __pyx_t_11->rebinXTo(__pyx_t_12);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2664, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2663
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinXTo(edges)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().rebinXTo(edges)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2665
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXTo(edges)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().rebinXTo(edges)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2665, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2666
 *           return self.binned_dii_ptr().rebinXTo(edges)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2666, __pyx_L1_error)
    __pyx_t_14 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2666, __pyx_L1_error)
    try {
      __pyx_t_13->rebinXTo(__pyx_t_14);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2666, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2665
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().rebinXTo(edges)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().rebinXTo(edges)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2667
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXTo(edges)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2667, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2668
 *           return self.binned_dis_ptr().rebinXTo(edges)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2668, __pyx_L1_error)
    __pyx_t_16 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2668, __pyx_L1_error)
    try {
      __pyx_t_15->rebinXTo(__pyx_t_16);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2668, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2668, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2667
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().rebinXTo(edges)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2669
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2669, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2670
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2670, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2670, __pyx_L1_error)
    try {
      __pyx_t_17->rebinXTo(__pyx_t_18);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2670, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2669
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinXTo(edges)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2671
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2671, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2672
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2672, __pyx_L1_error)
    __pyx_t_20 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2672, __pyx_L1_error)
    try {
      __pyx_t_19->rebinXTo(__pyx_t_20);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2672, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2671
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().rebinXTo(edges)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2673
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2673, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2653
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2676
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_108rebinX, "BinnedEstimate3D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_109rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_108rebinX};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_109rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2676, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(18, 2676, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(18, 2676, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_108rebinX(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_108rebinX(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2677
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 2677, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2678
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2678, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(18, 2678, __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/generated/BinnedEstimate3D.pyx":2677
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":2680
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2680, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2680, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(18, 2680, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2680, __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(18, 2680, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2680, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":2676
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2682
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_111numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_110numBinsY, "BinnedEstimate3D.numBinsY(self, includeOverflows=False)\nnumBinsY on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_111numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_111numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_110numBinsY};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_111numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2682, __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, "numBinsY") < 0)) __PYX_ERR(18, 2682, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsY", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2682, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_110numBinsY(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_110numBinsY(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2684
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2684, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2685
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2685, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2685, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2685, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2684
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2686
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2686, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2687
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2687, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2687, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2687, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2686
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2688
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2688, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2689
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2689, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2689, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2689, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2688
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2690
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2690, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2691
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2691, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2691, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2691, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2691, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2690
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsY(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2692
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2692, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2693
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2693, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2693, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2693, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2692
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsY(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2694
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2694, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2695
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2695, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2695, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2695, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2694
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsY(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2696
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2696, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2697
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2697, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2697, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2697, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2696
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2698
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2698, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2699
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2699, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2699, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2699, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2698
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsY(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2700
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2700, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2701
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2701, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2701, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2701, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2700
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsY(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2702
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2702, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2703
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2703, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2703, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2703, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2702
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsY(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2704
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2704, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2705
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2705, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2705, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2705, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2705, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2704
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsY(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2706
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2706, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2707
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2707, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2707, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2707, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2706
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsY(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2708
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2708, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2709
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2709, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2709, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2709, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2709, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2708
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsY(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2710
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2710, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2711
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2711, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2711, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2711, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2710
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsY(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2712
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2712, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2713
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2713, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2713, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2713, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2712
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsY(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2714
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2714, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2715
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2715, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2715, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2715, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2715, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2714
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsY(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2716
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2716, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2717
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2717, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2717, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2717, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2716
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsY(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2718
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2718, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2719
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2719, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2719, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2719, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2718
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsY(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2720
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2720, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2721
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2721, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2721, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2721, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2720
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2722
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2722, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2723
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2723, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2723, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2723, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2722
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsY(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2724
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2724, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2725
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2725, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2725, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2725, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2724
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2726
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2726, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2727
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2727, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2727, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2727, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2727, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2726
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsY(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2728
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2728, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2729
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2729, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2729, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2729, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2728
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsY(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2730
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2730, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2731
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2731, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2731, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2731, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2730
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsY(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2732
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2732, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2733
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2733, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2733, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2733, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2732
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2734
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2734, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2735
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2735, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2735, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2735, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2734
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsY(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2736
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2736, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2737
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2737, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2737, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2737, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2736
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsY(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2738
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2738, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2682
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2741
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_113yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_112yEdges, "BinnedEstimate3D.yEdges(self, includeOverflows=False)\nyEdges on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_113yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_113yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_112yEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_113yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2741, __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, "yEdges") < 0)) __PYX_ERR(18, 2741, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_112yEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_112yEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  std::vector<int>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  std::vector<int>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  std::vector<std::string>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  std::vector<double>  __pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  std::vector<int>  __pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  std::vector<int>  __pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  std::vector<int>  __pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  std::vector<std::string>  __pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  std::vector<std::string>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  std::vector<std::string>  __pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  std::vector<double>  __pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  std::vector<double>  __pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  std::vector<double>  __pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  std::vector<int>  __pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  std::vector<int>  __pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  std::vector<int>  __pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  std::vector<std::string>  __pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  std::vector<std::string>  __pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  std::vector<std::string>  __pyx_t_57;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2743
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2743, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2744
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2744, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2744, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2744, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2743
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2745
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2745, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2746
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2746, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2746, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2746, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2745
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2747
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2747, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2748
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2748, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2748, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2748, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2748, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2747
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2749
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2750
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2750, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2750, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2750, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2749
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2751
 *         if self._config == "did":
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2751, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2752
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2752, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2752, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2752, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2751
 *         if self._config == "did":
 *           return self.binned_did_ptr().yEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2753
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2753, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2754
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2754, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2754, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2754, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2753
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().yEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2755
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2755, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2756
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2756, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2756, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2756, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2755
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().yEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2757
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2757, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2758
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2758, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2758, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2758, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2757
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().yEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2759
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2759, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2760
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2760, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2760, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2760, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2759
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().yEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2761
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2761, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2762
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2762, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2762, __pyx_L1_error)
    try {
      __pyx_t_23 = __pyx_t_22->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2762, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2761
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().yEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2763
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2763, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2764
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2764, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2764, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_24->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2764, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2763
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2765
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2765, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2766
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2766, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2766, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2766, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2765
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2767
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2767, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2768
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2768, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2768, __pyx_L1_error)
    try {
      __pyx_t_29 = __pyx_t_28->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2768, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2767
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2769
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2769, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2770
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2770, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2770, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_30->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2770, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_31); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2769
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().yEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2771
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2771, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2772
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2772, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2772, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2772, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_33); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2771
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().yEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2773
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2773, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2774
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2774, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2774, __pyx_L1_error)
    try {
      __pyx_t_35 = __pyx_t_34->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2774, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_35); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2773
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().yEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2775
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2775, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2776
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2776, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2776, __pyx_L1_error)
    try {
      __pyx_t_37 = __pyx_t_36->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2776, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_37); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2775
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().yEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2777
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2778
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2778, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2778, __pyx_L1_error)
    try {
      __pyx_t_39 = __pyx_t_38->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2778, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_39); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2777
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().yEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2779
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2779, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2780
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2780, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2780, __pyx_L1_error)
    try {
      __pyx_t_41 = __pyx_t_40->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2780, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_41); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2779
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().yEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2781
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2781, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2782
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2782, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2782, __pyx_L1_error)
    try {
      __pyx_t_43 = __pyx_t_42->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2782, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_43); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2781
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2783
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2783, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2784
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2784, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2784, __pyx_L1_error)
    try {
      __pyx_t_45 = __pyx_t_44->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2784, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_45); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2783
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2785
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2785, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2786
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2786, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2786, __pyx_L1_error)
    try {
      __pyx_t_47 = __pyx_t_46->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2786, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_47); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2785
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2787
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2787, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2788
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2788, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2788, __pyx_L1_error)
    try {
      __pyx_t_49 = __pyx_t_48->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2788, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_49); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2787
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().yEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2789
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2789, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2790
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2790, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2790, __pyx_L1_error)
    try {
      __pyx_t_51 = __pyx_t_50->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2790, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_51); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2789
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().yEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2791
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2791, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2792
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2792, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2792, __pyx_L1_error)
    try {
      __pyx_t_53 = __pyx_t_52->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2792, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_53); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2791
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().yEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2793
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2793, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2794
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2794, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2794, __pyx_L1_error)
    try {
      __pyx_t_55 = __pyx_t_54->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2794, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_55); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2793
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().yEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2795
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2795, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2796
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2796, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2796, __pyx_L1_error)
    try {
      __pyx_t_57 = __pyx_t_56->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2796, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_57); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2795
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().yEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2797
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2797, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2741
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2800
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_115yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_114yWidths, "BinnedEstimate3D.yWidths(self, includeOverflows=True)\nyWidths on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_115yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_115yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_114yWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_115yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2800, __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, "yWidths") < 0)) __PYX_ERR(18, 2800, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2800, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_114yWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_114yWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2802
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2802, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2803
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2803, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2803, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2803, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2802
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2804
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2804, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2805
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2805, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2805, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2805, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2804
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2806
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2806, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2807
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2807, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2807, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2807, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2806
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yWidths(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2808
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2808, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2809
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2809, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2809, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2809, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2808
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yWidths(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2810
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2810, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2811
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2811, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2811, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2811, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2810
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yWidths(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2812
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2812, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2813
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2813, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2813, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2813, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2812
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yWidths(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2814
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2814, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2815
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2815, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2815, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2815, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2814
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yWidths(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2816
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2816, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2817
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2817, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2817, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2817, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2816
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yWidths(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2818
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2818, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2819
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2819, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2819, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2819, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2819, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2818
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yWidths(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2820
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2820, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2800
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2823
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_117yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_116yMin, "BinnedEstimate3D.yMin(self)\nyMin on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_117yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_117yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_116yMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_117yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_116yMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_116yMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2825
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMin()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2825, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2826
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2826, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2826, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2825
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMin()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2827
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMin()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yMin()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2827, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2828
 *           return self.binned_ddd_ptr().yMin()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2828, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2828, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2827
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMin()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yMin()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2829
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMin()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yMin()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2829, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2830
 *           return self.binned_ddi_ptr().yMin()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2830, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2830, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2830, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2829
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMin()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yMin()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2831
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMin()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yMin()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2831, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2832
 *           return self.binned_dds_ptr().yMin()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2832, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2832, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2831
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMin()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yMin()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2833
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMin()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yMin()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2833, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2834
 *           return self.binned_idd_ptr().yMin()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2834, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2834, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2834, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2833
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMin()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yMin()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2835
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMin()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yMin()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2835, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2836
 *           return self.binned_idi_ptr().yMin()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2836, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2836, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2836, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2835
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMin()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yMin()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2837
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMin()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yMin()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2837, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2838
 *           return self.binned_ids_ptr().yMin()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2838, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2838, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2837
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMin()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yMin()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2839
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMin()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yMin()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2839, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2840
 *           return self.binned_sdd_ptr().yMin()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2840, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2840, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2840, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2839
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMin()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yMin()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2841
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMin()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2841, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2842
 *           return self.binned_sdi_ptr().yMin()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2842, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2842, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2842, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2841
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMin()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2843
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2843, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2823
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2846
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_119yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_118yMax, "BinnedEstimate3D.yMax(self)\nyMax on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_119yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_119yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_118yMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_119yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_118yMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_118yMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_6;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2848
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMax()
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2848, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2849
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2849, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2849, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2849, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2848
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMax()
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2850
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMax()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yMax()
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2850, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2851
 *           return self.binned_ddd_ptr().yMax()
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2851, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2851, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2850
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMax()
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().yMax()
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2852
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMax()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yMax()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2852, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2853
 *           return self.binned_ddi_ptr().yMax()
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2853, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2853, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2853, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2852
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().yMax()
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().yMax()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2854
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMax()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yMax()
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2854, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2855
 *           return self.binned_dds_ptr().yMax()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2855, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2855, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2855, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2854
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().yMax()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().yMax()
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2856
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMax()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yMax()
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2856, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2857
 *           return self.binned_idd_ptr().yMax()
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2857, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2857, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2856
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().yMax()
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().yMax()
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2858
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMax()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yMax()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2858, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2859
 *           return self.binned_idi_ptr().yMax()
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2859, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2859, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2858
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().yMax()
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().yMax()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2860
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMax()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yMax()
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2860, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2861
 *           return self.binned_ids_ptr().yMax()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2861, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2861, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2860
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().yMax()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().yMax()
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2862
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMax()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yMax()
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2862, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2863
 *           return self.binned_sdd_ptr().yMax()
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2863, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2863, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2862
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().yMax()
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().yMax()
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2864
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMax()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2864, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2865
 *           return self.binned_sdi_ptr().yMax()
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2865, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2865, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2864
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().yMax()
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2866
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2866, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2846
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2869
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_121rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_120rebinYBy, "BinnedEstimate3D.rebinYBy(self, n, begin=1, end=sys.maxsize)\nrebinYBy on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_121rebinYBy = {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_121rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_120rebinYBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_121rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__96);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2869, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2869, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2869, __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, "rebinYBy") < 0)) __PYX_ERR(18, 2869, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(18, 2869, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_120rebinYBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_120rebinYBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_10;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYBy", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2871
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2871, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2872
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2872, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2872, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2872, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2872, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYBy(__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(18, 2872, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2871
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2873
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2873, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2874
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2874, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2874, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2874, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2874, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2874, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2873
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2875
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2875, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2876
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2876, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2876, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2876, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2876, __pyx_L1_error)
    try {
      __pyx_t_8->rebinYBy(__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(18, 2876, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2875
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2877
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2877, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2878
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2878, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2878, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2878, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2878, __pyx_L1_error)
    try {
      __pyx_t_9->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2878, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2877
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2879
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2879, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2880
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2880, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2880, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2880, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2880, __pyx_L1_error)
    try {
      __pyx_t_10->rebinYBy(__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(18, 2880, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2879
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2881
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2881, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2882
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2882, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2882, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2882, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2882, __pyx_L1_error)
    try {
      __pyx_t_11->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2882, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2881
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2883
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2883, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2884
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2884, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2884, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2884, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2884, __pyx_L1_error)
    try {
      __pyx_t_12->rebinYBy(__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(18, 2884, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2883
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2885
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2885, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2886
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2886, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2886, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2886, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2886, __pyx_L1_error)
    try {
      __pyx_t_13->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2886, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2885
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2887
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2887, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2888
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2888, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 2888, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2888, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 2888, __pyx_L1_error)
    try {
      __pyx_t_14->rebinYBy(__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(18, 2888, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2887
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2889
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2889, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2869
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2892
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_123rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_122rebinYTo, "BinnedEstimate3D.rebinYTo(self, edges)\nrebinYTo on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_123rebinYTo = {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_123rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_122rebinYTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_123rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2892, __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, "rebinYTo") < 0)) __PYX_ERR(18, 2892, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 2892, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_122rebinYTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_122rebinYTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_9;
  std::vector<double>  __pyx_t_10;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_11;
  std::vector<double>  __pyx_t_12;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_13;
  std::vector<double>  __pyx_t_14;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_15;
  std::vector<double>  __pyx_t_16;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_17;
  std::vector<double>  __pyx_t_18;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_19;
  std::vector<double>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYTo", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2894
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2894, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2895
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2895, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2895, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2895, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2894
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2896
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2896, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2897
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2897, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2897, __pyx_L1_error)
    try {
      __pyx_t_5->rebinYTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2897, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2896
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2898
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinYTo(edges)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2898, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2899
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2899, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2899, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2899, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2898
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().rebinYTo(edges)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().rebinYTo(edges)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2900
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYTo(edges)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinYTo(edges)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2900, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2901
 *           return self.binned_dds_ptr().rebinYTo(edges)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2901, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2901, __pyx_L1_error)
    try {
      __pyx_t_9->rebinYTo(__pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2901, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2901, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2900
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().rebinYTo(edges)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinYTo(edges)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2902
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYTo(edges)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().rebinYTo(edges)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2902, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2903
 *           return self.binned_idd_ptr().rebinYTo(edges)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2903, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2903, __pyx_L1_error)
    try {
      __pyx_t_11->rebinYTo(__pyx_t_12);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2903, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2902
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinYTo(edges)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().rebinYTo(edges)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2904
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYTo(edges)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().rebinYTo(edges)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2904, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2905
 *           return self.binned_idi_ptr().rebinYTo(edges)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2905, __pyx_L1_error)
    __pyx_t_14 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2905, __pyx_L1_error)
    try {
      __pyx_t_13->rebinYTo(__pyx_t_14);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2905, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2904
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().rebinYTo(edges)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().rebinYTo(edges)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2906
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYTo(edges)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2906, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2907
 *           return self.binned_ids_ptr().rebinYTo(edges)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2907, __pyx_L1_error)
    __pyx_t_16 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2907, __pyx_L1_error)
    try {
      __pyx_t_15->rebinYTo(__pyx_t_16);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2907, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2906
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().rebinYTo(edges)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2908
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2908, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2909
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2909, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2909, __pyx_L1_error)
    try {
      __pyx_t_17->rebinYTo(__pyx_t_18);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2909, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2908
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinYTo(edges)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2910
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2910, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2911
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2911, __pyx_L1_error)
    __pyx_t_20 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2911, __pyx_L1_error)
    try {
      __pyx_t_19->rebinYTo(__pyx_t_20);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2911, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2910
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().rebinYTo(edges)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2912
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2912, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2892
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2915
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_125rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_124rebinY, "BinnedEstimate3D.rebinY(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_125rebinY = {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_125rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_124rebinY};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_125rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2915, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinY") < 0)) __PYX_ERR(18, 2915, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinY", 0, 1, 1, __pyx_nargs); __PYX_ERR(18, 2915, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_124rebinY(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_124rebinY(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinY", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2916
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 2916, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2917
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(18, 2917, __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/generated/BinnedEstimate3D.pyx":2916
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":2919
 *             self.rebinYTo(arg)
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsZ(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(18, 2919, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 2919, __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(18, 2919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 2919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":2915
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":2921
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_127numBinsZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_126numBinsZ, "BinnedEstimate3D.numBinsZ(self, includeOverflows=False)\nnumBinsZ on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_127numBinsZ = {"numBinsZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_127numBinsZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_126numBinsZ};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_127numBinsZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2921, __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, "numBinsZ") < 0)) __PYX_ERR(18, 2921, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsZ", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2921, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.numBinsZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_126numBinsZ(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_126numBinsZ(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_14;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_15;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_16;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_22;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_26;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_27;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_28;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_31;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsZ", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2923
 *     def numBinsZ(self, includeOverflows=False):
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2923, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2924
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2924, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2924, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2924, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2923
 *     def numBinsZ(self, includeOverflows=False):
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2925
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2925, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2926
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2926, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2926, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2926, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2925
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2927
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2927, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2928
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2928, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2928, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2928, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2927
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2929
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2929, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2930
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2930, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2930, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2930, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2929
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2931
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2931, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2932
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2932, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2932, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2932, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2932, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2931
 *         if self._config == "did":
 *           return self.binned_did_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2933
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2933, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2934
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2934, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2934, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2934, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2933
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2935
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2935, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2936
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2936, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2936, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2936, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2935
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2937
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2937, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2938
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2938, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2938, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2938, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2937
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2939
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2939, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2940
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2940, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2940, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2940, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2939
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2941
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2941, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2942
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 2942, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2942, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_14->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2942, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2941
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2943
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2943, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2944
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 2944, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2944, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_15->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2944, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2943
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2945
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2945, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2946
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 2946, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2946, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_16->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2946, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2945
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2947
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2947, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2948
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 2948, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2948, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_17->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2948, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2947
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2949
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2949, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2950
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 2950, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2950, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_18->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2950, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2949
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2951
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2951, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2952
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 2952, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2952, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_19->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2952, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2951
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2953
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2953, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2954
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 2954, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2954, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_20->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2954, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2953
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2955
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2955, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2956
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 2956, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2956, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_21->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2956, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2955
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2957
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2957, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2958
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2958, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2958, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_22->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2958, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2957
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2959
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2959, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2960
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 2960, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2960, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_23->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2960, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2959
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2961
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2961, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2962
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 2962, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2962, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_24->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2962, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2961
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2963
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2963, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2964
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 2964, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2964, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_25->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2964, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2963
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2965
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2965, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2966
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 2966, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2966, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_26->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2966, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2966, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2965
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2967
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2967, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2968
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 2968, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2968, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_27->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2968, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2968, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2967
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2969
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2969, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2970
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 2970, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2970, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_28->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2970, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2969
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2971
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2971, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2972
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 2972, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2972, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_29->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2972, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2971
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2973
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2973, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2974
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsZ(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 2974, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2974, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_30->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2974, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2973
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().numBinsZ(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2975
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2975, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2976
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2976, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2976, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_31->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2976, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2976, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2975
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().numBinsZ(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2977
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 2977, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2921
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":2980
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_129zEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_128zEdges, "BinnedEstimate3D.zEdges(self, includeOverflows=False)\nzEdges on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_129zEdges = {"zEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_129zEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_128zEdges};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_129zEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 2980, __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, "zEdges") < 0)) __PYX_ERR(18, 2980, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 2980, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.zEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_128zEdges(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_128zEdges(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  std::vector<std::string>  __pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  std::vector<int>  __pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  std::vector<int>  __pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  std::vector<std::string>  __pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  std::vector<double>  __pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  std::vector<int>  __pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  std::vector<std::string>  __pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  std::vector<double>  __pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  std::vector<int>  __pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  std::vector<std::string>  __pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  std::vector<double>  __pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  std::vector<int>  __pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  std::vector<std::string>  __pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  std::vector<double>  __pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  std::vector<int>  __pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  std::vector<std::string>  __pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  std::vector<double>  __pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  std::vector<int>  __pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  std::vector<std::string>  __pyx_t_57;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zEdges", 1);

  /* "include/generated/BinnedEstimate3D.pyx":2982
 *     def zEdges(self, includeOverflows=False):
 *         """zEdges on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2982, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2983
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 2983, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2983, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2983, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2983, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2982
 *     def zEdges(self, includeOverflows=False):
 *         """zEdges on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         if self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2984
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 *         if self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2984, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2985
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 2985, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2985, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2985, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2985, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2984
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         if self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 *         if self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2986
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2986, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2987
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 2987, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2987, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2987, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2987, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2986
 *         if self._config == "ddi":
 *           return self.binned_ddi_ptr().zEdges(includeOverflows)
 *         if self._config == "dds":             # <<<<<<<<<<<<<<
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2988
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 *         if self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2988, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2989
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 2989, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2989, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2989, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2989, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2988
 *         if self._config == "dds":
 *           return self.binned_dds_ptr().zEdges(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 *         if self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2990
 *         if self._config == "did":
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 *         if self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2990, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2991
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 2991, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2991, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2991, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2991, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2990
 *         if self._config == "did":
 *           return self.binned_did_ptr().zEdges(includeOverflows)
 *         if self._config == "dii":             # <<<<<<<<<<<<<<
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 *         if self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2992
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2992, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2993
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 2993, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2993, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2993, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2993, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2992
 *         if self._config == "dii":
 *           return self.binned_dii_ptr().zEdges(includeOverflows)
 *         if self._config == "dis":             # <<<<<<<<<<<<<<
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2994
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2994, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2995
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 2995, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2995, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2995, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2995, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2994
 *         if self._config == "dis":
 *           return self.binned_dis_ptr().zEdges(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 *         if self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2996
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 *         if self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2996, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2997
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 2997, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2997, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2997, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2997, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2996
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zEdges(includeOverflows)
 *         if self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 *         if self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":2998
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 2998, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":2999
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 2999, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 2999, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 2999, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 2999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":2998
 *         if self._config == "dsi":
 *           return self.binned_dsi_ptr().zEdges(includeOverflows)
 *         if self._config == "dss":             # <<<<<<<<<<<<<<
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3000
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 *         if self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3000, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3001
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3001, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3001, __pyx_L1_error)
    try {
      __pyx_t_23 = __pyx_t_22->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3001, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3000
 *         if self._config == "dss":
 *           return self.binned_dss_ptr().zEdges(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 *         if self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3002
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 *         if self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3002, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3003
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3003, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3003, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_24->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3003, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3003, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3002
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zEdges(includeOverflows)
 *         if self._config == "idi":             # <<<<<<<<<<<<<<
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 *         if self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3004
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3004, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3005
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3005, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3005, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3005, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3005, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3004
 *         if self._config == "idi":
 *           return self.binned_idi_ptr().zEdges(includeOverflows)
 *         if self._config == "ids":             # <<<<<<<<<<<<<<
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3006
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 *         if self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3006, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3007
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3007, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3007, __pyx_L1_error)
    try {
      __pyx_t_29 = __pyx_t_28->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3007, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3006
 *         if self._config == "ids":
 *           return self.binned_ids_ptr().zEdges(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 *         if self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3008
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 *         if self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3008, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3009
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3009, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3009, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_30->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3009, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_31); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3009, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3008
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zEdges(includeOverflows)
 *         if self._config == "iii":             # <<<<<<<<<<<<<<
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 *         if self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3010
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3010, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3011
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3011, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3011, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3011, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_33); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3010
 *         if self._config == "iii":
 *           return self.binned_iii_ptr().zEdges(includeOverflows)
 *         if self._config == "iis":             # <<<<<<<<<<<<<<
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3012
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 *         if self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3012, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3013
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3013, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3013, __pyx_L1_error)
    try {
      __pyx_t_35 = __pyx_t_34->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3013, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_35); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3013, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3012
 *         if self._config == "iis":
 *           return self.binned_iis_ptr().zEdges(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 *         if self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3014
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 *         if self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3014, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3015
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3015, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3015, __pyx_L1_error)
    try {
      __pyx_t_37 = __pyx_t_36->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3015, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_37); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3015, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3014
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zEdges(includeOverflows)
 *         if self._config == "isi":             # <<<<<<<<<<<<<<
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 *         if self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3016
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3016, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3017
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3017, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3017, __pyx_L1_error)
    try {
      __pyx_t_39 = __pyx_t_38->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3017, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_39); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3016
 *         if self._config == "isi":
 *           return self.binned_isi_ptr().zEdges(includeOverflows)
 *         if self._config == "iss":             # <<<<<<<<<<<<<<
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3018
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3018, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3019
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3019, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3019, __pyx_L1_error)
    try {
      __pyx_t_41 = __pyx_t_40->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3019, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_41); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3018
 *         if self._config == "iss":
 *           return self.binned_iss_ptr().zEdges(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 *         if self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3020
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 *         if self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3020, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3021
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3021, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3021, __pyx_L1_error)
    try {
      __pyx_t_43 = __pyx_t_42->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3021, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_43); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3021, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3020
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zEdges(includeOverflows)
 *         if self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 *         if self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3022
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3022, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3023
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3023, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3023, __pyx_L1_error)
    try {
      __pyx_t_45 = __pyx_t_44->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3023, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_45); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3022
 *         if self._config == "sdi":
 *           return self.binned_sdi_ptr().zEdges(includeOverflows)
 *         if self._config == "sds":             # <<<<<<<<<<<<<<
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3024
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 *         if self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3024, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3025
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3025, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3025, __pyx_L1_error)
    try {
      __pyx_t_47 = __pyx_t_46->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3025, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_47); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3025, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3024
 *         if self._config == "sds":
 *           return self.binned_sds_ptr().zEdges(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 *         if self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3026
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 *         if self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3026, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3027
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3027, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3027, __pyx_L1_error)
    try {
      __pyx_t_49 = __pyx_t_48->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3027, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_49); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3027, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3026
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zEdges(includeOverflows)
 *         if self._config == "sii":             # <<<<<<<<<<<<<<
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 *         if self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3028
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3028, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3029
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3029, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3029, __pyx_L1_error)
    try {
      __pyx_t_51 = __pyx_t_50->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3029, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_51); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3028
 *         if self._config == "sii":
 *           return self.binned_sii_ptr().zEdges(includeOverflows)
 *         if self._config == "sis":             # <<<<<<<<<<<<<<
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3030
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3030, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3031
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3031, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3031, __pyx_L1_error)
    try {
      __pyx_t_53 = __pyx_t_52->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3031, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_53); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3030
 *         if self._config == "sis":
 *           return self.binned_sis_ptr().zEdges(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 *         if self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3032
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 *         if self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3032, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3033
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().zEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3033, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3033, __pyx_L1_error)
    try {
      __pyx_t_55 = __pyx_t_54->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3033, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_55); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3033, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3032
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zEdges(includeOverflows)
 *         if self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 *         if self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3034
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3034, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3035
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3035, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3035, __pyx_L1_error)
    try {
      __pyx_t_57 = __pyx_t_56->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3035, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_57); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3035, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3034
 *         if self._config == "ssi":
 *           return self.binned_ssi_ptr().zEdges(includeOverflows)
 *         if self._config == "sss":             # <<<<<<<<<<<<<<
 *           return self.binned_sss_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3036
 *         if self._config == "sss":
 *           return self.binned_sss_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3036, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2980
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":3039
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_131zWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_130zWidths, "BinnedEstimate3D.zWidths(self, includeOverflows=True)\nzWidths on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_131zWidths = {"zWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_131zWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_130zWidths};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_131zWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3039, __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, "zWidths") < 0)) __PYX_ERR(18, 3039, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(18, 3039, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.zWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_130zWidths(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_130zWidths(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zWidths", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3041
 *     def zWidths(self, includeOverflows=True):
 *         """zWidths on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3041, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3042
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3042, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3042, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3042, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3041
 *     def zWidths(self, includeOverflows=True):
 *         """zWidths on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3043
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3043, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3044
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         if self._config == "did":
 *           return self.binned_did_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3044, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3044, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3044, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3043
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3045
 *         if self._config == "did":
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3045, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3046
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3046, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3046, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3046, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3045
 *         if self._config == "did":
 *           return self.binned_did_ptr().zWidths(includeOverflows)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3047
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3047, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3048
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3048, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3048, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3048, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3048, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3047
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zWidths(includeOverflows)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3049
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3049, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3050
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3050, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3050, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3050, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3049
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zWidths(includeOverflows)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3051
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3051, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3052
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3052, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3052, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3052, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3051
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zWidths(includeOverflows)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3053
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3053, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3054
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3054, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3054, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3054, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3053
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zWidths(includeOverflows)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3055
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3055, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3056
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3056, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3056, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3056, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3055
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zWidths(includeOverflows)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3057
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3057, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3058
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3058, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(18, 3058, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3058, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3057
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zWidths(includeOverflows)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3059
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3059, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3039
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedEstimate3D.pyx":3062
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_133zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_132zMin, "BinnedEstimate3D.zMin(self)\nzMin on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_133zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_133zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_132zMin};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_133zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_132zMin(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_132zMin(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_6;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3064
 *     def zMin(self):
 *         """zMin on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMin()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3064, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3065
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3065, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3065, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3064
 *     def zMin(self):
 *         """zMin on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMin()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3066
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMin()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zMin()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3066, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3067
 *           return self.binned_ddd_ptr().zMin()
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3067, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3067, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3066
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMin()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zMin()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3068
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMin()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zMin()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3068, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3069
 *           return self.binned_did_ptr().zMin()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3069, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3069, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3069, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3068
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMin()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zMin()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3070
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMin()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zMin()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3070, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3071
 *           return self.binned_dsd_ptr().zMin()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3071, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3071, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3071, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3070
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMin()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zMin()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3072
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMin()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zMin()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3072, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3073
 *           return self.binned_idd_ptr().zMin()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3073, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3073, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3073, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3072
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMin()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zMin()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3074
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMin()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zMin()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3074, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3075
 *           return self.binned_iid_ptr().zMin()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3075, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3075, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3075, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3074
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMin()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zMin()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3076
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMin()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zMin()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3076, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3077
 *           return self.binned_isd_ptr().zMin()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3077, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3077, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3077, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3076
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMin()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zMin()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3078
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMin()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zMin()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3078, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3079
 *           return self.binned_sdd_ptr().zMin()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3079, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3079, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3078
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMin()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zMin()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3080
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMin()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3080, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3081
 *           return self.binned_sid_ptr().zMin()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3081, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3081, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3080
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMin()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3082
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3082, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3062
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3085
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_135zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_134zMax, "BinnedEstimate3D.zMax(self)\nzMax on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_135zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_135zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_134zMax};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_135zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_134zMax(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_134zMax(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_6;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3087
 *     def zMax(self):
 *         """zMax on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMax()
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3087, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3088
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3088, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3088, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3087
 *     def zMax(self):
 *         """zMax on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMax()
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3089
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMax()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zMax()
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3089, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3090
 *           return self.binned_ddd_ptr().zMax()
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3090, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3090, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3089
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMax()
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().zMax()
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3091
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMax()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zMax()
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3091, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3092
 *           return self.binned_did_ptr().zMax()
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3092, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3092, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3091
 *         if self._config == "did":
 *           return self.binned_did_ptr().zMax()
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().zMax()
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3093
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMax()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zMax()
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3093, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3094
 *           return self.binned_dsd_ptr().zMax()
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3094, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3094, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3093
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().zMax()
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().zMax()
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3095
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMax()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zMax()
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3095, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3096
 *           return self.binned_idd_ptr().zMax()
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3096, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3096, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3095
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().zMax()
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().zMax()
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3097
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMax()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zMax()
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3097, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3098
 *           return self.binned_iid_ptr().zMax()
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3098, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3098, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3097
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().zMax()
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().zMax()
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3099
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMax()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zMax()
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3099, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3100
 *           return self.binned_isd_ptr().zMax()
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3100, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3100, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3099
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().zMax()
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().zMax()
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3101
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMax()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zMax()
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3101, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3102
 *           return self.binned_sdd_ptr().zMax()
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3102, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3102, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3101
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().zMax()
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().zMax()
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3103
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMax()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3103, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3104
 *           return self.binned_sid_ptr().zMax()
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3104, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3104, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3103
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().zMax()
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3105
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3105, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3085
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3108
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_137rebinZBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_136rebinZBy, "BinnedEstimate3D.rebinZBy(self, n, begin=1, end=sys.maxsize)\nrebinZBy on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_137rebinZBy = {"rebinZBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_137rebinZBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_136rebinZBy};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_137rebinZBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__97);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3108, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3108, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3108, __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, "rebinZBy") < 0)) __PYX_ERR(18, 3108, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(18, 3108, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinZBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_136rebinZBy(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_136rebinZBy(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_8;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_12;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_13;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZBy", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3110
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3110, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3111
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3111, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3111, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3111, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3111, __pyx_L1_error)
    try {
      __pyx_t_2->rebinZBy(__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(18, 3111, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3110
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3112
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3112, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3113
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3113, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3113, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3113, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3113, __pyx_L1_error)
    try {
      __pyx_t_7->rebinZBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3113, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3112
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3114
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3114, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3115
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3115, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3115, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3115, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3115, __pyx_L1_error)
    try {
      __pyx_t_8->rebinZBy(__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(18, 3115, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3114
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZBy(n,begin,end)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3116
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3116, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3117
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3117, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3117, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3117, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3117, __pyx_L1_error)
    try {
      __pyx_t_9->rebinZBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3117, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3116
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3118
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3118, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3119
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3119, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3119, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3119, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3119, __pyx_L1_error)
    try {
      __pyx_t_10->rebinZBy(__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(18, 3119, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3118
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3120
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3120, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3121
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3121, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3121, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3121, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3121, __pyx_L1_error)
    try {
      __pyx_t_11->rebinZBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3121, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3120
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3122
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3122, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3123
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3123, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3123, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3123, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3123, __pyx_L1_error)
    try {
      __pyx_t_12->rebinZBy(__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(18, 3123, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3122
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3124
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3124, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3125
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3125, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3125, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3125, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3125, __pyx_L1_error)
    try {
      __pyx_t_13->rebinZBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3125, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3124
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZBy(n,begin,end)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3126
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3126, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3127
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3127, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(18, 3127, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3127, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 3127, __pyx_L1_error)
    try {
      __pyx_t_14->rebinZBy(__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(18, 3127, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3126
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZBy(n,begin,end)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3128
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3128, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3108
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinZBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3131
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_139rebinZTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_138rebinZTo, "BinnedEstimate3D.rebinZTo(self, edges)\nrebinZTo on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_139rebinZTo = {"rebinZTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_139rebinZTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_138rebinZTo};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_139rebinZTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3131, __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, "rebinZTo") < 0)) __PYX_ERR(18, 3131, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(18, 3131, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinZTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_138rebinZTo(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_138rebinZTo(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_9;
  std::vector<double>  __pyx_t_10;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_11;
  std::vector<double>  __pyx_t_12;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_13;
  std::vector<double>  __pyx_t_14;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_15;
  std::vector<double>  __pyx_t_16;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_17;
  std::vector<double>  __pyx_t_18;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_19;
  std::vector<double>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZTo", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3133
 *     def rebinZTo(self, edges):
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         if self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3133, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3134
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3134, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3134, __pyx_L1_error)
    try {
      __pyx_t_2->rebinZTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3134, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3133
 *     def rebinZTo(self, edges):
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         if self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3135
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinZTo(edges)
 *         if self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3135, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3136
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3136, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3136, __pyx_L1_error)
    try {
      __pyx_t_5->rebinZTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3136, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3135
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         if self._config == "did":             # <<<<<<<<<<<<<<
 *           return self.binned_did_ptr().rebinZTo(edges)
 *         if self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3137
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZTo(edges)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 *         if self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3137, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3138
 *           return self.binned_did_ptr().rebinZTo(edges)
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3138, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3138, __pyx_L1_error)
    try {
      __pyx_t_7->rebinZTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3138, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3137
 *         if self._config == "did":
 *           return self.binned_did_ptr().rebinZTo(edges)
 *         if self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 *         if self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3139
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinZTo(edges)
 *         if self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3139, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3140
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3140, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3140, __pyx_L1_error)
    try {
      __pyx_t_9->rebinZTo(__pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3140, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3139
 *         if self._config == "dsd":
 *           return self.binned_dsd_ptr().rebinZTo(edges)
 *         if self._config == "idd":             # <<<<<<<<<<<<<<
 *           return self.binned_idd_ptr().rebinZTo(edges)
 *         if self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3141
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZTo(edges)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().rebinZTo(edges)
 *         if self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3141, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3142
 *           return self.binned_idd_ptr().rebinZTo(edges)
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3142, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3142, __pyx_L1_error)
    try {
      __pyx_t_11->rebinZTo(__pyx_t_12);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3142, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3141
 *         if self._config == "idd":
 *           return self.binned_idd_ptr().rebinZTo(edges)
 *         if self._config == "iid":             # <<<<<<<<<<<<<<
 *           return self.binned_iid_ptr().rebinZTo(edges)
 *         if self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3143
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZTo(edges)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().rebinZTo(edges)
 *         if self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3143, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3144
 *           return self.binned_iid_ptr().rebinZTo(edges)
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3144, __pyx_L1_error)
    __pyx_t_14 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3144, __pyx_L1_error)
    try {
      __pyx_t_13->rebinZTo(__pyx_t_14);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3144, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3143
 *         if self._config == "iid":
 *           return self.binned_iid_ptr().rebinZTo(edges)
 *         if self._config == "isd":             # <<<<<<<<<<<<<<
 *           return self.binned_isd_ptr().rebinZTo(edges)
 *         if self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3145
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZTo(edges)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 *         if self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3145, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3146
 *           return self.binned_isd_ptr().rebinZTo(edges)
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3146, __pyx_L1_error)
    __pyx_t_16 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3146, __pyx_L1_error)
    try {
      __pyx_t_15->rebinZTo(__pyx_t_16);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3146, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3145
 *         if self._config == "isd":
 *           return self.binned_isd_ptr().rebinZTo(edges)
 *         if self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 *         if self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3147
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().rebinZTo(edges)
 *         if self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3147, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3148
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3148, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3148, __pyx_L1_error)
    try {
      __pyx_t_17->rebinZTo(__pyx_t_18);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3148, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3147
 *         if self._config == "sdd":
 *           return self.binned_sdd_ptr().rebinZTo(edges)
 *         if self._config == "sid":             # <<<<<<<<<<<<<<
 *           return self.binned_sid_ptr().rebinZTo(edges)
 *         if self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3149
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZTo(edges)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3149, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3150
 *           return self.binned_sid_ptr().rebinZTo(edges)
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3150, __pyx_L1_error)
    __pyx_t_20 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3150, __pyx_L1_error)
    try {
      __pyx_t_19->rebinZTo(__pyx_t_20);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(18, 3150, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3149
 *         if self._config == "sid":
 *           return self.binned_sid_ptr().rebinZTo(edges)
 *         if self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return self.binned_ssd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3151
 *         if self._config == "ssd":
 *           return self.binned_ssd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3151, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3131
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedEstimate3D.rebinZTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3154
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_141rebinZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16BinnedEstimate3D_140rebinZ, "BinnedEstimate3D.rebinZ(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_141rebinZ = {"rebinZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_141rebinZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_140rebinZ};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_141rebinZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 3154, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinZ") < 0)) __PYX_ERR(18, 3154, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZ", 0, 1, 1, __pyx_nargs); __PYX_ERR(18, 3154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_140rebinZ(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_140rebinZ(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZ", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3155
 * 
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinZTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 3155, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3156
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinZBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinZTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 3156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(18, 3156, __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/generated/BinnedEstimate3D.pyx":3155
 * 
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinZTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3158
 *             self.rebinZTo(arg)
 *         else:
 *             self.rebinZBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinZBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 3158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(18, 3158, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3158, __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(18, 3158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 3158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedEstimate3D.pyx":3154
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.rebinZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3160
 *             self.rebinZBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_143__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_143__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3160, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_142__add__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_142__add__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_57;
  PyObject *__pyx_t_58 = NULL;
  PyObject *__pyx_t_59 = NULL;
  unsigned int __pyx_t_60;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3161
 * 
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3162
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3161
 * 
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3163
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "ddd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3163, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 3163, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 3163, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":3164
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":3165
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3165, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3166
 *         rtn = None
 *         if self._config == "ddd":
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3166, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3166, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate3D.pyx":3167
 *         if self._config == "ddd":
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3165
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3168
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3168, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3169
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3169, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3169, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":3170
 *         elif self._config == "ddi":
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3168
 *           tmp = c.BE_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3171
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3171, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3172
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3172, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3172, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate3D.pyx":3173
 *         elif self._config == "dds":
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3171
 *           tmp = c.BE_add_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3174
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3174, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3175
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3175, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3175, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedEstimate3D.pyx":3176
 *         elif self._config == "did":
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3174
 *           tmp = c.BE_add_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3177
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3177, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3178
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3178, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3178, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedEstimate3D.pyx":3179
 *         elif self._config == "dii":
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3177
 *           tmp = c.BE_add_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3180
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3180, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3181
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3181, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3181, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":3182
 *         elif self._config == "dis":
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3180
 *           tmp = c.BE_add_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3183
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3183, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3184
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3184, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3184, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":3185
 *         elif self._config == "dsd":
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3183
 *           tmp = c.BE_add_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3186
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3186, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3187
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3187, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3187, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedEstimate3D.pyx":3188
 *         elif self._config == "dsi":
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3186
 *           tmp = c.BE_add_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3189
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3189, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3190
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3190, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3190, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedEstimate3D.pyx":3191
 *         elif self._config == "dss":
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3189
 *           tmp = c.BE_add_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3192
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3192, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3193
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":
 */
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3193, __pyx_L1_error)
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3193, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_22, __pyx_t_23);

    /* "include/generated/BinnedEstimate3D.pyx":3194
 *         elif self._config == "idd":
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3192
 *           tmp = c.BE_add_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3195
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3195, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3196
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":
 */
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3196, __pyx_L1_error)
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3196, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_24, __pyx_t_25);

    /* "include/generated/BinnedEstimate3D.pyx":3197
 *         elif self._config == "idi":
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3195
 *           tmp = c.BE_add_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3198
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3198, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3199
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3199, __pyx_L1_error)
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3199, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_26, __pyx_t_27);

    /* "include/generated/BinnedEstimate3D.pyx":3200
 *         elif self._config == "ids":
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3198
 *           tmp = c.BE_add_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3201
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3201, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3202
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":
 */
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3202, __pyx_L1_error)
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3202, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_28, __pyx_t_29);

    /* "include/generated/BinnedEstimate3D.pyx":3203
 *         elif self._config == "iid":
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3201
 *           tmp = c.BE_add_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3204
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3204, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3205
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":
 */
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3205, __pyx_L1_error)
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3205, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_30, __pyx_t_31);

    /* "include/generated/BinnedEstimate3D.pyx":3206
 *         elif self._config == "iii":
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3204
 *           tmp = c.BE_add_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3207
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3207, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3208
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3208, __pyx_L1_error)
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3208, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_32, __pyx_t_33);

    /* "include/generated/BinnedEstimate3D.pyx":3209
 *         elif self._config == "iis":
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3209, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3207
 *           tmp = c.BE_add_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3210
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3210, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3211
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":
 */
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3211, __pyx_L1_error)
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3211, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_34, __pyx_t_35);

    /* "include/generated/BinnedEstimate3D.pyx":3212
 *         elif self._config == "isd":
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3210
 *           tmp = c.BE_add_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3213
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3213, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3214
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":
 */
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3214, __pyx_L1_error)
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3214, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_36, __pyx_t_37);

    /* "include/generated/BinnedEstimate3D.pyx":3215
 *         elif self._config == "isi":
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3213
 *           tmp = c.BE_add_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3216
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3216, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3217
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":
 */
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3217, __pyx_L1_error)
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3217, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_38, __pyx_t_39);

    /* "include/generated/BinnedEstimate3D.pyx":3218
 *         elif self._config == "iss":
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3216
 *           tmp = c.BE_add_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3219
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3219, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3220
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":
 */
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3220, __pyx_L1_error)
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3220, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_40, __pyx_t_41);

    /* "include/generated/BinnedEstimate3D.pyx":3221
 *         elif self._config == "sdd":
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3219
 *           tmp = c.BE_add_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3222
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3223
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":
 */
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3223, __pyx_L1_error)
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3223, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_42, __pyx_t_43);

    /* "include/generated/BinnedEstimate3D.pyx":3224
 *         elif self._config == "sdi":
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3222
 *           tmp = c.BE_add_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3225
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3225, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3226
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":
 */
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3226, __pyx_L1_error)
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3226, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_44, __pyx_t_45);

    /* "include/generated/BinnedEstimate3D.pyx":3227
 *         elif self._config == "sds":
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3225
 *           tmp = c.BE_add_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3228
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3228, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3229
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":
 */
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3229, __pyx_L1_error)
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3229, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_46, __pyx_t_47);

    /* "include/generated/BinnedEstimate3D.pyx":3230
 *         elif self._config == "sid":
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3228
 *           tmp = c.BE_add_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3231
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3231, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3232
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":
 */
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3232, __pyx_L1_error)
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3232, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_48, __pyx_t_49);

    /* "include/generated/BinnedEstimate3D.pyx":3233
 *         elif self._config == "sii":
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3231
 *           tmp = c.BE_add_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3234
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3234, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3235
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":
 */
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3235, __pyx_L1_error)
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3235, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_50, __pyx_t_51);

    /* "include/generated/BinnedEstimate3D.pyx":3236
 *         elif self._config == "sis":
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3234
 *           tmp = c.BE_add_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3237
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3237, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3238
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":
 */
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3238, __pyx_L1_error)
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3238, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_52, __pyx_t_53);

    /* "include/generated/BinnedEstimate3D.pyx":3239
 *         elif self._config == "ssd":
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3237
 *           tmp = c.BE_add_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3240
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3240, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3241
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":
 */
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3241, __pyx_L1_error)
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3241, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_54, __pyx_t_55);

    /* "include/generated/BinnedEstimate3D.pyx":3242
 *         elif self._config == "ssi":
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3240
 *           tmp = c.BE_add_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3243
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3243, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3244
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3244, __pyx_L1_error)
    __pyx_t_57 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_57 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3244, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_56, __pyx_t_57);

    /* "include/generated/BinnedEstimate3D.pyx":3245
 *         elif self._config == "sss":
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3243
 *           tmp = c.BE_add_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate3D.pyx":3246
 *           tmp = c.BE_add_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_58)) __PYX_ERR(18, 3246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_58);
  __pyx_t_59 = NULL;
  __pyx_t_60 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_58))) {
    __pyx_t_59 = PyMethod_GET_SELF(__pyx_t_58);
    if (likely(__pyx_t_59)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_58);
      __Pyx_INCREF(__pyx_t_59);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_58, function);
      __pyx_t_60 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_59, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_58, __pyx_callargs+1-__pyx_t_60, 1+__pyx_t_60);
    __Pyx_XDECREF(__pyx_t_59); __pyx_t_59 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":3247
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":3160
 *             self.rebinZBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_58);
  __Pyx_XDECREF(__pyx_t_59);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.__add__", __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/generated/BinnedEstimate3D.pyx":3249
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_145__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_145__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3249, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_144__iadd__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_144__iadd__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_4;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3250
 * 
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3251
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3250
 * 
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3252
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3252, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 3252, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 3252, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":3253
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3253, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3254
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3254, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3254, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate3D.pyx":3253
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3255
 *         if self._config == "ddd":
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3255, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3256
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3256, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3256, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate3D.pyx":3255
 *         if self._config == "ddd":
 *           c.BE_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3257
 *         elif self._config == "ddi":
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3257, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3258
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3258, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3258, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":3257
 *         elif self._config == "ddi":
 *           c.BE_iadd_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3259
 *         elif self._config == "dds":
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3259, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3260
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3260, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3260, __pyx_L1_error)
    cython_iadd(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedEstimate3D.pyx":3259
 *         elif self._config == "dds":
 *           c.BE_iadd_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3261
 *         elif self._config == "did":
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3261, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3262
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3262, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3262, __pyx_L1_error)
    cython_iadd(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedEstimate3D.pyx":3261
 *         elif self._config == "did":
 *           c.BE_iadd_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3263
 *         elif self._config == "dii":
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3263, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3264
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3264, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3264, __pyx_L1_error)
    cython_iadd(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedEstimate3D.pyx":3263
 *         elif self._config == "dii":
 *           c.BE_iadd_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3265
 *         elif self._config == "dis":
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3265, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3266
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3266, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3266, __pyx_L1_error)
    cython_iadd(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedEstimate3D.pyx":3265
 *         elif self._config == "dis":
 *           c.BE_iadd_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3267
 *         elif self._config == "dsd":
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3267, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3268
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3268, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3268, __pyx_L1_error)
    cython_iadd(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedEstimate3D.pyx":3267
 *         elif self._config == "dsd":
 *           c.BE_iadd_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3269
 *         elif self._config == "dsi":
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3269, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3270
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3270, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3270, __pyx_L1_error)
    cython_iadd(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedEstimate3D.pyx":3269
 *         elif self._config == "dsi":
 *           c.BE_iadd_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3271
 *         elif self._config == "dss":
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3271, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3272
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3272, __pyx_L1_error)
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3272, __pyx_L1_error)
    cython_iadd(__pyx_t_21, __pyx_t_22);

    /* "include/generated/BinnedEstimate3D.pyx":3271
 *         elif self._config == "dss":
 *           c.BE_iadd_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3273
 *         elif self._config == "idd":
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3273, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3274
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3274, __pyx_L1_error)
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3274, __pyx_L1_error)
    cython_iadd(__pyx_t_23, __pyx_t_24);

    /* "include/generated/BinnedEstimate3D.pyx":3273
 *         elif self._config == "idd":
 *           c.BE_iadd_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3275
 *         elif self._config == "idi":
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3275, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3276
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3276, __pyx_L1_error)
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3276, __pyx_L1_error)
    cython_iadd(__pyx_t_25, __pyx_t_26);

    /* "include/generated/BinnedEstimate3D.pyx":3275
 *         elif self._config == "idi":
 *           c.BE_iadd_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3277
 *         elif self._config == "ids":
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3277, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3278
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3278, __pyx_L1_error)
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3278, __pyx_L1_error)
    cython_iadd(__pyx_t_27, __pyx_t_28);

    /* "include/generated/BinnedEstimate3D.pyx":3277
 *         elif self._config == "ids":
 *           c.BE_iadd_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3279
 *         elif self._config == "iid":
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3279, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3280
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3280, __pyx_L1_error)
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3280, __pyx_L1_error)
    cython_iadd(__pyx_t_29, __pyx_t_30);

    /* "include/generated/BinnedEstimate3D.pyx":3279
 *         elif self._config == "iid":
 *           c.BE_iadd_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3281
 *         elif self._config == "iii":
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3281, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3282
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3282, __pyx_L1_error)
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3282, __pyx_L1_error)
    cython_iadd(__pyx_t_31, __pyx_t_32);

    /* "include/generated/BinnedEstimate3D.pyx":3281
 *         elif self._config == "iii":
 *           c.BE_iadd_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3283
 *         elif self._config == "iis":
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3283, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3284
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3284, __pyx_L1_error)
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3284, __pyx_L1_error)
    cython_iadd(__pyx_t_33, __pyx_t_34);

    /* "include/generated/BinnedEstimate3D.pyx":3283
 *         elif self._config == "iis":
 *           c.BE_iadd_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3285
 *         elif self._config == "isd":
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3285, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3286
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3286, __pyx_L1_error)
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3286, __pyx_L1_error)
    cython_iadd(__pyx_t_35, __pyx_t_36);

    /* "include/generated/BinnedEstimate3D.pyx":3285
 *         elif self._config == "isd":
 *           c.BE_iadd_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3287
 *         elif self._config == "isi":
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3287, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3288
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3288, __pyx_L1_error)
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3288, __pyx_L1_error)
    cython_iadd(__pyx_t_37, __pyx_t_38);

    /* "include/generated/BinnedEstimate3D.pyx":3287
 *         elif self._config == "isi":
 *           c.BE_iadd_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3289
 *         elif self._config == "iss":
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3289, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3290
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3290, __pyx_L1_error)
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3290, __pyx_L1_error)
    cython_iadd(__pyx_t_39, __pyx_t_40);

    /* "include/generated/BinnedEstimate3D.pyx":3289
 *         elif self._config == "iss":
 *           c.BE_iadd_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3291
 *         elif self._config == "sdd":
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3292
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3292, __pyx_L1_error)
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3292, __pyx_L1_error)
    cython_iadd(__pyx_t_41, __pyx_t_42);

    /* "include/generated/BinnedEstimate3D.pyx":3291
 *         elif self._config == "sdd":
 *           c.BE_iadd_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3293
 *         elif self._config == "sdi":
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3294
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3294, __pyx_L1_error)
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3294, __pyx_L1_error)
    cython_iadd(__pyx_t_43, __pyx_t_44);

    /* "include/generated/BinnedEstimate3D.pyx":3293
 *         elif self._config == "sdi":
 *           c.BE_iadd_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3295
 *         elif self._config == "sds":
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3296
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3296, __pyx_L1_error)
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3296, __pyx_L1_error)
    cython_iadd(__pyx_t_45, __pyx_t_46);

    /* "include/generated/BinnedEstimate3D.pyx":3295
 *         elif self._config == "sds":
 *           c.BE_iadd_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3297
 *         elif self._config == "sid":
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3297, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3298
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3298, __pyx_L1_error)
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3298, __pyx_L1_error)
    cython_iadd(__pyx_t_47, __pyx_t_48);

    /* "include/generated/BinnedEstimate3D.pyx":3297
 *         elif self._config == "sid":
 *           c.BE_iadd_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3299
 *         elif self._config == "sii":
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3299, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3300
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3300, __pyx_L1_error)
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3300, __pyx_L1_error)
    cython_iadd(__pyx_t_49, __pyx_t_50);

    /* "include/generated/BinnedEstimate3D.pyx":3299
 *         elif self._config == "sii":
 *           c.BE_iadd_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3301
 *         elif self._config == "sis":
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3301, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3302
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3302, __pyx_L1_error)
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3302, __pyx_L1_error)
    cython_iadd(__pyx_t_51, __pyx_t_52);

    /* "include/generated/BinnedEstimate3D.pyx":3301
 *         elif self._config == "sis":
 *           c.BE_iadd_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3303
 *         elif self._config == "ssd":
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3303, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3304
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           c.BE_iadd_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3304, __pyx_L1_error)
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3304, __pyx_L1_error)
    cython_iadd(__pyx_t_53, __pyx_t_54);

    /* "include/generated/BinnedEstimate3D.pyx":3303
 *         elif self._config == "ssd":
 *           c.BE_iadd_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3305
 *         elif self._config == "ssi":
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3305, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3306
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 *           c.BE_iadd_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3306, __pyx_L1_error)
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3306, __pyx_L1_error)
    cython_iadd(__pyx_t_55, __pyx_t_56);

    /* "include/generated/BinnedEstimate3D.pyx":3305
 *         elif self._config == "ssi":
 *           c.BE_iadd_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           c.BE_iadd_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate3D.pyx":3307
 *         elif self._config == "sss":
 *           c.BE_iadd_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":3249
 *         return rtn
 * 
 *     def __iadd__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate3D.pyx":3309
 *         return self
 * 
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_147__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_147__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3309, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_146__sub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_146__sub__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_57;
  PyObject *__pyx_t_58 = NULL;
  PyObject *__pyx_t_59 = NULL;
  unsigned int __pyx_t_60;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3310
 * 
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3311
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3310
 * 
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3312
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "ddd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3312, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 3312, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 3312, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":3313
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedEstimate3D.pyx":3314
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3315
 *         rtn = None
 *         if self._config == "ddd":
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3315, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3315, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate3D.pyx":3316
 *         if self._config == "ddd":
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3314
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3317
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3317, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3318
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3318, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3318, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedEstimate3D.pyx":3319
 *         elif self._config == "ddi":
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3317
 *           tmp = c.BE_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3320
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3321
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3321, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3321, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedEstimate3D.pyx":3322
 *         elif self._config == "dds":
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3320
 *           tmp = c.BE_sub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3323
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3323, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3324
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3324, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3324, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedEstimate3D.pyx":3325
 *         elif self._config == "did":
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3323
 *           tmp = c.BE_sub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3326
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3327
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3327, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3327, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedEstimate3D.pyx":3328
 *         elif self._config == "dii":
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3326
 *           tmp = c.BE_sub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3329
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3329, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3330
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3330, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3330, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedEstimate3D.pyx":3331
 *         elif self._config == "dis":
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3329
 *           tmp = c.BE_sub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3332
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3333
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3333, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3333, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedEstimate3D.pyx":3334
 *         elif self._config == "dsd":
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3332
 *           tmp = c.BE_sub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3335
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3335, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3336
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3336, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3336, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedEstimate3D.pyx":3337
 *         elif self._config == "dsi":
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3335
 *           tmp = c.BE_sub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3338
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3338, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3339
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3339, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3339, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedEstimate3D.pyx":3340
 *         elif self._config == "dss":
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3338
 *           tmp = c.BE_sub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3341
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3342
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":
 */
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3342, __pyx_L1_error)
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3342, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_22, __pyx_t_23);

    /* "include/generated/BinnedEstimate3D.pyx":3343
 *         elif self._config == "idd":
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3341
 *           tmp = c.BE_sub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3344
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3344, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3345
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":
 */
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3345, __pyx_L1_error)
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3345, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_24, __pyx_t_25);

    /* "include/generated/BinnedEstimate3D.pyx":3346
 *         elif self._config == "idi":
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3344
 *           tmp = c.BE_sub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3347
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3348
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3348, __pyx_L1_error)
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3348, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_26, __pyx_t_27);

    /* "include/generated/BinnedEstimate3D.pyx":3349
 *         elif self._config == "ids":
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3347
 *           tmp = c.BE_sub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3350
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3350, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3351
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":
 */
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3351, __pyx_L1_error)
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3351, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_28, __pyx_t_29);

    /* "include/generated/BinnedEstimate3D.pyx":3352
 *         elif self._config == "iid":
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3350
 *           tmp = c.BE_sub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3353
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3354
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":
 */
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3354, __pyx_L1_error)
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3354, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_30, __pyx_t_31);

    /* "include/generated/BinnedEstimate3D.pyx":3355
 *         elif self._config == "iii":
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3353
 *           tmp = c.BE_sub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3356
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3356, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3357
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3357, __pyx_L1_error)
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3357, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_32, __pyx_t_33);

    /* "include/generated/BinnedEstimate3D.pyx":3358
 *         elif self._config == "iis":
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3356
 *           tmp = c.BE_sub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3359
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3360
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":
 */
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3360, __pyx_L1_error)
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3360, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_34, __pyx_t_35);

    /* "include/generated/BinnedEstimate3D.pyx":3361
 *         elif self._config == "isd":
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3359
 *           tmp = c.BE_sub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3362
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3362, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3363
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":
 */
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3363, __pyx_L1_error)
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3363, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_36, __pyx_t_37);

    /* "include/generated/BinnedEstimate3D.pyx":3364
 *         elif self._config == "isi":
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3362
 *           tmp = c.BE_sub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3365
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3365, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3366
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":
 */
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3366, __pyx_L1_error)
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3366, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_38, __pyx_t_39);

    /* "include/generated/BinnedEstimate3D.pyx":3367
 *         elif self._config == "iss":
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3365
 *           tmp = c.BE_sub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3368
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3368, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3369
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":
 */
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3369, __pyx_L1_error)
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3369, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_40, __pyx_t_41);

    /* "include/generated/BinnedEstimate3D.pyx":3370
 *         elif self._config == "sdd":
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3370, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3368
 *           tmp = c.BE_sub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3371
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3371, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3372
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":
 */
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3372, __pyx_L1_error)
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3372, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_42, __pyx_t_43);

    /* "include/generated/BinnedEstimate3D.pyx":3373
 *         elif self._config == "sdi":
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3371
 *           tmp = c.BE_sub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3374
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3375
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":
 */
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3375, __pyx_L1_error)
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3375, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_44, __pyx_t_45);

    /* "include/generated/BinnedEstimate3D.pyx":3376
 *         elif self._config == "sds":
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3374
 *           tmp = c.BE_sub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3377
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3377, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3378
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":
 */
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3378, __pyx_L1_error)
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3378, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_46, __pyx_t_47);

    /* "include/generated/BinnedEstimate3D.pyx":3379
 *         elif self._config == "sid":
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3377
 *           tmp = c.BE_sub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3380
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3380, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3381
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":
 */
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3381, __pyx_L1_error)
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3381, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_48, __pyx_t_49);

    /* "include/generated/BinnedEstimate3D.pyx":3382
 *         elif self._config == "sii":
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3380
 *           tmp = c.BE_sub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3383
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3383, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3384
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":
 */
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3384, __pyx_L1_error)
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3384, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_50, __pyx_t_51);

    /* "include/generated/BinnedEstimate3D.pyx":3385
 *         elif self._config == "sis":
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3383
 *           tmp = c.BE_sub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3386
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3387
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":
 */
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3387, __pyx_L1_error)
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3387, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_52, __pyx_t_53);

    /* "include/generated/BinnedEstimate3D.pyx":3388
 *         elif self._config == "ssd":
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3386
 *           tmp = c.BE_sub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3389
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3389, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3390
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":
 */
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3390, __pyx_L1_error)
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3390, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_54, __pyx_t_55);

    /* "include/generated/BinnedEstimate3D.pyx":3391
 *         elif self._config == "ssi":
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3389
 *           tmp = c.BE_sub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3392
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3392, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3393
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3393, __pyx_L1_error)
    __pyx_t_57 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_57 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3393, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_56, __pyx_t_57);

    /* "include/generated/BinnedEstimate3D.pyx":3394
 *         elif self._config == "sss":
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedEstimate3D.pyx":3392
 *           tmp = c.BE_sub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate3D.pyx":3395
 *           tmp = c.BE_sub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_58)) __PYX_ERR(18, 3395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_58);
  __pyx_t_59 = NULL;
  __pyx_t_60 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_58))) {
    __pyx_t_59 = PyMethod_GET_SELF(__pyx_t_58);
    if (likely(__pyx_t_59)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_58);
      __Pyx_INCREF(__pyx_t_59);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_58, function);
      __pyx_t_60 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_59, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_58, __pyx_callargs+1-__pyx_t_60, 1+__pyx_t_60);
    __Pyx_XDECREF(__pyx_t_59); __pyx_t_59 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 3395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":3396
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":3309
 *         return self
 * 
 *     def __sub__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_58);
  __Pyx_XDECREF(__pyx_t_59);
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.__sub__", __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/generated/BinnedEstimate3D.pyx":3398
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_149__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_149__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3398, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_148__isub__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_148__isub__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_4;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3399
 * 
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3400
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3399
 * 
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3401
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3401, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(18, 3401, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(18, 3401, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedEstimate3D.pyx":3402
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3402, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3403
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3403, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3403, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedEstimate3D.pyx":3402
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3404
 *         if self._config == "ddd":
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3404, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3405
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3405, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3405, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedEstimate3D.pyx":3404
 *         if self._config == "ddd":
 *           c.BE_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3406
 *         elif self._config == "ddi":
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3406, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3407
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3407, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3407, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedEstimate3D.pyx":3406
 *         elif self._config == "ddi":
 *           c.BE_isub_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3408
 *         elif self._config == "dds":
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3408, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3409
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3409, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3409, __pyx_L1_error)
    cython_isub(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedEstimate3D.pyx":3408
 *         elif self._config == "dds":
 *           c.BE_isub_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3410
 *         elif self._config == "did":
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3410, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3411
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3411, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3411, __pyx_L1_error)
    cython_isub(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedEstimate3D.pyx":3410
 *         elif self._config == "did":
 *           c.BE_isub_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3412
 *         elif self._config == "dii":
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3412, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3413
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3413, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3413, __pyx_L1_error)
    cython_isub(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedEstimate3D.pyx":3412
 *         elif self._config == "dii":
 *           c.BE_isub_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3414
 *         elif self._config == "dis":
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3414, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3415
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3415, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3415, __pyx_L1_error)
    cython_isub(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedEstimate3D.pyx":3414
 *         elif self._config == "dis":
 *           c.BE_isub_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3416
 *         elif self._config == "dsd":
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3417
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3417, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3417, __pyx_L1_error)
    cython_isub(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedEstimate3D.pyx":3416
 *         elif self._config == "dsd":
 *           c.BE_isub_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3418
 *         elif self._config == "dsi":
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3418, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3419
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3419, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3419, __pyx_L1_error)
    cython_isub(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedEstimate3D.pyx":3418
 *         elif self._config == "dsi":
 *           c.BE_isub_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3420
 *         elif self._config == "dss":
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3421
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3421, __pyx_L1_error)
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3421, __pyx_L1_error)
    cython_isub(__pyx_t_21, __pyx_t_22);

    /* "include/generated/BinnedEstimate3D.pyx":3420
 *         elif self._config == "dss":
 *           c.BE_isub_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3422
 *         elif self._config == "idd":
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3422, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3423
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3423, __pyx_L1_error)
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3423, __pyx_L1_error)
    cython_isub(__pyx_t_23, __pyx_t_24);

    /* "include/generated/BinnedEstimate3D.pyx":3422
 *         elif self._config == "idd":
 *           c.BE_isub_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3424
 *         elif self._config == "idi":
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3424, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3425
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3425, __pyx_L1_error)
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3425, __pyx_L1_error)
    cython_isub(__pyx_t_25, __pyx_t_26);

    /* "include/generated/BinnedEstimate3D.pyx":3424
 *         elif self._config == "idi":
 *           c.BE_isub_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3426
 *         elif self._config == "ids":
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3427
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3427, __pyx_L1_error)
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3427, __pyx_L1_error)
    cython_isub(__pyx_t_27, __pyx_t_28);

    /* "include/generated/BinnedEstimate3D.pyx":3426
 *         elif self._config == "ids":
 *           c.BE_isub_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3428
 *         elif self._config == "iid":
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3429
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3429, __pyx_L1_error)
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3429, __pyx_L1_error)
    cython_isub(__pyx_t_29, __pyx_t_30);

    /* "include/generated/BinnedEstimate3D.pyx":3428
 *         elif self._config == "iid":
 *           c.BE_isub_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3430
 *         elif self._config == "iii":
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3431
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3431, __pyx_L1_error)
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3431, __pyx_L1_error)
    cython_isub(__pyx_t_31, __pyx_t_32);

    /* "include/generated/BinnedEstimate3D.pyx":3430
 *         elif self._config == "iii":
 *           c.BE_isub_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3432
 *         elif self._config == "iis":
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3433
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3433, __pyx_L1_error)
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3433, __pyx_L1_error)
    cython_isub(__pyx_t_33, __pyx_t_34);

    /* "include/generated/BinnedEstimate3D.pyx":3432
 *         elif self._config == "iis":
 *           c.BE_isub_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3434
 *         elif self._config == "isd":
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3434, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3435
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3435, __pyx_L1_error)
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3435, __pyx_L1_error)
    cython_isub(__pyx_t_35, __pyx_t_36);

    /* "include/generated/BinnedEstimate3D.pyx":3434
 *         elif self._config == "isd":
 *           c.BE_isub_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3436
 *         elif self._config == "isi":
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3437
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3437, __pyx_L1_error)
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3437, __pyx_L1_error)
    cython_isub(__pyx_t_37, __pyx_t_38);

    /* "include/generated/BinnedEstimate3D.pyx":3436
 *         elif self._config == "isi":
 *           c.BE_isub_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3438
 *         elif self._config == "iss":
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3438, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3439
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3439, __pyx_L1_error)
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3439, __pyx_L1_error)
    cython_isub(__pyx_t_39, __pyx_t_40);

    /* "include/generated/BinnedEstimate3D.pyx":3438
 *         elif self._config == "iss":
 *           c.BE_isub_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3440
 *         elif self._config == "sdd":
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3440, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3441
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3441, __pyx_L1_error)
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3441, __pyx_L1_error)
    cython_isub(__pyx_t_41, __pyx_t_42);

    /* "include/generated/BinnedEstimate3D.pyx":3440
 *         elif self._config == "sdd":
 *           c.BE_isub_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3442
 *         elif self._config == "sdi":
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3442, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3443
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3443, __pyx_L1_error)
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3443, __pyx_L1_error)
    cython_isub(__pyx_t_43, __pyx_t_44);

    /* "include/generated/BinnedEstimate3D.pyx":3442
 *         elif self._config == "sdi":
 *           c.BE_isub_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3444
 *         elif self._config == "sds":
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3444, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3445
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3445, __pyx_L1_error)
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3445, __pyx_L1_error)
    cython_isub(__pyx_t_45, __pyx_t_46);

    /* "include/generated/BinnedEstimate3D.pyx":3444
 *         elif self._config == "sds":
 *           c.BE_isub_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3446
 *         elif self._config == "sid":
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3446, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3447
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3447, __pyx_L1_error)
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3447, __pyx_L1_error)
    cython_isub(__pyx_t_47, __pyx_t_48);

    /* "include/generated/BinnedEstimate3D.pyx":3446
 *         elif self._config == "sid":
 *           c.BE_isub_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3448
 *         elif self._config == "sii":
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3448, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3449
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3449, __pyx_L1_error)
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3449, __pyx_L1_error)
    cython_isub(__pyx_t_49, __pyx_t_50);

    /* "include/generated/BinnedEstimate3D.pyx":3448
 *         elif self._config == "sii":
 *           c.BE_isub_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3450
 *         elif self._config == "sis":
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3450, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3451
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3451, __pyx_L1_error)
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3451, __pyx_L1_error)
    cython_isub(__pyx_t_51, __pyx_t_52);

    /* "include/generated/BinnedEstimate3D.pyx":3450
 *         elif self._config == "sis":
 *           c.BE_isub_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3452
 *         elif self._config == "ssd":
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3452, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3453
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           c.BE_isub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3453, __pyx_L1_error)
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3453, __pyx_L1_error)
    cython_isub(__pyx_t_53, __pyx_t_54);

    /* "include/generated/BinnedEstimate3D.pyx":3452
 *         elif self._config == "ssd":
 *           c.BE_isub_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedEstimate3D.pyx":3454
 *         elif self._config == "ssi":
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3454, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3455
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 *           c.BE_isub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3455, __pyx_L1_error)
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3455, __pyx_L1_error)
    cython_isub(__pyx_t_55, __pyx_t_56);

    /* "include/generated/BinnedEstimate3D.pyx":3454
 *         elif self._config == "ssi":
 *           c.BE_isub_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           c.BE_isub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedEstimate3D.pyx":3456
 *         elif self._config == "sss":
 *           c.BE_isub_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedEstimate3D.pyx":3398
 *         return rtn
 * 
 *     def __isub__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedEstimate3D.pyx":3458
 *         return self
 * 
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_151__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_151__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3458, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_150__eq__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_150__eq__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3459
 * 
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3460
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3460, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3460, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3459
 * 
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3461
 *         if self._config == "ddd":
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3461, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3462
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3462, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3462, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3461
 *         if self._config == "ddd":
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3463
 *         elif self._config == "ddi":
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3463, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3464
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3464, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3464, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3463
 *         elif self._config == "ddi":
 *           return c.BE_eq_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3465
 *         elif self._config == "dds":
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3465, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3466
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3466, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3466, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3465
 *         elif self._config == "dds":
 *           return c.BE_eq_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3467
 *         elif self._config == "did":
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3467, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3468
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3468, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3468, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3467
 *         elif self._config == "did":
 *           return c.BE_eq_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3469
 *         elif self._config == "dii":
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3469, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3470
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3470, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3470, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3469
 *         elif self._config == "dii":
 *           return c.BE_eq_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3471
 *         elif self._config == "dis":
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3471, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3472
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3472, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3472, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3471
 *         elif self._config == "dis":
 *           return c.BE_eq_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3473
 *         elif self._config == "dsd":
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3473, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3474
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3474, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3474, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3473
 *         elif self._config == "dsd":
 *           return c.BE_eq_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3475
 *         elif self._config == "dsi":
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3475, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3476
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3476, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3476, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3475
 *         elif self._config == "dsi":
 *           return c.BE_eq_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3477
 *         elif self._config == "dss":
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3477, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3478
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3478, __pyx_L1_error)
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3478, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_21, __pyx_t_22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3477
 *         elif self._config == "dss":
 *           return c.BE_eq_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3479
 *         elif self._config == "idd":
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3479, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3480
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3480, __pyx_L1_error)
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3480, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_23, __pyx_t_24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3479
 *         elif self._config == "idd":
 *           return c.BE_eq_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3481
 *         elif self._config == "idi":
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3481, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3482
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3482, __pyx_L1_error)
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3482, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_25, __pyx_t_26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3481
 *         elif self._config == "idi":
 *           return c.BE_eq_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3483
 *         elif self._config == "ids":
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3483, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3484
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3484, __pyx_L1_error)
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3484, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_27, __pyx_t_28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3483
 *         elif self._config == "ids":
 *           return c.BE_eq_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3485
 *         elif self._config == "iid":
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3485, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3486
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3486, __pyx_L1_error)
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3486, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_29, __pyx_t_30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3485
 *         elif self._config == "iid":
 *           return c.BE_eq_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3487
 *         elif self._config == "iii":
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3487, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3488
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3488, __pyx_L1_error)
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3488, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_31, __pyx_t_32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3487
 *         elif self._config == "iii":
 *           return c.BE_eq_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3489
 *         elif self._config == "iis":
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3489, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3490
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3490, __pyx_L1_error)
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3490, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_33, __pyx_t_34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3489
 *         elif self._config == "iis":
 *           return c.BE_eq_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3491
 *         elif self._config == "isd":
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3491, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3492
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3492, __pyx_L1_error)
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3492, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_35, __pyx_t_36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3491
 *         elif self._config == "isd":
 *           return c.BE_eq_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3493
 *         elif self._config == "isi":
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3493, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3494
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3494, __pyx_L1_error)
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3494, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_37, __pyx_t_38)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3493
 *         elif self._config == "isi":
 *           return c.BE_eq_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3495
 *         elif self._config == "iss":
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3495, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3496
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3496, __pyx_L1_error)
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3496, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_39, __pyx_t_40)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3495
 *         elif self._config == "iss":
 *           return c.BE_eq_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3497
 *         elif self._config == "sdd":
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3497, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3498
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3498, __pyx_L1_error)
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3498, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_41, __pyx_t_42)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3497
 *         elif self._config == "sdd":
 *           return c.BE_eq_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3499
 *         elif self._config == "sdi":
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3499, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3500
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3500, __pyx_L1_error)
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3500, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_43, __pyx_t_44)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3499
 *         elif self._config == "sdi":
 *           return c.BE_eq_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3501
 *         elif self._config == "sds":
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3501, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3502
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3502, __pyx_L1_error)
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3502, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_45, __pyx_t_46)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3501
 *         elif self._config == "sds":
 *           return c.BE_eq_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3503
 *         elif self._config == "sid":
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3503, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3504
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3504, __pyx_L1_error)
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3504, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_47, __pyx_t_48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3503
 *         elif self._config == "sid":
 *           return c.BE_eq_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3505
 *         elif self._config == "sii":
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3505, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3506
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3506, __pyx_L1_error)
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3506, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_49, __pyx_t_50)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3505
 *         elif self._config == "sii":
 *           return c.BE_eq_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3507
 *         elif self._config == "sis":
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3507, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3508
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3508, __pyx_L1_error)
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3508, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_51, __pyx_t_52)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3507
 *         elif self._config == "sis":
 *           return c.BE_eq_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3509
 *         elif self._config == "ssd":
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3509, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3510
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           return c.BE_eq_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3510, __pyx_L1_error)
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3510, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_53, __pyx_t_54)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3510, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3509
 *         elif self._config == "ssd":
 *           return c.BE_eq_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3511
 *         elif self._config == "ssi":
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3511, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3512
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 *           return c.BE_eq_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3512, __pyx_L1_error)
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3512, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_55, __pyx_t_56)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3511
 *         elif self._config == "ssi":
 *           return c.BE_eq_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return c.BE_eq_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3513
 *         elif self._config == "sss":
 *           return c.BE_eq_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3513, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3458
 *         return self
 * 
 *     def __eq__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BE_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

  /* 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.BinnedEstimate3D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":3515
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_153__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_153__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedEstimate3D, 1, "other", 0))) __PYX_ERR(18, 3515, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_152__ne__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__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_16BinnedEstimate3D_152__ne__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_5;
  YODA::BinnedEstimate3D<double,double,int>  *__pyx_t_6;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_7;
  YODA::BinnedEstimate3D<double,double,std::string>  *__pyx_t_8;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_9;
  YODA::BinnedEstimate3D<double,int,double>  *__pyx_t_10;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_11;
  YODA::BinnedEstimate3D<double,int,int>  *__pyx_t_12;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_13;
  YODA::BinnedEstimate3D<double,int,std::string>  *__pyx_t_14;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_15;
  YODA::BinnedEstimate3D<double,std::string,double>  *__pyx_t_16;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_17;
  YODA::BinnedEstimate3D<double,std::string,int>  *__pyx_t_18;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_19;
  YODA::BinnedEstimate3D<double,std::string,std::string>  *__pyx_t_20;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_21;
  YODA::BinnedEstimate3D<int,double,double>  *__pyx_t_22;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_23;
  YODA::BinnedEstimate3D<int,double,int>  *__pyx_t_24;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_25;
  YODA::BinnedEstimate3D<int,double,std::string>  *__pyx_t_26;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_27;
  YODA::BinnedEstimate3D<int,int,double>  *__pyx_t_28;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_29;
  YODA::BinnedEstimate3D<int,int,int>  *__pyx_t_30;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_31;
  YODA::BinnedEstimate3D<int,int,std::string>  *__pyx_t_32;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_33;
  YODA::BinnedEstimate3D<int,std::string,double>  *__pyx_t_34;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_35;
  YODA::BinnedEstimate3D<int,std::string,int>  *__pyx_t_36;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_37;
  YODA::BinnedEstimate3D<int,std::string,std::string>  *__pyx_t_38;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_39;
  YODA::BinnedEstimate3D<std::string,double,double>  *__pyx_t_40;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_41;
  YODA::BinnedEstimate3D<std::string,double,int>  *__pyx_t_42;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_43;
  YODA::BinnedEstimate3D<std::string,double,std::string>  *__pyx_t_44;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_45;
  YODA::BinnedEstimate3D<std::string,int,double>  *__pyx_t_46;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_47;
  YODA::BinnedEstimate3D<std::string,int,int>  *__pyx_t_48;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_49;
  YODA::BinnedEstimate3D<std::string,int,std::string>  *__pyx_t_50;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_51;
  YODA::BinnedEstimate3D<std::string,std::string,double>  *__pyx_t_52;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_53;
  YODA::BinnedEstimate3D<std::string,std::string,int>  *__pyx_t_54;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_55;
  YODA::BinnedEstimate3D<std::string,std::string,std::string>  *__pyx_t_56;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedEstimate3D.pyx":3516
 * 
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3516, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3517
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ddi":
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3517, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedEstimate3D<double,double,double>  *)NULL))) __PYX_ERR(18, 3517, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3516
 * 
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3518
 *         if self._config == "ddd":
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3518, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3519
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dds":
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3519, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedEstimate3D<double,double,int>  *)NULL))) __PYX_ERR(18, 3519, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3518
 *         if self._config == "ddd":
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         elif self._config == "ddi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3520
 *         elif self._config == "ddi":
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3520, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3521
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "did":
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3521, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedEstimate3D<double,double,std::string>  *)NULL))) __PYX_ERR(18, 3521, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3520
 *         elif self._config == "ddi":
 *           return c.BE_ne_ddi(self.binned_ddi_ptr(), other.binned_ddi_ptr())
 *         elif self._config == "dds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3522
 *         elif self._config == "dds":
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_did, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3522, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3523
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dii":
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3523, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedEstimate3D<double,int,double>  *)NULL))) __PYX_ERR(18, 3523, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3522
 *         elif self._config == "dds":
 *           return c.BE_ne_dds(self.binned_dds_ptr(), other.binned_dds_ptr())
 *         elif self._config == "did":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3524
 *         elif self._config == "did":
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3525
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dis":
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3525, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedEstimate3D<double,int,int>  *)NULL))) __PYX_ERR(18, 3525, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3524
 *         elif self._config == "did":
 *           return c.BE_ne_did(self.binned_did_ptr(), other.binned_did_ptr())
 *         elif self._config == "dii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3526
 *         elif self._config == "dii":
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3526, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3527
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsd":
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3527, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedEstimate3D<double,int,std::string>  *)NULL))) __PYX_ERR(18, 3527, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3526
 *         elif self._config == "dii":
 *           return c.BE_ne_dii(self.binned_dii_ptr(), other.binned_dii_ptr())
 *         elif self._config == "dis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3528
 *         elif self._config == "dis":
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3528, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3529
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dsi":
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3529, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedEstimate3D<double,std::string,double>  *)NULL))) __PYX_ERR(18, 3529, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3528
 *         elif self._config == "dis":
 *           return c.BE_ne_dis(self.binned_dis_ptr(), other.binned_dis_ptr())
 *         elif self._config == "dsd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3530
 *         elif self._config == "dsd":
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dsi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3530, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3531
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "dss":
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3531, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedEstimate3D<double,std::string,int>  *)NULL))) __PYX_ERR(18, 3531, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3530
 *         elif self._config == "dsd":
 *           return c.BE_ne_dsd(self.binned_dsd_ptr(), other.binned_dsd_ptr())
 *         elif self._config == "dsi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3532
 *         elif self._config == "dsi":
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3532, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3533
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idd":
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3533, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedEstimate3D<double,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3533, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3532
 *         elif self._config == "dsi":
 *           return c.BE_ne_dsi(self.binned_dsi_ptr(), other.binned_dsi_ptr())
 *         elif self._config == "dss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3534
 *         elif self._config == "dss":
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3535
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "idi":
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3535, __pyx_L1_error)
    __pyx_t_22 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr(__pyx_v_other); if (unlikely(__pyx_t_22 == ((YODA::BinnedEstimate3D<int,double,double>  *)NULL))) __PYX_ERR(18, 3535, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_21, __pyx_t_22)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3534
 *         elif self._config == "dss":
 *           return c.BE_ne_dss(self.binned_dss_ptr(), other.binned_dss_ptr())
 *         elif self._config == "idd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3536
 *         elif self._config == "idd":
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_idi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3537
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ids":
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_23 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3537, __pyx_L1_error)
    __pyx_t_24 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr(__pyx_v_other); if (unlikely(__pyx_t_24 == ((YODA::BinnedEstimate3D<int,double,int>  *)NULL))) __PYX_ERR(18, 3537, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_23, __pyx_t_24)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3536
 *         elif self._config == "idd":
 *           return c.BE_ne_idd(self.binned_idd_ptr(), other.binned_idd_ptr())
 *         elif self._config == "idi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3538
 *         elif self._config == "idi":
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3538, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3539
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iid":
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_25 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_self); if (unlikely(__pyx_t_25 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3539, __pyx_L1_error)
    __pyx_t_26 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr(__pyx_v_other); if (unlikely(__pyx_t_26 == ((YODA::BinnedEstimate3D<int,double,std::string>  *)NULL))) __PYX_ERR(18, 3539, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_25, __pyx_t_26)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3538
 *         elif self._config == "idi":
 *           return c.BE_ne_idi(self.binned_idi_ptr(), other.binned_idi_ptr())
 *         elif self._config == "ids":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3540
 *         elif self._config == "ids":
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3540, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3541
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iii":
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_27 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_self); if (unlikely(__pyx_t_27 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3541, __pyx_L1_error)
    __pyx_t_28 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr(__pyx_v_other); if (unlikely(__pyx_t_28 == ((YODA::BinnedEstimate3D<int,int,double>  *)NULL))) __PYX_ERR(18, 3541, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_27, __pyx_t_28)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3540
 *         elif self._config == "ids":
 *           return c.BE_ne_ids(self.binned_ids_ptr(), other.binned_ids_ptr())
 *         elif self._config == "iid":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3542
 *         elif self._config == "iid":
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3542, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3543
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iis":
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_29 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3543, __pyx_L1_error)
    __pyx_t_30 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr(__pyx_v_other); if (unlikely(__pyx_t_30 == ((YODA::BinnedEstimate3D<int,int,int>  *)NULL))) __PYX_ERR(18, 3543, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_29, __pyx_t_30)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3542
 *         elif self._config == "iid":
 *           return c.BE_ne_iid(self.binned_iid_ptr(), other.binned_iid_ptr())
 *         elif self._config == "iii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3544
 *         elif self._config == "iii":
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3544, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3545
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isd":
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_31 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_self); if (unlikely(__pyx_t_31 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3545, __pyx_L1_error)
    __pyx_t_32 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr(__pyx_v_other); if (unlikely(__pyx_t_32 == ((YODA::BinnedEstimate3D<int,int,std::string>  *)NULL))) __PYX_ERR(18, 3545, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_31, __pyx_t_32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3544
 *         elif self._config == "iii":
 *           return c.BE_ne_iii(self.binned_iii_ptr(), other.binned_iii_ptr())
 *         elif self._config == "iis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3546
 *         elif self._config == "iis":
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3546, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3547
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "isi":
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_33 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_self); if (unlikely(__pyx_t_33 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3547, __pyx_L1_error)
    __pyx_t_34 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr(__pyx_v_other); if (unlikely(__pyx_t_34 == ((YODA::BinnedEstimate3D<int,std::string,double>  *)NULL))) __PYX_ERR(18, 3547, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_33, __pyx_t_34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3546
 *         elif self._config == "iis":
 *           return c.BE_ne_iis(self.binned_iis_ptr(), other.binned_iis_ptr())
 *         elif self._config == "isd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3548
 *         elif self._config == "isd":
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_isi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3548, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3549
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "iss":
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_35 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_self); if (unlikely(__pyx_t_35 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3549, __pyx_L1_error)
    __pyx_t_36 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr(__pyx_v_other); if (unlikely(__pyx_t_36 == ((YODA::BinnedEstimate3D<int,std::string,int>  *)NULL))) __PYX_ERR(18, 3549, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_35, __pyx_t_36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3548
 *         elif self._config == "isd":
 *           return c.BE_ne_isd(self.binned_isd_ptr(), other.binned_isd_ptr())
 *         elif self._config == "isi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3550
 *         elif self._config == "isi":
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_iss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3550, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3551
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdd":
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_37 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_self); if (unlikely(__pyx_t_37 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3551, __pyx_L1_error)
    __pyx_t_38 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr(__pyx_v_other); if (unlikely(__pyx_t_38 == ((YODA::BinnedEstimate3D<int,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3551, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_37, __pyx_t_38)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3550
 *         elif self._config == "isi":
 *           return c.BE_ne_isi(self.binned_isi_ptr(), other.binned_isi_ptr())
 *         elif self._config == "iss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3552
 *         elif self._config == "iss":
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3552, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3553
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sdi":
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_39 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_self); if (unlikely(__pyx_t_39 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3553, __pyx_L1_error)
    __pyx_t_40 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr(__pyx_v_other); if (unlikely(__pyx_t_40 == ((YODA::BinnedEstimate3D<std::string,double,double>  *)NULL))) __PYX_ERR(18, 3553, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_39, __pyx_t_40)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3552
 *         elif self._config == "iss":
 *           return c.BE_ne_iss(self.binned_iss_ptr(), other.binned_iss_ptr())
 *         elif self._config == "sdd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3554
 *         elif self._config == "sdd":
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sdi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3554, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3555
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sds":
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_41 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_self); if (unlikely(__pyx_t_41 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3555, __pyx_L1_error)
    __pyx_t_42 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr(__pyx_v_other); if (unlikely(__pyx_t_42 == ((YODA::BinnedEstimate3D<std::string,double,int>  *)NULL))) __PYX_ERR(18, 3555, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_41, __pyx_t_42)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3554
 *         elif self._config == "sdd":
 *           return c.BE_ne_sdd(self.binned_sdd_ptr(), other.binned_sdd_ptr())
 *         elif self._config == "sdi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3556
 *         elif self._config == "sdi":
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3556, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3557
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sid":
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_43 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_self); if (unlikely(__pyx_t_43 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3557, __pyx_L1_error)
    __pyx_t_44 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr(__pyx_v_other); if (unlikely(__pyx_t_44 == ((YODA::BinnedEstimate3D<std::string,double,std::string>  *)NULL))) __PYX_ERR(18, 3557, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_43, __pyx_t_44)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3556
 *         elif self._config == "sdi":
 *           return c.BE_ne_sdi(self.binned_sdi_ptr(), other.binned_sdi_ptr())
 *         elif self._config == "sds":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3558
 *         elif self._config == "sds":
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sid, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3558, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3559
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sii":
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_45 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_self); if (unlikely(__pyx_t_45 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3559, __pyx_L1_error)
    __pyx_t_46 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr(__pyx_v_other); if (unlikely(__pyx_t_46 == ((YODA::BinnedEstimate3D<std::string,int,double>  *)NULL))) __PYX_ERR(18, 3559, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_45, __pyx_t_46)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3558
 *         elif self._config == "sds":
 *           return c.BE_ne_sds(self.binned_sds_ptr(), other.binned_sds_ptr())
 *         elif self._config == "sid":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3560
 *         elif self._config == "sid":
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3560, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3561
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sis":
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_47 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_self); if (unlikely(__pyx_t_47 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3561, __pyx_L1_error)
    __pyx_t_48 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr(__pyx_v_other); if (unlikely(__pyx_t_48 == ((YODA::BinnedEstimate3D<std::string,int,int>  *)NULL))) __PYX_ERR(18, 3561, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_47, __pyx_t_48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3560
 *         elif self._config == "sid":
 *           return c.BE_ne_sid(self.binned_sid_ptr(), other.binned_sid_ptr())
 *         elif self._config == "sii":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3562
 *         elif self._config == "sii":
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sis, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3562, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3563
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssd":
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_49 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_self); if (unlikely(__pyx_t_49 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3563, __pyx_L1_error)
    __pyx_t_50 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr(__pyx_v_other); if (unlikely(__pyx_t_50 == ((YODA::BinnedEstimate3D<std::string,int,std::string>  *)NULL))) __PYX_ERR(18, 3563, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_49, __pyx_t_50)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3562
 *         elif self._config == "sii":
 *           return c.BE_ne_sii(self.binned_sii_ptr(), other.binned_sii_ptr())
 *         elif self._config == "sis":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3564
 *         elif self._config == "sis":
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3564, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3565
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ssi":
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_51 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_self); if (unlikely(__pyx_t_51 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3565, __pyx_L1_error)
    __pyx_t_52 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr(__pyx_v_other); if (unlikely(__pyx_t_52 == ((YODA::BinnedEstimate3D<std::string,std::string,double>  *)NULL))) __PYX_ERR(18, 3565, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_51, __pyx_t_52)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3564
 *         elif self._config == "sis":
 *           return c.BE_ne_sis(self.binned_sis_ptr(), other.binned_sis_ptr())
 *         elif self._config == "ssd":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3566
 *         elif self._config == "ssd":
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ssi, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3566, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3567
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sss":
 *           return c.BE_ne_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_53 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_self); if (unlikely(__pyx_t_53 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3567, __pyx_L1_error)
    __pyx_t_54 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr(__pyx_v_other); if (unlikely(__pyx_t_54 == ((YODA::BinnedEstimate3D<std::string,std::string,int>  *)NULL))) __PYX_ERR(18, 3567, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_53, __pyx_t_54)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3566
 *         elif self._config == "ssd":
 *           return c.BE_ne_ssd(self.binned_ssd_ptr(), other.binned_ssd_ptr())
 *         elif self._config == "ssi":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3568
 *         elif self._config == "ssi":
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 3568, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedEstimate3D.pyx":3569
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":
 *           return c.BE_ne_sss(self.binned_sss_ptr(), other.binned_sss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_55 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_self); if (unlikely(__pyx_t_55 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3569, __pyx_L1_error)
    __pyx_t_56 = __pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr(__pyx_v_other); if (unlikely(__pyx_t_56 == ((YODA::BinnedEstimate3D<std::string,std::string,std::string>  *)NULL))) __PYX_ERR(18, 3569, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_55, __pyx_t_56)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedEstimate3D.pyx":3568
 *         elif self._config == "ssi":
 *           return c.BE_ne_ssi(self.binned_ssi_ptr(), other.binned_ssi_ptr())
 *         elif self._config == "sss":             # <<<<<<<<<<<<<<
 *           return c.BE_ne_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedEstimate3D.pyx":3570
 *         elif self._config == "sss":
 *           return c.BE_ne_sss(self.binned_sss_ptr(), other.binned_sss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(18, 3570, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3515
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedEstimate3D self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BE_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

  /* 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.BinnedEstimate3D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedEstimate3D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(18, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedEstimate3D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedEstimate3D[double,double,double]* binned_ddd_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_16BinnedEstimate3D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_16BinnedEstimate3D_155__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_16BinnedEstimate3D_154__reduce_cython__, "BinnedEstimate3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_155__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_155__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_154__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_155__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16BinnedEstimate3D_154__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_154__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate3D.__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_16BinnedEstimate3D_157__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_16BinnedEstimate3D_156__setstate_cython__, "BinnedEstimate3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_16BinnedEstimate3D_157__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_157__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_156__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_16BinnedEstimate3D_157__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedEstimate3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16BinnedEstimate3D_156__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16BinnedEstimate3D_156__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedEstimate3D *__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__", 1);

  /* "(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(1, 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.BinnedEstimate3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto1D<double>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  YODA::BinnedHisto1D<double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto1D.pyx":31
 * 
 *     cdef inline c.BinnedHisto1D[double]* binned_d_ptr(self) except NULL:
 *         return <c.BinnedHisto1D[double]*> 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::BinnedHisto1D<double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedHisto1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto1D<int>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  YODA::BinnedHisto1D<int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto1D.pyx":35
 * 
 *     cdef inline c.BinnedHisto1D[int]* binned_i_ptr(self) except NULL:
 *         return <c.BinnedHisto1D[int]*> 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, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto1D<int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedHisto1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedHisto1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto1D<std::string>  *__pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  YODA::BinnedHisto1D<std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto1D.pyx":39
 * 
 *     cdef inline c.BinnedHisto1D[string]* binned_s_ptr(self) except NULL:
 *         return <c.BinnedHisto1D[string]*> 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, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto1D<std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedHisto1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto1D[string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D___init__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedHisto1D.pyx":44
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedHisto1D.pyx":45
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":46
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 46, __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, 46, __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_BinnedHisto1D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto1D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto1D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto1D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(19, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(19, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(19, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(19, 46, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(19, 46, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto1D[double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_2__init1, "BinnedHisto1D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1 = {"_BinnedHisto1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedHisto1D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedHisto1D<double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init1", 1);

  /* "include/generated/BinnedHisto1D.pyx":49
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedHisto1D[double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedHisto1D<double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 49, __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(19, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto1D[double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedHisto1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__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_13BinnedHisto1D_4__init2, "BinnedHisto1D.__init2(self, edgesA1, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__init2 = {"_BinnedHisto1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__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_edgesA1 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 52, __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, "_BinnedHisto1D__init2") < 0)) __PYX_ERR(19, 52, __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_edgesA1 = values[0];
    __pyx_v_path = ((PyObject*)values[1]);
    __pyx_v_title = ((PyObject*)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init2", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 52, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(19, 52, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(19, 52, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_2generator107(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_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_108_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_108_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(19, 58, __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_13BinnedHisto1D_21_BinnedHisto1D__init2_2generator107, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto1D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(19, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init2.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_13BinnedHisto1D_21_BinnedHisto1D__init2_2generator107(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_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, 58, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(19, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(19, 58, __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, 58, __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, 58, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 58, __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, 58, __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, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 58, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_5generator108(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_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_109_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_109_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(19, 62, __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_13BinnedHisto1D_21_BinnedHisto1D__init2_5generator108, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto1D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init2.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_13BinnedHisto1D_21_BinnedHisto1D__init2_5generator108(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_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, 62, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(19, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(19, 62, __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, 62, __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, 62, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __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, 62, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 62, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_8generator109(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_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_110_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_110_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(19, 66, __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_13BinnedHisto1D_21_BinnedHisto1D__init2_8generator109, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto1D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init2.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_13BinnedHisto1D_21_BinnedHisto1D__init2_8generator109(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_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, 66, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(19, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(19, 66, __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, 66, __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, 66, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 66, __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, 66, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 66, __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/generated/BinnedHisto1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_2generator107 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_5generator108 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_8generator109 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::vector<double> >  __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::BinnedHisto1D<double>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  std::vector<std::vector<int> >  __pyx_t_13;
  YODA::BinnedHisto1D<int>  *__pyx_t_14;
  std::vector<std::vector<std::string> >  __pyx_t_15;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init2", 1);

  /* "include/generated/BinnedHisto1D.pyx":53
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 53, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(19, 53, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 53, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 53, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 58, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

    /* "include/generated/BinnedHisto1D.pyx":59
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L1_error)
    try {
      __pyx_t_9 = new YODA::BinnedHisto1D<double> ((__pyx_v_edges_d[0]), ((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, 59, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":60
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedHisto1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_3genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 62, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_13 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13);

    /* "include/generated/BinnedHisto1D.pyx":63
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 63, __pyx_L1_error)
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 63, __pyx_L1_error)
    try {
      __pyx_t_14 = new YODA::BinnedHisto1D<int> ((__pyx_v_edges_i[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_7));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 63, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":64
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedHisto1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedHisto1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 66, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedHisto1D.pyx":67
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0])
 *         else:
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 67, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 67, __pyx_L1_error)
    try {
      __pyx_t_16 = new YODA::BinnedHisto1D<std::string> ((__pyx_v_edges_s[0]), ((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, 67, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":68
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto1D[string](edges_s[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedHisto1D.pyx":70
 *           self._set_config(edges_s[0])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(19, 70, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "include/generated/BinnedHisto1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

  /* 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_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_2generator107);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_5generator108);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto1D_21_BinnedHisto1D__init2_8generator109);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__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_13BinnedHisto1D_6__init3, "BinnedHisto1D.__init3(self, nbinsX, lowerX, upperX, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__init3 = {"_BinnedHisto1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 72, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init3", 0, 3, 5, 1); __PYX_ERR(19, 72, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init3", 0, 3, 5, 2); __PYX_ERR(19, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 72, __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, "_BinnedHisto1D__init3") < 0)) __PYX_ERR(19, 72, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_path = ((PyObject*)values[3]);
    __pyx_v_title = ((PyObject*)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init3", 0, 3, 5, __pyx_nargs); __PYX_ERR(19, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(19, 72, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(19, 72, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init3", 1);

  /* "include/generated/BinnedHisto1D.pyx":74
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(19, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedHisto1D.pyx":73
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(19, 73, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto1D.pyx":76
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 *         self.__init2(edges[0], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedHisto1D other):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto1D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_t_3, __pyx_v_path, __pyx_v_title};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__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_2)) __PYX_ERR(19, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__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_13BinnedHisto1D_8__init4, "BinnedHisto1D.__init4(self, BinnedHisto1D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__init4 = {"_BinnedHisto1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 78, __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, "_BinnedHisto1D__init4") < 0)) __PYX_ERR(19, 78, __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_BinnedHisto1D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto1D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 78, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init4", __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_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 78, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto1D__init4", 1);

  /* "include/generated/BinnedHisto1D.pyx":79
 * 
 *     def __init4(self, BinnedHisto1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 79, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":80
 *     def __init4(self, BinnedHisto1D other):
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 80, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 80, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":79
 * 
 *     def __init4(self, BinnedHisto1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 81, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":82
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[string]*> other.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 82, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 82, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 83, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":84
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[string]*> other.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 84, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 84, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":85
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Binning); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_12)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_other->_binning};
    __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_t_11 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 */

  /* 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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._BinnedHisto1D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedHisto1D.pyx":88
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 88, __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/generated/BinnedHisto1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedHisto1D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto1D.pyx":91
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(19, 91, __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, 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_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 91, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(19, 91, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(19, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(19, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(19, 91, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 91, __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/BinnedHisto1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedHisto1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_14_set_config, "BinnedHisto1D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<int>  __pyx_t_12;
  std::vector<std::string>  __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  unsigned int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedHisto1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(19, 94, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(19, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":95
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(19, 96, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":97
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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, 97, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(19, 97, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(19, 98, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":99
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":101
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedHisto1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 103, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto1D<double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 103, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 103, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 103, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto1D.pyx":104
 *           try:
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto1D[double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 104, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(19, 104, __pyx_L9_error)

          /* "include/generated/BinnedHisto1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto1D.pyx":106
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto1D[double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "d"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 106, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedHisto1D<double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 106, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 106, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto1D.pyx":105
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto1D[double]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 105, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto1D.pyx":108
 *               (<c.BinnedHisto1D[double]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "d"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_d);
        __Pyx_GIVEREF(__pyx_n_s_d);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_d;

        /* "include/generated/BinnedHisto1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto1D.pyx":109
 *             ])
 *             self._config = "d"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedHisto1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedHisto1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 111, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto1D<int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 111, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 111, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 111, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto1D.pyx":112
 *           try:
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto1D[int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 112, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(19, 112, __pyx_L16_error)

          /* "include/generated/BinnedHisto1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto1D.pyx":114
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto1D[int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "i"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 114, __pyx_L16_error)
        try {
          __pyx_t_12 = ((YODA::BinnedHisto1D<int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 114, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 114, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto1D.pyx":113
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto1D[int]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 113, __pyx_L16_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto1D.pyx":116
 *               (<c.BinnedHisto1D[int]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "i"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_i);
        __Pyx_GIVEREF(__pyx_n_s_i);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_i;

        /* "include/generated/BinnedHisto1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto1D.pyx":117
 *             ])
 *             self._config = "i"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedHisto1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 119, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto1D<std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 119, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 119, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_s, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 119, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto1D.pyx":120
 *           try:
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto1D[string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 120, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(19, 120, __pyx_L23_error)

          /* "include/generated/BinnedHisto1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto1D.pyx":122
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto1D[string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "s"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(19, 122, __pyx_L23_error)
        try {
          __pyx_t_13 = ((YODA::BinnedHisto1D<std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(19, 122, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 122, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto1D.pyx":121
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto1D[string]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(19, 121, __pyx_L23_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto1D.pyx":124
 *               (<c.BinnedHisto1D[string]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "s"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_s);
        __Pyx_GIVEREF(__pyx_n_s_s);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_s;

        /* "include/generated/BinnedHisto1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto1D.pyx":125
 *             ])
 *             self._config = "s"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedHisto1D.pyx":126
 *             self._config = "s"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(19, 126, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(19, 127, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_14 = NULL;
  __pyx_t_15 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_14)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_14);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_15 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(19, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":128
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_14 = NULL;
    __pyx_t_15 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_15 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(19, 128, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_14);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto1D.
 *         Clone this BinnedHisto1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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_13BinnedHisto1D_16clone, "BinnedHisto1D.clone(self)\n() -> BinnedHisto1D.\n        Clone this BinnedHisto1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_16clone};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D_16clone(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedHisto1D.pyx":133
 *         """() -> BinnedHisto1D.
 *         Clone this BinnedHisto1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":134
 *         Clone this BinnedHisto1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 134, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":135
 *         rtn = None
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 135, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 135, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), ((YODA::BinnedHisto1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":134
 *         Clone this BinnedHisto1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":137
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 137, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 137, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), ((YODA::BinnedHisto1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":139
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 139, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), ((YODA::BinnedHisto1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":141
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 141, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, <c.BinnedHisto1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedHisto1D.pyx":143
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedHisto1D.pyx":144
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto1D.
 *         Clone this BinnedHisto1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.clone", __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/generated/BinnedHisto1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex, "BinnedHisto1D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedHisto1D<double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedHisto1D<int>  *__pyx_t_9;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedHisto1D.pyx":149
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(19, 149, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 1);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 149, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 149, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":151
 *         assert(len(indices) == 1) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 151, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(19, 151, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(19, 151, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 152, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto1D.pyx":153
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 153, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 153, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 154, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto1D.pyx":155
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 155, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 155, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 156, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto1D.pyx":157
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 157, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 157, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); 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/generated/BinnedHisto1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":158
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 158, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

  /* 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.BinnedHisto1D.localToGlobalIndex", __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/generated/BinnedHisto1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_20_global_set, "BinnedHisto1D._global_set(self, size_t idx, Dbn1D cont)\nint, Dbn1D -> void.\n        Set a Dbn1D at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 161, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 161, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(19, 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, "_global_set") < 0)) __PYX_ERR(19, 161, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 161, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn1D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 161, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn1D, 1, "cont", 0))) __PYX_ERR(19, 161, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::Dbn1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedHisto1D.pyx":164
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 164, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":165
 *         Set a Dbn1D at bin position idx."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 165, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 165, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 165, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":164
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 166, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":167
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d1ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 167, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 167, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 167, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 168, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":169
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 169, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 169, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 169, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d1ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":170
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 170, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 */

  /* 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.BinnedHisto1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_22_local_set, "BinnedHisto1D._local_set(self, indices, Dbn1D cont)\nvector[int], Dbn1D -> void.\n        Set a Dbn1D at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 174, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 174, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(19, 174, __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, "_local_set") < 0)) __PYX_ERR(19, 174, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn1D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn1D, 1, "cont", 0))) __PYX_ERR(19, 174, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Dbn1D *__pyx_t_7;
  YODA::BinnedHisto1D<int>  *__pyx_t_8;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedHisto1D.pyx":177
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 177, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":178
 *         Set a Dbn1D at bin with local indices."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 178, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 178, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 178, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 178, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":177
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 179, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":180
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 180, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 180, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 180, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 181, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":182
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 182, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(19, 182, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 182, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":183
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d1ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 183, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 */

  /* 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.BinnedHisto1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_24set, "BinnedHisto1D.set(self, *args)\nSet bin with Dbn1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_24set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_24set(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedHisto1D.pyx":188
 *     def set(self, *args):
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(19, 188, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 188, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 188, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":189
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto1D.pyx":190
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 190, __pyx_L1_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/generated/BinnedHisto1D.pyx":189
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":192
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 192, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedHisto1D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_26reset, "BinnedHisto1D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_26reset};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D_26reset(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_4;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedHisto1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 196, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":197
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 197, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } 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_void_to_None(NULL); 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/generated/BinnedHisto1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 198, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":199
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 199, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 199, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 200, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":201
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 201, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 201, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":202
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 202, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_28numBins, "BinnedHisto1D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedHisto.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 206, __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, "numBins") < 0)) __PYX_ERR(19, 206, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 206, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedHisto1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 209, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":210
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 210, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 210, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 210, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 210, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":212
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 212, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 212, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 212, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 212, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 213, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":214
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 214, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 214, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 214, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 214, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":215
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 215, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

  /* 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.BinnedHisto1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_30isMasked, "BinnedHisto1D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 218, __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, "isMasked") < 0)) __PYX_ERR(19, 218, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 218, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedHisto1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":221
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 221, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 221, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__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)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":223
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 223, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 223, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 223, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 224, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":225
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 225, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 225, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 225, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":226
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 226, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_32isVisible, "BinnedHisto1D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "isVisible") < 0)) __PYX_ERR(19, 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 229, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedHisto1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 231, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":232
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 232, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 232, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 232, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 233, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":234
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 234, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 234, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 234, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 235, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":236
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 236, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 236, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 236, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":237
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 237, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_34binDim, "BinnedHisto1D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedHisto1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 242, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":243
 *         """Return binning dimension."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 243, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 243, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 244, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":245
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 245, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 245, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":247
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 247, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 247, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":248
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 248, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto1D.pyx":252
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 252, __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(19, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedHisto1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_38bins, "BinnedHisto1D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_38bins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 254, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 254, __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, "bins") < 0)) __PYX_ERR(19, 254, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 254, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_38bins(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedHisto1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 256, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(19, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(19, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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, 256, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(19, 257, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedHisto1D.pyx":258
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(19, 258, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(19, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedHisto1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedHisto1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 256, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedHisto1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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, 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/generated/BinnedHisto1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.bins", __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/generated/BinnedHisto1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_40_bin, "BinnedHisto1D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 260, __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, 260, __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(19, 260, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 260, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedHisto1D<double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Dbn1D> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Dbn1D> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Dbn1D> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedHisto1D.pyx":262
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn1D)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":263
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin1D(Dbn1D)
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto1D.pyx":264
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn1D)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin1D(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn1D)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(19, 265, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto1D.pyx":266
 *         b = Bin1D(Dbn1D)
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 266, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 266, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto1D.pyx":267
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 267, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(19, 267, __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/generated/BinnedHisto1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn1D)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(19, 268, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto1D.pyx":269
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 269, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 269, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto1D.pyx":270
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 270, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 270, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 270, __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/generated/BinnedHisto1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(19, 271, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto1D.pyx":272
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 272, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 272, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto1D.pyx":273
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 273, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(19, 273, __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/generated/BinnedHisto1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":274
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 274, __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/generated/BinnedHisto1D.pyx":275
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_42bin, "BinnedHisto1D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_42bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_42bin(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedHisto1D.pyx":279
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(19, 279, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 279, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 279, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":280
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(19, 280, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto1D.pyx":281
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(19, 281, __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/generated/BinnedHisto1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedHisto1D.bin", __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;
}

/* "include/generated/BinnedHisto1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_44binAt, "BinnedHisto1D.binAt(self, x)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 283, __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, 283, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 283, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedHisto1D.pyx":285
 *     def binAt(self, x):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 285, __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
  if (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;
    }
  }
  #endif
  {
    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, 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/generated/BinnedHisto1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

  /* 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.BinnedHisto1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_46maskBin, "BinnedHisto1D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 287, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 287, __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, "maskBin") < 0)) __PYX_ERR(19, 287, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 287, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedHisto1D<double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedHisto1D<int>  *__pyx_t_8;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedHisto1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":290
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 290, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":292
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 292, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 292, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 292, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 292, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":294
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 294, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 294, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 294, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 294, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":296
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 296, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 296, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 296, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 296, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedHisto1D.maskBin", __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;
}

/* "include/generated/BinnedHisto1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_48maskBins, "BinnedHisto1D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 298, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 298, __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, "maskBins") < 0)) __PYX_ERR(19, 298, __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_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 298, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedHisto1D.pyx":300
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(19, 300, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 300, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 300, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 301, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(19, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(19, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 301, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":302
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maskBins", __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;
}

/* "include/generated/BinnedHisto1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_50maskBinAt, "BinnedHisto1D.maskBinAt(self, x, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 304, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "maskBinAt") < 0)) __PYX_ERR(19, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 304, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_x, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedHisto1D.pyx":306
 *     def maskBinAt(self, x, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 306, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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, 306, __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/generated/BinnedHisto1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

  /* 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.BinnedHisto1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_52maskSlice, "BinnedHisto1D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 308, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 308, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(19, 308, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "maskSlice") < 0)) __PYX_ERR(19, 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);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(19, 308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedHisto1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 310, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":311
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 311, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 311, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 311, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 311, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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, 311, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 312, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":313
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 313, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 313, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 313, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 313, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 313, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":315
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 315, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 315, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 315, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 315, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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, 315, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedHisto1D.pyx":318
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 318, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 318, __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(19, 318, __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(19, 318, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedHisto1D.pyx":319
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 319, __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/generated/BinnedHisto1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_56mkEstimate, "BinnedHisto1D.mkEstimate(self, str path='', str source='', divbyvol=True)\nNone -> Estimate.\n\n        Convert this BinnedHisto1D to an BinnedEstimate1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_57mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_56mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  PyObject *__pyx_v_divbyvol = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,&__pyx_n_s_divbyvol,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 321, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 321, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_divbyvol);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 321, __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, "mkEstimate") < 0)) __PYX_ERR(19, 321, __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_path = ((PyObject*)values[0]);
    __pyx_v_source = ((PyObject*)values[1]);
    __pyx_v_divbyvol = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 3, __pyx_nargs); __PYX_ERR(19, 321, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(19, 321, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(19, 321, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_56mkEstimate(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_path, __pyx_v_source, __pyx_v_divbyvol);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkEstimate", 1);

  /* "include/generated/BinnedHisto1D.pyx":325
 * 
 *         Convert this BinnedHisto1D to an BinnedEstimate1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":326
 *         Convert this BinnedHisto1D to an BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":327
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 327, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 327, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 327, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 327, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto1D.pyx":328
 *         if self._config == "d":
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto1D.pyx":326
 *         Convert this BinnedHisto1D to an BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":329
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 329, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":330
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 330, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 330, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 330, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 330, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_7, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedHisto1D.pyx":331
 *         elif self._config == "i":
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto1D.pyx":329
 *           tmp = c.BH_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":332
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":333
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 333, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 333, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 333, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 333, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto1D.pyx":334
 *         elif self._config == "s":
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto1D.pyx":332
 *           tmp = c.BH_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":335
 *           tmp = c.BH_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_11 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/BinnedHisto1D.pyx":336
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.mkEstimate", __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/generated/BinnedHisto1D.pyx":338
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_58mkScatter, "BinnedHisto1D.mkScatter(self, path='', binwidthdiv=True, useFocus=False, includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter2D.\n\n        Make a new Scatter2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_59mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_58mkScatter};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_binwidthdiv = 0;
  PyObject *__pyx_v_useFocus = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_binwidthdiv,&__pyx_n_s_useFocus,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 338, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 338, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_useFocus);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 338, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 338, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 338, __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, 338, __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);
        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_path = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_useFocus = values[2];
    __pyx_v_includeOverflows = values[3];
    __pyx_v_includeMaskedBins = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 5, __pyx_nargs); __PYX_ERR(19, 338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_58mkScatter(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_path, __pyx_v_binwidthdiv, __pyx_v_useFocus, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  bool __pyx_t_7;
  YODA::Scatter2D __pyx_t_8;
  YODA::Scatter2D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_11;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedHisto1D.pyx":342
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 342, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":343
 *         Make a new Scatter2D."""
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 343, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 343, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 343, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 343, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 343, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 343, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 343, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedHisto1D.pyx":344
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 344, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":342
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":345
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":346
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 346, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 346, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 346, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 346, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 346, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 346, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 346, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedHisto1D.pyx":347
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 347, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":345
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":348
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 348, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":349
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 349, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 349, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 349, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 349, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 349, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 349, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 349, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedHisto1D.pyx":350
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedHisto1D self, BinnedHisto1D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 350, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":348
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":338
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

  /* 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.BinnedHisto1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":352
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedHisto1D self, BinnedHisto1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto1D -> BinnedEstimate1D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_61divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_60divideBy, "BinnedHisto1D.divideBy(self, BinnedHisto1D other, efficiency=False)\nBinnedHisto1D -> BinnedEstimate1D\n\n        Divide this BinnedHisto1D by other,\n        returning a BinnedEstimate1D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_61divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_60divideBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_61divideBy(PyObject *__pyx_v_self, 
#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_BinnedHisto1D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 352, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 352, __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(19, 352, __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_BinnedHisto1D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 352, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.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_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 352, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_60divideBy(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedHisto1D.pyx":358
 *         returning a BinnedEstimate1D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 358, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 358, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 358, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":359
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "d":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":360
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 360, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":361
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 361, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":362
 *         if efficiency:
 *           if self._config == "d":
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 362, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 362, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedHisto1D.pyx":363
 *           if self._config == "d":
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":361
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto1D.pyx":364
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 364, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":365
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 365, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 365, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedHisto1D.pyx":366
 *           elif self._config == "i":
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BH_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 366, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":364
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto1D.pyx":367
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 367, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":368
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BH_eff_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 368, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 368, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedHisto1D.pyx":369
 *           elif self._config == "s":
 *             tmp = c.BH_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "d":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":367
 *             tmp = c.BH_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedHisto1D.pyx":360
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BH_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":371
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 371, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":372
 *         else:
 *           if self._config == "d":
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 372, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 372, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedHisto1D.pyx":373
 *           if self._config == "d":
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 373, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":371
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto1D.pyx":374
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 374, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":375
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 375, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 375, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedHisto1D.pyx":376
 *           elif self._config == "i":
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":374
 *             tmp = c.BH_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto1D.pyx":377
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 377, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto1D.pyx":378
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 378, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 378, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedHisto1D.pyx":379
 *           elif self._config == "s":
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":377
 *             tmp = c.BH_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":380
 *             tmp = c.BH_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_11 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto1D.pyx":381
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedHisto1D self, BinnedHisto1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":352
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedHisto1D self, BinnedHisto1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto1D -> BinnedEstimate1D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.divideBy", __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/generated/BinnedHisto1D.pyx":383
 *         return rtn
 * 
 *     def __div__(BinnedHisto1D self, BinnedHisto1D 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_13BinnedHisto1D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 383, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_62__div__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedHisto1D.pyx":384
 * 
 *     def __div__(BinnedHisto1D self, BinnedHisto1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedHisto1D self, BinnedHisto1D 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, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 384, __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/generated/BinnedHisto1D.pyx":383
 *         return rtn
 * 
 *     def __div__(BinnedHisto1D self, BinnedHisto1D 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.BinnedHisto1D.__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/generated/BinnedHisto1D.pyx":386
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 386, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_64__truediv__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedHisto1D.pyx":387
 * 
 *     def __truediv__(BinnedHisto1D self, BinnedHisto1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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, 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/generated/BinnedHisto1D.pyx":386
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto1D self, BinnedHisto1D 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.BinnedHisto1D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":389
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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_13BinnedHisto1D_66_mknp, "BinnedHisto1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_67_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_66_mknp};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 389, __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, 389, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 389, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_66_mknp(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedHisto1D.pyx":390
 * 
 *     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/generated/BinnedHisto1D.pyx":391
 *     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, 391, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto1D.pyx":392
 *         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, 392, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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, 392, __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/generated/BinnedHisto1D.pyx":390
 * 
 *     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/generated/BinnedHisto1D.pyx":393
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedHisto1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(19, 393, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedHisto1D.pyx":394
 *             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/generated/BinnedHisto1D.pyx":390
 * 
 *     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/generated/BinnedHisto1D.pyx":389
 *         return self.divideBy(other)
 * 
 *     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.BinnedHisto1D._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/generated/BinnedHisto1D.pyx":397
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_68lengthContent, "BinnedHisto1D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_69lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_68lengthContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(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, "lengthContent") < 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 397, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_68lengthContent(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedHisto1D.pyx":399
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":400
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 400, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 400, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 400, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":399
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":401
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":402
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 402, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 402, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":401
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":403
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":404
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 404, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 404, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":403
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":405
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 405, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":397
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":407
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_70serializeContent, "BinnedHisto1D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_71serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_70serializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "serializeContent") < 0)) __PYX_ERR(19, 407, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 407, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_70serializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedHisto1D.pyx":409
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":410
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 410, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 410, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":409
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":411
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":412
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 412, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 412, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":411
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":413
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":414
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 414, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 414, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 414, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":413
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":415
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 415, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":407
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":417
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_72deserializeContent, "BinnedHisto1D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_73deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_72deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 417, __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, "deserializeContent") < 0)) __PYX_ERR(19, 417, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 417, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_72deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto1D<double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedHisto1D<int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedHisto1D.pyx":420
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 420, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 420, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(19, 420, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 420, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(19, 420, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 420, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(19, 420, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 420, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto1D.pyx":421
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 421, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":422
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 422, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 422, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 422, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":421
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":423
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 423, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":424
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 424, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 424, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 424, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":423
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":425
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 425, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":426
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 426, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 426, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 426, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":425
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":427
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 427, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":417
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":429
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_74lengthMeta, "BinnedHisto1D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_75lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_74lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 429, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 429, __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, "lengthMeta") < 0)) __PYX_ERR(19, 429, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 429, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_74lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedHisto1D.pyx":431
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 431, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":432
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 432, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 432, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 432, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 432, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":431
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":433
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 433, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":434
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 434, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 434, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 434, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 434, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":433
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":435
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 435, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":436
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 436, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 436, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 436, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 436, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":435
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":437
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 437, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":429
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":439
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_76serializeMeta, "BinnedHisto1D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_77serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_76serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 439, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 439, __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, "serializeMeta") < 0)) __PYX_ERR(19, 439, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 439, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_76serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedHisto1D.pyx":441
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 441, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":442
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 442, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 442, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 442, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 442, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":441
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":443
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 443, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":444
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 444, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 444, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 444, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 444, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":443
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":445
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 445, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":446
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 446, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 446, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 446, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 446, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":445
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":447
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 447, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":439
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":449
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_78deserializeMeta, "BinnedHisto1D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_79deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_78deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 449, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 449, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 449, __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, "deserializeMeta") < 0)) __PYX_ERR(19, 449, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 449, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_78deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto1D<double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedHisto1D<int>  *__pyx_t_11;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedHisto1D.pyx":452
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 452, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 452, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(19, 452, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(19, 452, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(19, 452, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 452, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(19, 452, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto1D.pyx":453
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 453, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":454
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 454, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 454, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 454, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 454, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":453
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":455
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 455, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":456
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 456, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 456, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 456, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 456, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":455
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":457
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(19, 457, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto1D.pyx":458
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 458, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 458, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 458, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 458, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":457
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":459
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 459, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":449
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":462
 * 
 * 
 *     def fill(self, x, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_80fill, "BinnedHisto1D.fill(self, x, weight=1.0, fraction=1.0)\n\n        ([coords], float weight=1.0, float fraction=1.0) -> int\n\n        Fills the distribution with the given weight at given [coords].\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_81fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_80fill};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 462, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 462, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 462, __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, 462, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 462, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_80fill(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_x, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_8;
  int __pyx_t_9;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/generated/BinnedHisto1D.pyx":468
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fill(x, weight, fraction)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 468, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":469
 *         """
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 469, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 469, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 469, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 469, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_2->fill(__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, 469, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":468
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fill(x, weight, fraction)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":470
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, weight, fraction)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":471
 *           return self.binned_d_ptr().fill(x, weight, fraction)
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 471, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 471, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 471, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 471, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->fill(__pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 471, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":470
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, weight, fraction)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":472
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fill(x, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":473
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, weight, fraction)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 473, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 473, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 473, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 473, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_10->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11), __pyx_t_4, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 473, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":472
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, weight, fraction)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fill(x, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":474
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 474, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":462
 * 
 * 
 *     def fill(self, x, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

  /* 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.BinnedHisto1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":477
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_82indexAt, "BinnedHisto1D.indexAt(self, x)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_83indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_82indexAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 477, __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, "indexAt") < 0)) __PYX_ERR(19, 477, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 477, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_82indexAt(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  std::string __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedHisto1D.pyx":478
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 478, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":479
 *     def indexAt(self, x):
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 479, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 479, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->indexAt(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 479, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":478
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":480
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 480, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":481
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 481, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 481, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->indexAt(__pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 481, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":480
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":482
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":483
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 483, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 483, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 483, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":482
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":484
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def fillDim(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 484, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":477
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

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

/* "include/generated/BinnedHisto1D.pyx":486
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_84fillDim, "BinnedHisto1D.fillDim(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_85fillDim = {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_84fillDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("fillDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fillDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_84fillDim(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillDim", 1);

  /* "include/generated/BinnedHisto1D.pyx":487
 * 
 *     def fillDim(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 487, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":488
 *     def fillDim(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 488, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 488, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":487
 * 
 *     def fillDim(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":489
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 489, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":490
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 490, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 490, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":489
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":491
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 491, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":492
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 492, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 492, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":491
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":493
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 493, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":486
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */

  /* 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.BinnedHisto1D.fillDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":495
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_86normalize, "BinnedHisto1D.normalize(self, normto=1.0, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_87normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_86normalize};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 495, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 495, __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(19, 495, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 495, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_86normalize(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 1);

  /* "include/generated/BinnedHisto1D.pyx":496
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 496, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":497
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 497, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 497, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 497, __pyx_L1_error)
    try {
      __pyx_t_2->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 497, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":496
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":498
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 498, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":499
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 499, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 499, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 499, __pyx_L1_error)
    try {
      __pyx_t_6->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 499, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":498
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":500
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 500, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":501
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 501, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 501, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 501, __pyx_L1_error)
    try {
      __pyx_t_7->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 501, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":500
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":502
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, factor):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 502, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":495
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":504
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_88scaleW, "BinnedHisto1D.scaleW(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_89scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_88scaleW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 504, __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, 504, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 504, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_88scaleW(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 1);

  /* "include/generated/BinnedHisto1D.pyx":505
 * 
 *     def scaleW(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 505, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":506
 *     def scaleW(self, factor):
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 506, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 506, __pyx_L1_error)
    try {
      __pyx_t_2->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 506, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":505
 * 
 *     def scaleW(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":507
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 507, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":508
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 508, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 508, __pyx_L1_error)
    try {
      __pyx_t_5->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 508, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":507
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":509
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 509, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":510
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 510, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 510, __pyx_L1_error)
    try {
      __pyx_t_6->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 510, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 510, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":509
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":511
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 511, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":504
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */

  /* 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.BinnedHisto1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":513
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_90sumW, "BinnedHisto1D.sumW(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_91sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_90sumW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 513, __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, 513, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 513, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_90sumW(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 1);

  /* "include/generated/BinnedHisto1D.pyx":514
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 514, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":515
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 515, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 515, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 515, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":514
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":516
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 516, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":517
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 517, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 517, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 517, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":516
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":518
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 518, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":519
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 519, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 519, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 519, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":518
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":520
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 520, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":513
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":522
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_92sumW2, "BinnedHisto1D.sumW2(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_93sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_92sumW2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 522, __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, 522, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 522, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_92sumW2(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 1);

  /* "include/generated/BinnedHisto1D.pyx":523
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 523, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":524
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 524, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 524, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 524, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":523
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":525
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 525, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":526
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 526, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 526, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 526, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":525
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":527
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 527, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":528
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 528, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 528, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 528, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":527
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":529
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 529, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":522
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":531
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_94sumWA, "BinnedHisto1D.sumWA(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_95sumWA = {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_94sumWA};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 531, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 531, __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, "sumWA") < 0)) __PYX_ERR(19, 531, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 531, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_94sumWA(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA", 1);

  /* "include/generated/BinnedHisto1D.pyx":532
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 532, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":533
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 533, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 533, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 533, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 533, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":532
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":534
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":535
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 535, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 535, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 535, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 535, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":534
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":536
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":537
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 537, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 537, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 537, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 537, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":536
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":538
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 538, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":531
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */

  /* 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.BinnedHisto1D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":540
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_96sumWA2, "BinnedHisto1D.sumWA2(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_97sumWA2 = {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_96sumWA2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 540, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 540, __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, "sumWA2") < 0)) __PYX_ERR(19, 540, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA2", 0, 1, 2, __pyx_nargs); __PYX_ERR(19, 540, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_96sumWA2(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA2", 1);

  /* "include/generated/BinnedHisto1D.pyx":541
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 541, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":542
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 542, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 542, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 542, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 542, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":541
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":543
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 543, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":544
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 544, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 544, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 544, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 544, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":543
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":545
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":546
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 546, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 546, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 546, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 546, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":545
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":547
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 547, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":540
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */

  /* 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.BinnedHisto1D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":549
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_98numEntries, "BinnedHisto1D.numEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_99numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_98numEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 549, __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, 549, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 549, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_98numEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/generated/BinnedHisto1D.pyx":550
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 550, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":551
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 551, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 551, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 551, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":550
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":552
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 552, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":553
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 553, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 553, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 553, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":552
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":554
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 554, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":555
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 555, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 555, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 555, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":554
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":556
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 556, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":549
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":558
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_100effNumEntries, "BinnedHisto1D.effNumEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_101effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_100effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 558, __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, 558, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 558, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_100effNumEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 1);

  /* "include/generated/BinnedHisto1D.pyx":559
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 559, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":560
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 560, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 560, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 560, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":559
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":561
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 561, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":562
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 562, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 562, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 562, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":561
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":563
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 563, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":564
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 564, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 564, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 564, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":563
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":565
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integral(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 565, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":558
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":567
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_102integral, "BinnedHisto1D.integral(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_103integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_102integral};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 567, __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(19, 567, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 567, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_102integral(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 1);

  /* "include/generated/BinnedHisto1D.pyx":568
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 568, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":569
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 569, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 569, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 569, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":568
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":570
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 570, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":571
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 571, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 571, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 571, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 571, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":570
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":572
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 572, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":573
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 573, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 573, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 573, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":572
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":574
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integralError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 574, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":567
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":576
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_104integralError, "BinnedHisto1D.integralError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_105integralError = {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_104integralError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 576, __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, "integralError") < 0)) __PYX_ERR(19, 576, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralError", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 576, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.integralError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_104integralError(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralError", 1);

  /* "include/generated/BinnedHisto1D.pyx":577
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 577, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":578
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 578, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 578, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 578, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 578, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":577
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":579
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 579, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":580
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 580, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 580, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 580, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":579
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":581
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 581, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":582
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 582, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 582, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 582, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":581
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":583
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def dVol(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 583, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":576
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":585
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_106dVol, "BinnedHisto1D.dVol(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_107dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_106dVol};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 585, __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, "dVol") < 0)) __PYX_ERR(19, 585, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 585, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_106dVol(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/BinnedHisto1D.pyx":586
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 586, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":587
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 587, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 587, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 587, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":586
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":588
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 588, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":589
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 589, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 589, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 589, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":588
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":590
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":591
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 591, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 591, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 591, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":590
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":592
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def density(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 592, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":585
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":594
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_108density, "BinnedHisto1D.density(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_109density = {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_108density};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("density (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 594, __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, "density") < 0)) __PYX_ERR(19, 594, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("density", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 594, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.density", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_108density(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("density", 1);

  /* "include/generated/BinnedHisto1D.pyx":595
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 595, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":596
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 596, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 596, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 596, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":595
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":597
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 597, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":598
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 598, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 598, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 598, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":597
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":599
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 599, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":600
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 600, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 600, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 600, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":599
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":601
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densityError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 601, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":594
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":603
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_110densityError, "BinnedHisto1D.densityError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_111densityError = {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_110densityError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densityError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 603, __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, "densityError") < 0)) __PYX_ERR(19, 603, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densityError", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 603, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.densityError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_110densityError(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densityError", 1);

  /* "include/generated/BinnedHisto1D.pyx":604
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":605
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 605, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 605, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 605, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":604
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":606
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 606, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":607
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 607, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 607, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 607, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":606
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":608
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 608, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":609
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 609, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 609, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 609, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":608
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":610
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densitySum(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 610, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":603
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":612
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_112densitySum, "BinnedHisto1D.densitySum(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_113densitySum = {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_112densitySum};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densitySum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "densitySum") < 0)) __PYX_ERR(19, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densitySum", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 612, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.densitySum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_112densitySum(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densitySum", 1);

  /* "include/generated/BinnedHisto1D.pyx":613
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":614
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 614, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 614, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 614, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":613
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":615
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 615, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":616
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 616, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 616, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 616, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":615
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":617
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 617, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":618
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 618, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 618, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 618, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":617
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":619
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maxDensity(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 619, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":612
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":621
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_114maxDensity, "BinnedHisto1D.maxDensity(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_115maxDensity = {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_114maxDensity};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxDensity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 621, __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, "maxDensity") < 0)) __PYX_ERR(19, 621, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxDensity", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 621, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.maxDensity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_114maxDensity(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxDensity", 1);

  /* "include/generated/BinnedHisto1D.pyx":622
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":623
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 623, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 623, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 623, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":622
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":624
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 624, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":625
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 625, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 625, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 625, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":624
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":626
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 626, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":627
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 627, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 627, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 627, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":626
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":628
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 628, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":621
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */

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

/* "include/generated/BinnedHisto1D.pyx":630
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_116maskedBins, "BinnedHisto1D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_117maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_116maskedBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_116maskedBins(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedHisto1D.pyx":631
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 631, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":632
 *     def maskedBins(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 632, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 632, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":631
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":633
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 633, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":634
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 634, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 634, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":633
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":635
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 635, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":636
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 636, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 636, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 636, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":635
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":637
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 637, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":630
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

  /* 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.BinnedHisto1D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":639
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_118numBinsX, "BinnedHisto1D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_119numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_118numBinsX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 639, __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, "numBinsX") < 0)) __PYX_ERR(19, 639, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 639, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_118numBinsX(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedHisto1D.pyx":641
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 641, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":642
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 642, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 642, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 642, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 642, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":641
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":643
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 643, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":644
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 644, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 644, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 644, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":643
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":645
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 645, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":646
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 646, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 646, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 646, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":645
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":647
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 647, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":639
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":650
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_120xEdges, "BinnedHisto1D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_121xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_120xEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 650, __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, "xEdges") < 0)) __PYX_ERR(19, 650, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 650, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_120xEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedHisto1D.pyx":652
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 652, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":653
 *         """xEdges on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 653, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 653, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 653, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":652
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":654
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 654, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":655
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 655, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 655, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 655, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":654
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":656
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 656, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":657
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 657, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 657, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 657, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 657, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":656
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":658
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 658, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":650
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":661
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_122xWidths, "BinnedHisto1D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_123xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_122xWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 661, __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, "xWidths") < 0)) __PYX_ERR(19, 661, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 661, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_122xWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedHisto1D.pyx":663
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 663, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":664
 *         """xWidths on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 664, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 664, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 664, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":663
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":665
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 665, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":661
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":668
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_124xMin, "BinnedHisto1D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_125xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_124xMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D_124xMin(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<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("xMin", 1);

  /* "include/generated/BinnedHisto1D.pyx":670
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 670, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":671
 *         """xMin on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 671, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 671, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":670
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":672
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 672, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":668
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":675
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_126xMax, "BinnedHisto1D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_127xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_126xMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D_126xMax(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<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("xMax", 1);

  /* "include/generated/BinnedHisto1D.pyx":677
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 677, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":678
 *         """xMax on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 678, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 678, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 678, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":677
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":679
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 679, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":675
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":682
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_128rebinXBy, "BinnedHisto1D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_129rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_128rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__98);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 682, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 682, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 682, __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, "rebinXBy") < 0)) __PYX_ERR(19, 682, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 682, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_128rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedHisto1D.pyx":684
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 684, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":685
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 685, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(19, 685, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 685, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 685, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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, 685, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":684
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":686
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 686, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":682
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":689
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_130rebinXTo, "BinnedHisto1D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_131rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_130rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 689, __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, "rebinXTo") < 0)) __PYX_ERR(19, 689, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 689, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_130rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedHisto1D.pyx":691
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 691, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":692
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 692, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 692, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 692, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 692, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":691
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":693
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 693, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":689
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedHisto1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":696
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_132xMean, "BinnedHisto1D.xMean(self, includeOverflows=True)\nxMean on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_133xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_132xMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 696, __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, 696, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 696, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_132xMean(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 1);

  /* "include/generated/BinnedHisto1D.pyx":698
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 698, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":699
 *         """xMean on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 699, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 699, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 699, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":698
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":700
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 700, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":696
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":703
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_134xVariance, "BinnedHisto1D.xVariance(self, includeOverflows=True)\nxVariance on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_135xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_134xVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 703, __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, 703, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 703, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_134xVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 1);

  /* "include/generated/BinnedHisto1D.pyx":705
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 705, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":706
 *         """xVariance on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 706, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 706, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 706, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":705
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":707
 *         if self._config == "d":
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 707, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":703
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":710
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_136xStdDev, "BinnedHisto1D.xStdDev(self, includeOverflows=True)\nxStdDev on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_137xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_136xStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 710, __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, 710, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 710, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_136xStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 1);

  /* "include/generated/BinnedHisto1D.pyx":712
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 712, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":713
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 713, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 713, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 713, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":712
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":714
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 714, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":710
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":717
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_138xStdErr, "BinnedHisto1D.xStdErr(self, includeOverflows=True)\nxStdErr on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_139xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_138xStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 717, __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, 717, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 717, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_138xStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 1);

  /* "include/generated/BinnedHisto1D.pyx":719
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 719, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":720
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 720, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 720, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 720, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":719
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":721
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 721, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":717
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":724
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_140xRMS, "BinnedHisto1D.xRMS(self, includeOverflows=True)\nxRMS on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_141xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_140xRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 724, __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, 724, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 724, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_140xRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 1);

  /* "include/generated/BinnedHisto1D.pyx":726
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 726, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":727
 *         """xRMS on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 727, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 727, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(19, 727, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 727, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":726
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":728
 *         if self._config == "d":
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 728, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":724
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedHisto1D.pyx":731
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto1D_142rebinX, "BinnedHisto1D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_143rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_142rebinX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 731, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(19, 731, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(19, 731, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_142rebinX(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedHisto1D.pyx":732
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(19, 732, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":733
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(19, 733, __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/generated/BinnedHisto1D.pyx":732
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto1D.pyx":735
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(19, 735, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 735, __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(19, 735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto1D.pyx":731
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":737
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_145__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_145__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 737, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_144__add__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_144__add__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  YODA::BinnedHisto1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedHisto1D.pyx":738
 * 
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":739
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":738
 * 
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":740
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 740, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 740, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 740, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":741
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":742
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 742, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":743
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 743, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 743, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto1D.pyx":744
 *         if self._config == "d":
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":742
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":745
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 745, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":746
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 746, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 746, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedHisto1D.pyx":747
 *         elif self._config == "i":
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":745
 *           tmp = c.BH_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":748
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 748, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":749
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 749, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 749, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedHisto1D.pyx":750
 *         elif self._config == "s":
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":748
 *           tmp = c.BH_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto1D.pyx":751
 *           tmp = c.BH_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 751, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto1D.pyx":752
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":737
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.__add__", __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/generated/BinnedHisto1D.pyx":754
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_147__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_147__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 754, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_146__iadd__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_146__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  YODA::BinnedHisto1D<double>  *__pyx_t_4;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedHisto1D.pyx":755
 * 
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":756
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":755
 * 
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":757
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 757, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 757, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 757, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":758
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 758, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":759
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 759, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 759, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto1D.pyx":758
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":760
 *         if self._config == "d":
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 760, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":761
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BH_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 761, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 761, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedHisto1D.pyx":760
 *         if self._config == "d":
 *           c.BH_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":762
 *         elif self._config == "i":
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 762, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":763
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BH_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 763, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 763, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedHisto1D.pyx":762
 *         elif self._config == "i":
 *           c.BH_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto1D.pyx":764
 *         elif self._config == "s":
 *           c.BH_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":754
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto1D.pyx":766
 *         return self
 * 
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_149__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_149__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 766, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_148__sub__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_148__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  YODA::BinnedHisto1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<int>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedHisto1D.pyx":767
 * 
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":768
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":767
 * 
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":769
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 769, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 769, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 769, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":770
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto1D.pyx":771
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 771, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":772
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 772, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 772, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto1D.pyx":773
 *         if self._config == "d":
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":771
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":774
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 774, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":775
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 775, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 775, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedHisto1D.pyx":776
 *         elif self._config == "i":
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":774
 *           tmp = c.BH_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":777
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":778
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 778, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 778, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedHisto1D.pyx":779
 *         elif self._config == "s":
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto1D.pyx":777
 *           tmp = c.BH_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto1D.pyx":780
 *           tmp = c.BH_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto1D.pyx":781
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":766
 *         return self
 * 
 *     def __sub__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.__sub__", __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/generated/BinnedHisto1D.pyx":783
 *         return rtn
 * 
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_151__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_151__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 783, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_150__isub__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_150__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  YODA::BinnedHisto1D<double>  *__pyx_t_4;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedHisto1D.pyx":784
 * 
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":785
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":784
 * 
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":786
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 786, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(19, 786, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(19, 786, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto1D.pyx":787
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 787, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":788
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 788, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 788, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto1D.pyx":787
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":789
 *         if self._config == "d":
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 789, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":790
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BH_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 790, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 790, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedHisto1D.pyx":789
 *         if self._config == "d":
 *           c.BH_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto1D.pyx":791
 *         elif self._config == "i":
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BH_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 791, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":792
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BH_isub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 792, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 792, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedHisto1D.pyx":791
 *         elif self._config == "i":
 *           c.BH_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BH_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto1D.pyx":793
 *         elif self._config == "s":
 *           c.BH_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto1D.pyx":783
 *         return rtn
 * 
 *     def __isub__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto1D.pyx":795
 *         return self
 * 
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_153__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_153__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 795, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_152__eq__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_152__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedHisto1D.pyx":796
 * 
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 796, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":797
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 797, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 797, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":796
 * 
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":798
 *         if self._config == "d":
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 798, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":799
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BH_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 799, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 799, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":798
 *         if self._config == "d":
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":800
 *         elif self._config == "i":
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 800, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":801
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BH_eq_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 801, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 801, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":800
 *         elif self._config == "i":
 *           return c.BH_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":802
 *         elif self._config == "s":
 *           return c.BH_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 802, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":795
 *         return self
 * 
 *     def __eq__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BH_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedHisto1D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_155__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_155__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto1D, 1, "other", 0))) __PYX_ERR(19, 804, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_154__ne__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__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_13BinnedHisto1D_154__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto1D<double>  *__pyx_t_2;
  YODA::BinnedHisto1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto1D<int>  *__pyx_t_5;
  YODA::BinnedHisto1D<int>  *__pyx_t_6;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_7;
  YODA::BinnedHisto1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedHisto1D.pyx":805
 * 
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 805, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":806
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 806, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto1D<double>  *)NULL))) __PYX_ERR(19, 806, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":805
 * 
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":807
 *         if self._config == "d":
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 807, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":808
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BH_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 808, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto1D<int>  *)NULL))) __PYX_ERR(19, 808, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":807
 *         if self._config == "d":
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":809
 *         elif self._config == "i":
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 809, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto1D.pyx":810
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BH_ne_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 810, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto1D<std::string>  *)NULL))) __PYX_ERR(19, 810, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto1D.pyx":809
 *         elif self._config == "i":
 *           return c.BH_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto1D.pyx":811
 *         elif self._config == "s":
 *           return c.BH_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(19, 811, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto1D self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BH_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedHisto1D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto1D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(19, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedHisto1D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedHisto1D[double]* binned_d_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_13BinnedHisto1D_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_13BinnedHisto1D_156__reduce_cython__, "BinnedHisto1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_157__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_157__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_156__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto1D_156__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_156__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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__", 1);

  /* "(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(1, 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.BinnedHisto1D.__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_13BinnedHisto1D_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_13BinnedHisto1D_158__setstate_cython__, "BinnedHisto1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto1D_159__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_159__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_158__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto1D_158__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto1D_158__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto1D *__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__", 1);

  /* "(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(1, 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.BinnedHisto1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<double,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":31
 * 
 *     cdef inline c.BinnedHisto2D[double,double]* binned_dd_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[double,double]*> 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, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedHisto2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<double,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":35
 * 
 *     cdef inline c.BinnedHisto2D[double,int]* binned_di_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[double,int]*> 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, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedHisto2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedHisto2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<double,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":39
 * 
 *     cdef inline c.BinnedHisto2D[double,string]* binned_ds_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[double,string]*> 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, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedHisto2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<int,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":43
 * 
 *     cdef inline c.BinnedHisto2D[int,double]* binned_id_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[int,double]*> 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, 43, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<int,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":47
 * 
 *     cdef inline c.BinnedHisto2D[int,int]* binned_ii_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[int,int]*> 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, 47, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<int,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":51
 * 
 *     cdef inline c.BinnedHisto2D[int,string]* binned_is_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[int,string]*> 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, 51, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedHisto2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<std::string,double>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":55
 * 
 *     cdef inline c.BinnedHisto2D[string,double]* binned_sd_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[string,double]*> 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, 55, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<std::string,int>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":59
 * 
 *     cdef inline c.BinnedHisto2D[string,int]* binned_si_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[string,int]*> 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, 59, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto2D<std::string,std::string>  *__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto2D.pyx":63
 * 
 *     cdef inline c.BinnedHisto2D[string,string]* binned_ss_ptr(self) except NULL:
 *         return <c.BinnedHisto2D[string,string]*> 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, 63, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedHisto2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto2D[string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D___init__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedHisto2D.pyx":68
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedHisto2D.pyx":69
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":70
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 70, __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(20, 70, __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_BinnedHisto2D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto2D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto2D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto2D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(20, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(20, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(20, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(20, 70, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(20, 70, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_2__init1, "BinnedHisto2D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1 = {"_BinnedHisto2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedHisto2D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedHisto2D<double,double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init1", 1);

  /* "include/generated/BinnedHisto2D.pyx":73
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedHisto2D<double,double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 73, __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(20, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedHisto2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__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_13BinnedHisto2D_4__init2, "BinnedHisto2D.__init2(self, edgesA1, edgesA2, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__init2 = {"_BinnedHisto2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__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_edgesA1 = 0;
  PyObject *__pyx_v_edgesA2 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_edgesA2,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 76, __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_edgesA2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 76, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init2", 0, 2, 4, 1); __PYX_ERR(20, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 76, __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, "_BinnedHisto2D__init2") < 0)) __PYX_ERR(20, 76, __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_edgesA1 = values[0];
    __pyx_v_edgesA2 = values[1];
    __pyx_v_path = ((PyObject*)values[2]);
    __pyx_v_title = ((PyObject*)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init2", 0, 2, 4, __pyx_nargs); __PYX_ERR(20, 76, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(20, 76, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(20, 76, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_edgesA2, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_2generator110(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_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_111_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_111_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 83, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_2generator110, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_2generator110(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_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(20, 83, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 83, __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(20, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 83, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 83, __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(20, 83, __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(20, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 83, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_5generator111(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_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_112_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_112_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 84, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_5generator111, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 84, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_5generator111(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_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(20, 84, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 84, __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(20, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 84, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 84, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 84, __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(20, 84, __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(20, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 84, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_8generator112(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_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_113_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_113_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 88, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_8generator112, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_8generator112(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_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(20, 88, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 88, __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(20, 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(20, 88, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 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(20, 88, __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(20, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 88, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_11generator113(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_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_114_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_114_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 89, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_11generator113, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_11generator113(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_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(20, 89, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 89, __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(20, 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(20, 89, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 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(20, 89, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 89, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_14generator114(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_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_115_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_115_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 93, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_14generator114, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_14generator114(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_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(20, 93, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 93, __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(20, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 93, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 93, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 93, __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(20, 93, __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(20, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 93, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_17generator115(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_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_116_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_116_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 94, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_17generator115, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_17generator115(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_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(20, 94, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 94, __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(20, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __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(20, 94, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 94, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_20generator116(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_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_117_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_117_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 98, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_20generator116, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_20generator116(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_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(20, 98, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 98, __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(20, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 98, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 98, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 98, __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(20, 98, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 98, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_23generator117(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_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_118_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_118_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 99, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_23generator117, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_23generator117(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_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(20, 99, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 99, __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(20, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 99, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 99, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 99, __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(20, 99, __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(20, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 99, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_26generator118(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_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_119_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_119_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 103, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_26generator118, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_26generator118(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_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(20, 103, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 103, __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(20, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 103, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 103, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 103, __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(20, 103, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 103, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_29generator119(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_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_120_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_120_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 104, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_29generator119, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_29generator119(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_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(20, 104, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 104, __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(20, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 104, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 104, __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(20, 104, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 104, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_32generator120(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_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_121_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_121_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 108, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_32generator120, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_32generator120(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_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(20, 108, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 108, __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(20, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 108, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 108, __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(20, 108, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 108, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_35generator121(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_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_122_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_122_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 109, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_35generator121, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_35generator121(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_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(20, 109, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 109, __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(20, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 109, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 109, __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(20, 109, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 109, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_38generator122(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_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_123_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_123_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 113, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_38generator122, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_38generator122(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_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(20, 113, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 113, __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(20, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 113, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 113, __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(20, 113, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 113, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_41generator123(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_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_124_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_124_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 114, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_41generator123, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_41generator123(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_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(20, 114, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 114, __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(20, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 114, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 114, __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(20, 114, __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(20, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 114, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_44generator124(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_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_125_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_125_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 118, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_44generator124, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_44generator124(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_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(20, 118, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 118, __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(20, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 118, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 118, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 118, __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(20, 118, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 118, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_47generator125(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_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_126_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_126_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 119, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_47generator125, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_47generator125(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_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(20, 119, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 119, __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(20, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 119, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 119, __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(20, 119, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 119, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_50generator126(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_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_127_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_127_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 123, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_50generator126, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_50generator126(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_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(20, 123, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 123, __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(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 123, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __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(20, 123, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 123, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_53generator127(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_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_128_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_128_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(20, 124, __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_13BinnedHisto2D_21_BinnedHisto2D__init2_53generator127, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(20, 124, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2.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_13BinnedHisto2D_21_BinnedHisto2D__init2_53generator127(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_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(20, 124, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(20, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(20, 124, __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(20, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 124, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(20, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 124, __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(20, 124, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 124, __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/generated/BinnedHisto2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_2generator110 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_5generator111 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_8generator112 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_11generator113 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_14generator114 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_17generator115 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_20generator116 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_23generator117 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_26generator118 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_29generator119 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_32generator120 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_35generator121 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_38generator122 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_41generator123 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_44generator124 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_47generator125 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_50generator126 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_53generator127 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  std::string __pyx_t_8;
  std::string __pyx_t_9;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  std::vector<std::vector<int> >  __pyx_t_14;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_15;
  std::vector<std::vector<std::string> >  __pyx_t_16;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_17;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_18;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_19;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_20;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_21;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_22;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init2", 1);

  /* "include/generated/BinnedHisto2D.pyx":77
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         cdef vector[vector[double]] edges_d
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(20, 77, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(20, 77, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 77, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 77, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":78
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA2, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(20, 78, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(20, 78, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 78, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 78, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_3genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 83, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(20, 83, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":85
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 85, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 85, __pyx_L1_error)
    try {
      __pyx_t_10 = new YODA::BinnedHisto2D<double,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 85, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":86
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 88, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_9genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 89, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":90
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 90, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 90, __pyx_L1_error)
    try {
      __pyx_t_15 = new YODA::BinnedHisto2D<double,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 90, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":91
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L12_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_12genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 93, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_15genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 94, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":95
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 95, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 95, __pyx_L1_error)
    try {
      __pyx_t_17 = new YODA::BinnedHisto2D<double,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 95, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":96
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L14_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_18genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 98, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_21genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 99, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":100
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 100, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 100, __pyx_L1_error)
    try {
      __pyx_t_18 = new YODA::BinnedHisto2D<int,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 100, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":101
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_24genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_27genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(20, 103, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(20, 103, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":105
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 105, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 105, __pyx_L1_error)
    try {
      __pyx_t_19 = new YODA::BinnedHisto2D<int,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 105, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":106
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L18_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_30genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 108, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_33genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 109, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":110
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 110, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 110, __pyx_L1_error)
    try {
      __pyx_t_20 = new YODA::BinnedHisto2D<int,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 110, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":111
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L20_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_36genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 113, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_39genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 114, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":115
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 115, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 115, __pyx_L1_error)
    try {
      __pyx_t_21 = new YODA::BinnedHisto2D<std::string,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 115, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":116
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L22_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_42genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 118, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_45genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 119, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":120
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 120, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 120, __pyx_L1_error)
    try {
      __pyx_t_22 = new YODA::BinnedHisto2D<std::string,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 120, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":121
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 121, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L24_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedHisto2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_48genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_51genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(20, 123, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(20, 123, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":125
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 125, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 125, __pyx_L1_error)
    try {
      __pyx_t_23 = new YODA::BinnedHisto2D<std::string,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 125, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_23); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":126
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedHisto2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedHisto2D.pyx":128
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(20, 128, __pyx_L1_error)
  }
  __pyx_L7:;

  /* "include/generated/BinnedHisto2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

  /* 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_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_2generator110);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_5generator111);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_8generator112);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_11generator113);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_14generator114);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_17generator115);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_20generator116);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_23generator117);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_26generator118);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_29generator119);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_32generator120);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_35generator121);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_38generator122);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_41generator123);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_44generator124);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_47generator125);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_50generator126);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto2D_21_BinnedHisto2D__init2_53generator127);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__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_13BinnedHisto2D_6__init3, "BinnedHisto2D.__init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__init3 = {"_BinnedHisto2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_nbinsY = 0;
  PyObject *__pyx_v_lowerY = 0;
  PyObject *__pyx_v_upperY = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_nbinsY,&__pyx_n_s_lowerY,&__pyx_n_s_upperY,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[7] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, 1); __PYX_ERR(20, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, 2); __PYX_ERR(20, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, 3); __PYX_ERR(20, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, 4); __PYX_ERR(20, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, 5); __PYX_ERR(20, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 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, "_BinnedHisto2D__init3") < 0)) __PYX_ERR(20, 130, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_nbinsY = values[3];
    __pyx_v_lowerY = values[4];
    __pyx_v_upperY = values[5];
    __pyx_v_path = ((PyObject*)values[6]);
    __pyx_v_title = ((PyObject*)values[7]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init3", 0, 6, 8, __pyx_nargs); __PYX_ERR(20, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(20, 130, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(20, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned 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("_BinnedHisto2D__init3", 1);

  /* "include/generated/BinnedHisto2D.pyx":132
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(20, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedHisto2D.pyx":133
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __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_3); __pyx_t_3 = 0;
  }

  /* "include/generated/BinnedHisto2D.pyx":131
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 */
  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(20, 131, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(20, 131, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto2D.pyx":135
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedHisto2D other):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto2D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_edges, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_1, __pyx_t_5, __pyx_v_path, __pyx_v_title};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__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_13BinnedHisto2D_8__init4, "BinnedHisto2D.__init4(self, BinnedHisto2D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__init4 = {"_BinnedHisto2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 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, "_BinnedHisto2D__init4") < 0)) __PYX_ERR(20, 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_other = ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto2D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init4", __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_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 137, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  unsigned int __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto2D__init4", 1);

  /* "include/generated/BinnedHisto2D.pyx":138
 * 
 *     def __init4(self, BinnedHisto2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":139
 *     def __init4(self, BinnedHisto2D other):
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 139, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":138
 * 
 *     def __init4(self, BinnedHisto2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":141
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 141, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 141, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":143
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 143, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 143, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":145
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 145, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 145, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 146, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":147
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 147, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 147, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":149
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 149, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 149, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":151
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 151, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 151, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 152, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":153
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,string]*> other.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 153, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 153, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 154, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":155
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,string]*> other.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 155, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 155, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":156
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(20, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_Binning); if (unlikely(!__pyx_t_23)) __PYX_ERR(20, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_24 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_v_other->_binning};
    __pyx_t_22 = __Pyx_PyObject_FastCall(__pyx_t_23, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
    if (unlikely(!__pyx_t_22)) __PYX_ERR(20, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  }
  __pyx_t_23 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_t_22};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 */

  /* 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_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._BinnedHisto2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedHisto2D.pyx":159
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(20, 159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 159, __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/generated/BinnedHisto2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedHisto2D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto2D.pyx":162
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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, 162, __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, 162, __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(20, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 162, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(20, 162, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(20, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(20, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(20, 162, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 162, __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/BinnedHisto2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedHisto2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_14_set_config, "BinnedHisto2D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<double>  __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  std::vector<double>  __pyx_t_14;
  std::vector<int>  __pyx_t_15;
  std::vector<double>  __pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  std::vector<int>  __pyx_t_18;
  std::vector<double>  __pyx_t_19;
  std::vector<int>  __pyx_t_20;
  std::vector<int>  __pyx_t_21;
  std::vector<int>  __pyx_t_22;
  std::vector<std::string>  __pyx_t_23;
  std::vector<std::string>  __pyx_t_24;
  std::vector<double>  __pyx_t_25;
  std::vector<std::string>  __pyx_t_26;
  std::vector<int>  __pyx_t_27;
  std::vector<std::string>  __pyx_t_28;
  std::vector<std::string>  __pyx_t_29;
  unsigned int __pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedHisto2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(20, 165, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(20, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":166
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(20, 167, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":168
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(20, 168, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(20, 168, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(20, 169, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":170
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":172
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedHisto2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 174, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 174, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 174, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_dd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 174, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":175
 *           try:
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 175, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(20, 175, __pyx_L9_error)

          /* "include/generated/BinnedHisto2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":177
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 177, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 177, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 177, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":178
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 178, __pyx_L9_error)
        try {
          __pyx_t_12 = ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 178, __pyx_L9_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 178, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":176
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(20, 176, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(20, 176, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedHisto2D.pyx":180
 *               (<c.BinnedHisto2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "dd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dd);
        __Pyx_GIVEREF(__pyx_n_s_dd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dd;

        /* "include/generated/BinnedHisto2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":181
 *             ])
 *             self._config = "dd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 183, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 183, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 183, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_di, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 183, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":184
 *           try:
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 184, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(20, 184, __pyx_L16_error)

          /* "include/generated/BinnedHisto2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":186
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 186, __pyx_L16_error)
        try {
          __pyx_t_14 = ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 186, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 186, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":187
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "di"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 187, __pyx_L16_error)
        try {
          __pyx_t_15 = ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 187, __pyx_L16_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 187, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":185
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(20, 185, __pyx_L16_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(20, 185, __pyx_L16_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedHisto2D.pyx":189
 *               (<c.BinnedHisto2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "di"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_di);
        __Pyx_GIVEREF(__pyx_n_s_di);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_di;

        /* "include/generated/BinnedHisto2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":190
 *             ])
 *             self._config = "di"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 192, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 192, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 192, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ds, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 192, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":193
 *           try:
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 193, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(20, 193, __pyx_L23_error)

          /* "include/generated/BinnedHisto2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":195
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 195, __pyx_L23_error)
        try {
          __pyx_t_16 = ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 195, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_double(__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 195, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":196
 *             edges = tuple([
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ds"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 196, __pyx_L23_error)
        try {
          __pyx_t_17 = ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 196, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 196, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":194
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(20, 194, __pyx_L23_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(20, 194, __pyx_L23_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto2D.pyx":198
 *               (<c.BinnedHisto2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ds"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ds);
        __Pyx_GIVEREF(__pyx_n_s_ds);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ds;

        /* "include/generated/BinnedHisto2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":199
 *             ])
 *             self._config = "ds"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 201, __pyx_L30_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 201, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 201, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_id, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 201, __pyx_L30_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":202
 *           try:
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 202, __pyx_L30_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(20, 202, __pyx_L30_error)

          /* "include/generated/BinnedHisto2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":204
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 204, __pyx_L30_error)
        try {
          __pyx_t_18 = ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 204, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 204, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":205
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "id"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 205, __pyx_L30_error)
        try {
          __pyx_t_19 = ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 205, __pyx_L30_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 205, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":203
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(20, 203, __pyx_L30_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(20, 203, __pyx_L30_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedHisto2D.pyx":207
 *               (<c.BinnedHisto2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "id"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_id);
        __Pyx_GIVEREF(__pyx_n_s_id);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_id;

        /* "include/generated/BinnedHisto2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L35_try_end;
      __pyx_L30_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":208
 *             ])
 *             self._config = "id"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L31_exception_handled;
      }
      __pyx_L31_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L35_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 210, __pyx_L37_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 210, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 210, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_ii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 210, __pyx_L37_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":211
 *           try:
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 211, __pyx_L37_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(20, 211, __pyx_L37_error)

          /* "include/generated/BinnedHisto2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":213
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 213, __pyx_L37_error)
        try {
          __pyx_t_20 = ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 213, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 213, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":214
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 214, __pyx_L37_error)
        try {
          __pyx_t_21 = ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 214, __pyx_L37_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_21); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 214, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":212
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(20, 212, __pyx_L37_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(20, 212, __pyx_L37_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedHisto2D.pyx":216
 *               (<c.BinnedHisto2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ii);
        __Pyx_GIVEREF(__pyx_n_s_ii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ii;

        /* "include/generated/BinnedHisto2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L42_try_end;
      __pyx_L37_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":217
 *             ])
 *             self._config = "ii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L38_exception_handled;
      }
      __pyx_L38_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L42_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 219, __pyx_L44_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 219, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 219, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_is, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 219, __pyx_L44_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":220
 *           try:
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 220, __pyx_L44_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(20, 220, __pyx_L44_error)

          /* "include/generated/BinnedHisto2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":222
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 222, __pyx_L44_error)
        try {
          __pyx_t_22 = ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 222, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 222, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":223
 *             edges = tuple([
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "is"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 223, __pyx_L44_error)
        try {
          __pyx_t_23 = ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 223, __pyx_L44_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 223, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":221
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(20, 221, __pyx_L44_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(20, 221, __pyx_L44_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto2D.pyx":225
 *               (<c.BinnedHisto2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "is"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_is);
        __Pyx_GIVEREF(__pyx_n_s_is);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_is;

        /* "include/generated/BinnedHisto2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L49_try_end;
      __pyx_L44_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":226
 *             ])
 *             self._config = "is"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L45_exception_handled;
      }
      __pyx_L45_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L49_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 228, __pyx_L51_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 228, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 228, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_sd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 228, __pyx_L51_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":229
 *           try:
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 229, __pyx_L51_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(20, 229, __pyx_L51_error)

          /* "include/generated/BinnedHisto2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":231
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 231, __pyx_L51_error)
        try {
          __pyx_t_24 = ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 231, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 231, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":232
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 232, __pyx_L51_error)
        try {
          __pyx_t_25 = ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 232, __pyx_L51_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 232, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":230
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(20, 230, __pyx_L51_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(20, 230, __pyx_L51_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedHisto2D.pyx":234
 *               (<c.BinnedHisto2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "sd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sd);
        __Pyx_GIVEREF(__pyx_n_s_sd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sd;

        /* "include/generated/BinnedHisto2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L56_try_end;
      __pyx_L51_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":235
 *             ])
 *             self._config = "sd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L52_exception_handled;
      }
      __pyx_L52_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L56_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 237, __pyx_L58_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 237, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 237, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_si, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 237, __pyx_L58_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":238
 *           try:
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 238, __pyx_L58_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(20, 238, __pyx_L58_error)

          /* "include/generated/BinnedHisto2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":240
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 240, __pyx_L58_error)
        try {
          __pyx_t_26 = ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 240, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 240, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto2D.pyx":241
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "si"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 241, __pyx_L58_error)
        try {
          __pyx_t_27 = ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 241, __pyx_L58_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_27); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 241, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":239
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(20, 239, __pyx_L58_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(20, 239, __pyx_L58_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedHisto2D.pyx":243
 *               (<c.BinnedHisto2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "si"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_si);
        __Pyx_GIVEREF(__pyx_n_s_si);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_si;

        /* "include/generated/BinnedHisto2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L63_try_end;
      __pyx_L58_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":244
 *             ])
 *             self._config = "si"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L59_exception_handled;
      }
      __pyx_L59_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L63_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 246, __pyx_L65_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 246, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 246, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 246, __pyx_L65_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto2D.pyx":247
 *           try:
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 247, __pyx_L65_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(20, 247, __pyx_L65_error)

          /* "include/generated/BinnedHisto2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto2D.pyx":249
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 249, __pyx_L65_error)
        try {
          __pyx_t_28 = ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 249, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_28); if (unlikely(!__pyx_t_13)) __PYX_ERR(20, 249, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedHisto2D.pyx":250
 *             edges = tuple([
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(20, 250, __pyx_L65_error)
        try {
          __pyx_t_29 = ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(20, 250, __pyx_L65_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 250, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto2D.pyx":248
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(20, 248, __pyx_L65_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(20, 248, __pyx_L65_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedHisto2D.pyx":252
 *               (<c.BinnedHisto2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_ss);
        __Pyx_GIVEREF(__pyx_n_s_ss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ss;

        /* "include/generated/BinnedHisto2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L70_try_end;
      __pyx_L65_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto2D.pyx":253
 *             ])
 *             self._config = "ss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L66_exception_handled;
      }
      __pyx_L66_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L70_try_end:;
    }

    /* "include/generated/BinnedHisto2D.pyx":254
 *             self._config = "ss"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(20, 254, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(20, 255, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_13 = NULL;
  __pyx_t_30 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_30 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(20, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L73_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":256
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_30 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_30 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(20, 256, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_13);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto2D.
 *         Clone this BinnedHisto2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_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_13BinnedHisto2D_16clone, "BinnedHisto2D.clone(self)\n() -> BinnedHisto2D.\n        Clone this BinnedHisto2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_16clone};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_16clone(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedHisto2D.pyx":261
 *         """() -> BinnedHisto2D.
 *         Clone this BinnedHisto2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":262
 *         Clone this BinnedHisto2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":263
 *         rtn = None
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 263, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 263, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":262
 *         Clone this BinnedHisto2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":265
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 265, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 265, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 266, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":267
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 267, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":269
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 269, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 269, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 270, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":271
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 271, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 271, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 272, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":273
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 273, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 274, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":275
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 275, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 275, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 276, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":277
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 277, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 277, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 278, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":279
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 279, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 279, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), ((YODA::BinnedHisto2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":281
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(20, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_22, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 2+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, <c.BinnedHisto2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedHisto2D.pyx":283
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(20, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedHisto2D.pyx":284
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto2D.
 *         Clone this BinnedHisto2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.clone", __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/generated/BinnedHisto2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex, "BinnedHisto2D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedHisto2D.pyx":289
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 289, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 289, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 289, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":291
 *         assert(len(indices) == 2) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 291, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(20, 291, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(20, 291, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 292, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":293
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 293, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 293, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 294, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":295
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 295, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 295, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 296, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":297
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 297, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 297, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 298, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":299
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 299, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 299, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 300, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":301
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 301, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 301, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 302, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":303
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 303, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 303, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 304, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":305
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 305, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 305, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 306, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":307
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 307, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 307, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(20, 308, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":309
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 309, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 309, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":310
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 310, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

  /* 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.BinnedHisto2D.localToGlobalIndex", __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/generated/BinnedHisto2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_20_global_set, "BinnedHisto2D._global_set(self, size_t idx, Dbn2D cont)\nint, Dbn2D -> void.\n        Set a Dbn2D at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 313, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 313, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(20, 313, __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, "_global_set") < 0)) __PYX_ERR(20, 313, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 313, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn2D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(20, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn2D, 1, "cont", 0))) __PYX_ERR(20, 313, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedHisto2D.pyx":316
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":317
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 317, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 317, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 317, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":316
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":319
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 319, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 319, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 319, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":321
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 321, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 321, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 321, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 322, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":323
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 323, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 323, __pyx_L1_error)
    try {
      __pyx_t_7->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 323, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 324, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":325
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 325, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 325, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 325, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":327
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 327, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 327, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 327, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":329
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 329, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 329, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 329, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":331
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 331, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 331, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 331, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":333
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 333, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 333, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 333, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":334
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 334, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */

  /* 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.BinnedHisto2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_22_local_set, "BinnedHisto2D._local_set(self, indices, Dbn2D cont)\nvector[int], Dbn2D -> void.\n        Set a Dbn2D at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 338, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 338, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(20, 338, __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, "_local_set") < 0)) __PYX_ERR(20, 338, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn2D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(20, 338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn2D, 1, "cont", 0))) __PYX_ERR(20, 338, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Dbn2D *__pyx_t_7;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedHisto2D.pyx":341
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":342
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 342, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 342, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 342, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":341
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":344
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 344, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 344, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 344, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":346
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 346, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 346, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 346, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":348
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 348, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 348, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 348, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 348, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":350
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 350, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 350, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 350, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 350, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":352
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 352, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 352, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 352, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":354
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 354, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 354, __pyx_L1_error)
    try {
      __pyx_t_13->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 354, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":356
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 356, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 356, __pyx_L1_error)
    try {
      __pyx_t_14->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 356, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":358
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 358, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 358, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(20, 358, __pyx_L1_error)
    try {
      __pyx_t_15->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 358, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":359
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 359, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */

  /* 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.BinnedHisto2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_24set, "BinnedHisto2D.set(self, *args)\nSet bin with Dbn2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_24set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_24set(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedHisto2D.pyx":364
 *     def set(self, *args):
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 364, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 364, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 364, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":365
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(20, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto2D.pyx":366
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 366, __pyx_L1_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/generated/BinnedHisto2D.pyx":365
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":368
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 368, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedHisto2D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_26reset, "BinnedHisto2D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_26reset};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_26reset(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_4;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_5;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedHisto2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":373
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 373, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 373, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":375
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 375, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 375, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":377
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 377, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 377, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 378, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":379
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 379, __pyx_L1_error)
    try {
      __pyx_t_6->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 379, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 380, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":381
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 381, __pyx_L1_error)
    try {
      __pyx_t_7->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 381, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 382, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":383
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 383, __pyx_L1_error)
    try {
      __pyx_t_8->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 383, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 384, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":385
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 385, __pyx_L1_error)
    try {
      __pyx_t_9->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 385, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":387
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 387, __pyx_L1_error)
    try {
      __pyx_t_10->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 387, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 388, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":389
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 389, __pyx_L1_error)
    try {
      __pyx_t_11->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 389, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":390
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 390, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_28numBins, "BinnedHisto2D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedHisto.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 394, __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, "numBins") < 0)) __PYX_ERR(20, 394, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(20, 394, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedHisto2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 397, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":398
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 398, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 398, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 398, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 398, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":400
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 400, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 400, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 400, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 400, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":402
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 402, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 402, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 402, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":404
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 404, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 404, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 404, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":406
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 406, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 406, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 406, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":408
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 408, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 408, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 408, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":410
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 410, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 410, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 410, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":412
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 412, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 412, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 412, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":414
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 414, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 414, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 414, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 414, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":415
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 415, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

  /* 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.BinnedHisto2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_30isMasked, "BinnedHisto2D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 418, __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, "isMasked") < 0)) __PYX_ERR(20, 418, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedHisto2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":421
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 421, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 421, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 421, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 422, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":423
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 423, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 423, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 423, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 424, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":425
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 425, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 425, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 425, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":427
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 427, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 427, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":429
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 429, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 429, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 429, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":431
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 431, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 431, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 431, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":433
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 433, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 433, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 433, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 434, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":435
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 435, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 435, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 435, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":437
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 437, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 437, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 437, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":438
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 438, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_32isVisible, "BinnedHisto2D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 441, __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, "isVisible") < 0)) __PYX_ERR(20, 441, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 441, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedHisto2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 443, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":444
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 444, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 444, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 444, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 445, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":446
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 446, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 446, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 446, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 447, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":448
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 448, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 448, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 448, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 449, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":450
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 450, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 450, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 450, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":452
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 452, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":454
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 454, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 455, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":456
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 456, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 456, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 456, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 457, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":458
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 458, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 458, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":460
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 460, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 460, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 460, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":461
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 461, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_34binDim, "BinnedHisto2D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedHisto2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 466, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":467
 *         """Return binning dimension."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 467, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 467, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 468, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":469
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 469, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 469, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":471
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 471, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 471, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":473
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 473, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 473, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 474, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":475
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 475, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 475, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":477
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 477, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 477, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 478, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":479
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 479, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 479, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 480, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":481
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 481, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 481, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":483
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 483, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 483, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":484
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 484, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto2D.pyx":488
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(20, 488, __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(20, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedHisto2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_38bins, "BinnedHisto2D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_38bins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 490, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 490, __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, "bins") < 0)) __PYX_ERR(20, 490, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(20, 490, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_38bins(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedHisto2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(20, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 492, __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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 492, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(20, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(20, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(20, 492, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(20, 493, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(20, 493, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedHisto2D.pyx":494
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(20, 494, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(20, 494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedHisto2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedHisto2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 492, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(20, 492, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedHisto2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(20, 492, __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/generated/BinnedHisto2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.bins", __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/generated/BinnedHisto2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_40_bin, "BinnedHisto2D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 496, __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(20, 496, __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(20, 496, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 496, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_17;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_18;
  std::vector<size_t>  __pyx_t_19;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_20;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_21;
  std::vector<size_t>  __pyx_t_22;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_23;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_24;
  std::vector<size_t>  __pyx_t_25;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_26;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_27;
  std::vector<size_t>  __pyx_t_28;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_29;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_30;
  std::vector<size_t>  __pyx_t_31;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_32;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_33;
  std::vector<size_t>  __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedHisto2D.pyx":498
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn2D)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":499
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin2D(Dbn2D)
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(20, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto2D.pyx":500
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn2D)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin2D(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn2D)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 501, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":502
 *         b = Bin2D(Dbn2D)
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 502, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 502, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":503
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 503, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 503, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(20, 503, __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/generated/BinnedHisto2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn2D)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 504, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":505
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 505, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 505, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":506
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 506, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 506, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 506, __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/generated/BinnedHisto2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 507, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":508
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 508, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 508, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":509
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 509, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 509, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(20, 509, __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/generated/BinnedHisto2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 510, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":511
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 511, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 511, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_18), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":512
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 512, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_17->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 512, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_19); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 512, __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/generated/BinnedHisto2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 513, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":514
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 514, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 514, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_21), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":515
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 515, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_20->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 515, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(20, 515, __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/generated/BinnedHisto2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 516, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":517
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 517, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 517, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_24), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":518
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_23 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 518, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_23->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 518, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_25); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 518, __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/generated/BinnedHisto2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 519, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":520
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 520, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 520, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_27), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":521
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_26 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 521, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_26->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 521, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(20, 521, __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/generated/BinnedHisto2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 522, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":523
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 523, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 523, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_30), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":524
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_29 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 524, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_29->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 524, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_31); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 524, __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/generated/BinnedHisto2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(20, 525, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto2D.pyx":526
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 526, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 526, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_33), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto2D.pyx":527
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_32 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 527, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_32->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 527, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(20, 527, __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/generated/BinnedHisto2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":528
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 528, __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/generated/BinnedHisto2D.pyx":529
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_42bin, "BinnedHisto2D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_42bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_42bin(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedHisto2D.pyx":533
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 533, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 533, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 533, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":534
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 534, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto2D.pyx":535
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(20, 535, __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/generated/BinnedHisto2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedHisto2D.bin", __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;
}

/* "include/generated/BinnedHisto2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_44binAt, "BinnedHisto2D.binAt(self, x, y)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 537, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 537, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, 1); __PYX_ERR(20, 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, "binAt") < 0)) __PYX_ERR(20, 537, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(20, 537, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedHisto2D.pyx":539
 *     def binAt(self, x, y):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(20, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(20, 539, __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
  if (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;
    }
  }
  #endif
  {
    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(20, 539, __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/generated/BinnedHisto2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_46maskBin, "BinnedHisto2D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 541, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 541, __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, "maskBin") < 0)) __PYX_ERR(20, 541, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(20, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedHisto2D<double,double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedHisto2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":544
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 544, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":546
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 546, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 546, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 546, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 546, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 547, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":548
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 548, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 548, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 548, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 548, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 549, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":550
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 550, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 550, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 550, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 550, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 551, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":552
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 552, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 552, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 552, __pyx_L1_error)
    try {
      __pyx_t_10->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 552, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 553, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":554
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 554, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 554, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 554, __pyx_L1_error)
    try {
      __pyx_t_11->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 554, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 555, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":556
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 556, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 556, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 556, __pyx_L1_error)
    try {
      __pyx_t_12->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 556, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 557, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":558
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 558, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 558, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 558, __pyx_L1_error)
    try {
      __pyx_t_13->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 558, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 559, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":560
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 560, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 560, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 560, __pyx_L1_error)
    try {
      __pyx_t_14->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 560, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 561, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":562
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 562, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 562, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 562, __pyx_L1_error)
    try {
      __pyx_t_15->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 562, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedHisto2D.maskBin", __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;
}

/* "include/generated/BinnedHisto2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_48maskBins, "BinnedHisto2D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 564, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 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, "maskBins") < 0)) __PYX_ERR(20, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(20, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedHisto2D.pyx":566
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 566, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 566, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 566, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 567, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(20, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(20, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(20, 567, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":568
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, y, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maskBins", __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;
}

/* "include/generated/BinnedHisto2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_50maskBinAt, "BinnedHisto2D.maskBinAt(self, x, y, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 570, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 570, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, 1); __PYX_ERR(20, 570, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 570, __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, "maskBinAt") < 0)) __PYX_ERR(20, 570, __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_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, __pyx_nargs); __PYX_ERR(20, 570, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedHisto2D.pyx":572
 *     def maskBinAt(self, x, y, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(20, 572, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(20, 572, __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/generated/BinnedHisto2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

  /* 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.BinnedHisto2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_52maskSlice, "BinnedHisto2D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 574, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 574, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(20, 574, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 574, __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, "maskSlice") < 0)) __PYX_ERR(20, 574, __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_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(20, 574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedHisto2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":577
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 577, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 577, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 577, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(20, 577, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":579
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 579, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 579, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 579, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 579, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 579, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":581
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 581, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 581, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 581, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 581, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(20, 581, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 582, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":583
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 583, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 583, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 583, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 583, __pyx_L1_error)
    try {
      __pyx_t_9->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 583, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 584, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":585
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 585, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 585, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 585, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 585, __pyx_L1_error)
    try {
      __pyx_t_10->maskSlice(__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(20, 585, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 586, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":587
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 587, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 587, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 587, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 587, __pyx_L1_error)
    try {
      __pyx_t_11->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 587, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 588, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":589
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 589, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 589, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 589, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 589, __pyx_L1_error)
    try {
      __pyx_t_12->maskSlice(__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(20, 589, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":591
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 591, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 591, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 591, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 591, __pyx_L1_error)
    try {
      __pyx_t_13->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 591, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 592, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":593
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 593, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 593, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 593, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 593, __pyx_L1_error)
    try {
      __pyx_t_14->maskSlice(__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(20, 593, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedHisto2D.pyx":596
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 596, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(20, 596, __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(20, 596, __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(20, 596, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedHisto2D.pyx":597
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 597, __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/generated/BinnedHisto2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_56mkEstimate, "BinnedHisto2D.mkEstimate(self, str path='', str source='', divbyvol=True)\nNone -> Estimate.\n\n        Convert this BinnedHisto2D to an BinnedEstimate2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_57mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_56mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  PyObject *__pyx_v_divbyvol = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,&__pyx_n_s_divbyvol,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 599, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 599, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_divbyvol);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 599, __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, "mkEstimate") < 0)) __PYX_ERR(20, 599, __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_path = ((PyObject*)values[0]);
    __pyx_v_source = ((PyObject*)values[1]);
    __pyx_v_divbyvol = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 3, __pyx_nargs); __PYX_ERR(20, 599, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(20, 599, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(20, 599, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_56mkEstimate(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_path, __pyx_v_source, __pyx_v_divbyvol);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  unsigned int __pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkEstimate", 1);

  /* "include/generated/BinnedHisto2D.pyx":603
 * 
 *         Convert this BinnedHisto2D to an BinnedEstimate2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":604
 *         Convert this BinnedHisto2D to an BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":605
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 605, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 605, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 605, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 605, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":606
 *         if self._config == "dd":
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":604
 *         Convert this BinnedHisto2D to an BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":607
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 607, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":608
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 608, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 608, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 608, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 608, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_7, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":609
 *         elif self._config == "di":
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":607
 *           tmp = c.BH_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":610
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 610, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":611
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 611, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 611, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 611, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 611, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":612
 *         elif self._config == "ds":
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":610
 *           tmp = c.BH_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":613
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":614
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 614, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 614, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 614, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 614, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_9, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":615
 *         elif self._config == "id":
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":613
 *           tmp = c.BH_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":616
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 616, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":617
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 617, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 617, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 617, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 617, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":618
 *         elif self._config == "ii":
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":616
 *           tmp = c.BH_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":619
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 619, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":620
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 620, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 620, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 620, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 620, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_11, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":621
 *         elif self._config == "is":
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":619
 *           tmp = c.BH_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":622
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":623
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 623, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 623, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 623, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 623, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_12, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":624
 *         elif self._config == "sd":
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":622
 *           tmp = c.BH_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":625
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 625, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":626
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 626, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 626, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 626, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 626, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_13, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":627
 *         elif self._config == "si":
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":625
 *           tmp = c.BH_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":628
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 628, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":629
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 629, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 629, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 629, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 629, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_14, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto2D.pyx":630
 *         elif self._config == "ss":
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto2D.pyx":628
 *           tmp = c.BH_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":631
 *           tmp = c.BH_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_16 = NULL;
  __pyx_t_17 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_16)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_16);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
      __pyx_t_17 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_v_self->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_17, 1+__pyx_t_17);
    __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/BinnedHisto2D.pyx":632
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.mkEstimate", __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/generated/BinnedHisto2D.pyx":634
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_58mkScatter, "BinnedHisto2D.mkScatter(self, path='', binwidthdiv=True, useFocus=False, includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter3D.\n\n        Make a new Scatter3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_59mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_58mkScatter};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_binwidthdiv = 0;
  PyObject *__pyx_v_useFocus = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_binwidthdiv,&__pyx_n_s_useFocus,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 634, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_useFocus);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 634, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 634, __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(20, 634, __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);
        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_path = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_useFocus = values[2];
    __pyx_v_includeOverflows = values[3];
    __pyx_v_includeMaskedBins = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 5, __pyx_nargs); __PYX_ERR(20, 634, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_58mkScatter(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_path, __pyx_v_binwidthdiv, __pyx_v_useFocus, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter3D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  bool __pyx_t_7;
  YODA::Scatter3D __pyx_t_8;
  YODA::Scatter3D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_14;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedHisto2D.pyx":638
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 638, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":639
 *         Make a new Scatter3D."""
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 639, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 639, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 639, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 639, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 639, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 639, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 639, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":640
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 640, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":638
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":641
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 641, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":642
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 642, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 642, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 642, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 642, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 642, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 642, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 642, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":643
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 643, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 643, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":641
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":644
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 644, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":645
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 645, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 645, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 645, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 645, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 645, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 645, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 645, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":646
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 646, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":644
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":647
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 647, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":648
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 648, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 648, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 648, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 648, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 648, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 648, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 648, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":649
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 649, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":647
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":650
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 650, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":651
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 651, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 651, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 651, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 651, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 651, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 651, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 651, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":652
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 652, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":650
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":653
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 653, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":654
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 654, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 654, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 654, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 654, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 654, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 654, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 654, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":655
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 655, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":653
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":656
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 656, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":657
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 657, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 657, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 657, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 657, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 657, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 657, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 657, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":658
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 658, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":656
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":659
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 659, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":660
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 660, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 660, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 660, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 660, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 660, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 660, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_17->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 660, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":661
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 661, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":659
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":662
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 662, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":663
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 663, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 663, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 663, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 663, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 663, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 663, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_18->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 663, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":664
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedHisto2D self, BinnedHisto2D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 664, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":662
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":634
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

  /* 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.BinnedHisto2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":666
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedHisto2D self, BinnedHisto2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto2D -> BinnedEstimate2D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_61divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_60divideBy, "BinnedHisto2D.divideBy(self, BinnedHisto2D other, efficiency=False)\nBinnedHisto2D -> BinnedEstimate2D\n\n        Divide this BinnedHisto2D by other,\n        returning a BinnedEstimate2D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_61divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_60divideBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_61divideBy(PyObject *__pyx_v_self, 
#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_BinnedHisto2D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 666, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 666, __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(20, 666, __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_BinnedHisto2D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(20, 666, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.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_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 666, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_60divideBy(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedHisto2D.pyx":672
 *         returning a BinnedEstimate2D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 672, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 672, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 672, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":673
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "dd":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":674
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 674, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":675
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 675, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":676
 *         if efficiency:
 *           if self._config == "dd":
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 676, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 676, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedHisto2D.pyx":677
 *           if self._config == "dd":
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":675
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":678
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 678, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":679
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 679, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 679, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedHisto2D.pyx":680
 *           elif self._config == "di":
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 680, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":678
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":681
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 681, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":682
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 682, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 682, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedHisto2D.pyx":683
 *           elif self._config == "ds":
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 683, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":681
 *             tmp = c.BH_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":684
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 684, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":685
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 685, __pyx_L1_error)
      __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 685, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_9, __pyx_t_10);

      /* "include/generated/BinnedHisto2D.pyx":686
 *           elif self._config == "id":
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 686, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":684
 *             tmp = c.BH_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":687
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 687, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":688
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 688, __pyx_L1_error)
      __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 688, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_11, __pyx_t_12);

      /* "include/generated/BinnedHisto2D.pyx":689
 *           elif self._config == "ii":
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":687
 *             tmp = c.BH_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":690
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 690, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":691
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 691, __pyx_L1_error)
      __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 691, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_13, __pyx_t_14);

      /* "include/generated/BinnedHisto2D.pyx":692
 *           elif self._config == "is":
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":690
 *             tmp = c.BH_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":693
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 693, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":694
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 694, __pyx_L1_error)
      __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 694, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_15, __pyx_t_16);

      /* "include/generated/BinnedHisto2D.pyx":695
 *           elif self._config == "sd":
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 695, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":693
 *             tmp = c.BH_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":696
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 696, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":697
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 697, __pyx_L1_error)
      __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 697, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_17, __pyx_t_18);

      /* "include/generated/BinnedHisto2D.pyx":698
 *           elif self._config == "si":
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BH_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 698, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":696
 *             tmp = c.BH_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedHisto2D.pyx":699
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 699, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":700
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BH_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 */
      __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 700, __pyx_L1_error)
      __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 700, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_19, __pyx_t_20);

      /* "include/generated/BinnedHisto2D.pyx":701
 *           elif self._config == "ss":
 *             tmp = c.BH_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "dd":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":699
 *             tmp = c.BH_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedHisto2D.pyx":674
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BH_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":703
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 703, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":704
 *         else:
 *           if self._config == "dd":
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 704, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 704, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedHisto2D.pyx":705
 *           if self._config == "dd":
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 705, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":703
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":706
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 706, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":707
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 707, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 707, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedHisto2D.pyx":708
 *           elif self._config == "di":
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 708, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":706
 *             tmp = c.BH_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":709
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 709, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":710
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 710, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 710, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedHisto2D.pyx":711
 *           elif self._config == "ds":
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 711, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":709
 *             tmp = c.BH_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":712
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 712, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":713
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 713, __pyx_L1_error)
      __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 713, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_10, __pyx_t_9);

      /* "include/generated/BinnedHisto2D.pyx":714
 *           elif self._config == "id":
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 714, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":712
 *             tmp = c.BH_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":715
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 715, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":716
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 716, __pyx_L1_error)
      __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 716, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_12, __pyx_t_11);

      /* "include/generated/BinnedHisto2D.pyx":717
 *           elif self._config == "ii":
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":715
 *             tmp = c.BH_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":718
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 718, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":719
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 719, __pyx_L1_error)
      __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 719, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_14, __pyx_t_13);

      /* "include/generated/BinnedHisto2D.pyx":720
 *           elif self._config == "is":
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 720, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":718
 *             tmp = c.BH_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":721
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 721, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":722
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 722, __pyx_L1_error)
      __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 722, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_16, __pyx_t_15);

      /* "include/generated/BinnedHisto2D.pyx":723
 *           elif self._config == "sd":
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":721
 *             tmp = c.BH_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":724
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 724, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":725
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 725, __pyx_L1_error)
      __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 725, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_18, __pyx_t_17);

      /* "include/generated/BinnedHisto2D.pyx":726
 *           elif self._config == "si":
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":724
 *             tmp = c.BH_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedHisto2D.pyx":727
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 727, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto2D.pyx":728
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 728, __pyx_L1_error)
      __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 728, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_20, __pyx_t_19);

      /* "include/generated/BinnedHisto2D.pyx":729
 *           elif self._config == "ss":
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 729, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":727
 *             tmp = c.BH_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":730
 *             tmp = c.BH_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(20, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_22 = NULL;
  __pyx_t_23 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_22)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_22);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_23 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 730, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto2D.pyx":731
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedHisto2D self, BinnedHisto2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":666
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedHisto2D self, BinnedHisto2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto2D -> BinnedEstimate2D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.divideBy", __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/generated/BinnedHisto2D.pyx":733
 *         return rtn
 * 
 *     def __div__(BinnedHisto2D self, BinnedHisto2D 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_13BinnedHisto2D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 733, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_62__div__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedHisto2D.pyx":734
 * 
 *     def __div__(BinnedHisto2D self, BinnedHisto2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedHisto2D self, BinnedHisto2D 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(20, 734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(20, 734, __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/generated/BinnedHisto2D.pyx":733
 *         return rtn
 * 
 *     def __div__(BinnedHisto2D self, BinnedHisto2D 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.BinnedHisto2D.__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/generated/BinnedHisto2D.pyx":736
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 736, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_64__truediv__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedHisto2D.pyx":737
 * 
 *     def __truediv__(BinnedHisto2D self, BinnedHisto2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(20, 737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(20, 737, __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/generated/BinnedHisto2D.pyx":736
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto2D self, BinnedHisto2D 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.BinnedHisto2D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":739
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_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_13BinnedHisto2D_66_mknp, "BinnedHisto2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_67_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_66_mknp};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 739, __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(20, 739, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 739, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_66_mknp(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedHisto2D.pyx":740
 * 
 *     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/generated/BinnedHisto2D.pyx":741
 *     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(20, 741, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto2D.pyx":742
 *         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(20, 742, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(20, 742, __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/generated/BinnedHisto2D.pyx":740
 * 
 *     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/generated/BinnedHisto2D.pyx":743
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedHisto2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(20, 743, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedHisto2D.pyx":744
 *             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/generated/BinnedHisto2D.pyx":740
 * 
 *     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/generated/BinnedHisto2D.pyx":739
 *         return self.divideBy(other)
 * 
 *     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.BinnedHisto2D._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/generated/BinnedHisto2D.pyx":747
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_68lengthContent, "BinnedHisto2D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_69lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_68lengthContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 747, __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, "lengthContent") < 0)) __PYX_ERR(20, 747, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 747, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_68lengthContent(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedHisto2D.pyx":749
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":750
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 750, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 750, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 750, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":749
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":751
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 751, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":752
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 752, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 752, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 752, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":751
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":753
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 753, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":754
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 754, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 754, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 754, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":753
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":755
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 755, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":756
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 756, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 756, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 756, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":755
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":757
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 757, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":758
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 758, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 758, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 758, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":757
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":759
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 759, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":760
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 760, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 760, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 760, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":759
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":761
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 761, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":762
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 762, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 762, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 762, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":761
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":763
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 763, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":764
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 764, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 764, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 764, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":763
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":765
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 765, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":766
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 766, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 766, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 766, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":765
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":767
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 767, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":747
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":769
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_70serializeContent, "BinnedHisto2D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_71serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_70serializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 769, __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, "serializeContent") < 0)) __PYX_ERR(20, 769, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 769, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_70serializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedHisto2D.pyx":771
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 771, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":772
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 772, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 772, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 772, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":771
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":773
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 773, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":774
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 774, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 774, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 774, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":773
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":775
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 775, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":776
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 776, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 776, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 776, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":775
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":777
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":778
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 778, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 778, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 778, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":777
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":779
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 779, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":780
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 780, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 780, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 780, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":779
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":781
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 781, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":782
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 782, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 782, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 782, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":781
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":783
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 783, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":784
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 784, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 784, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 784, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":783
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":785
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 785, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":786
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 786, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 786, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 786, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":785
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":787
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 787, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":788
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 788, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 788, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 788, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":787
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":789
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 789, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":769
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":791
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_72deserializeContent, "BinnedHisto2D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_73deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_72deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 791, __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, "deserializeContent") < 0)) __PYX_ERR(20, 791, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 791, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_72deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedHisto2D.pyx":794
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 794, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 794, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(20, 794, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 794, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 794, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(20, 794, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 794, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(20, 794, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(20, 794, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 794, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto2D.pyx":795
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 795, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":796
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 796, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 796, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 796, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":795
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":797
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 797, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":798
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 798, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 798, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 798, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":797
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":799
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 799, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":800
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 800, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 800, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 800, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 800, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":799
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":801
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 801, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":802
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 802, __pyx_L1_error)
    __pyx_t_15 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 802, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeContent(__pyx_t_15);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 802, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 802, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":801
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":803
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 803, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":804
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 804, __pyx_L1_error)
    __pyx_t_17 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 804, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeContent(__pyx_t_17);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 804, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":803
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":805
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 805, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":806
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 806, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 806, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeContent(__pyx_t_19);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 806, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":805
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":807
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 807, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":808
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 808, __pyx_L1_error)
    __pyx_t_21 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 808, __pyx_L1_error)
    try {
      __pyx_t_20->deserializeContent(__pyx_t_21);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 808, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 808, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":807
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":809
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 809, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":810
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 810, __pyx_L1_error)
    __pyx_t_23 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 810, __pyx_L1_error)
    try {
      __pyx_t_22->deserializeContent(__pyx_t_23);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 810, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":809
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":811
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 811, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":812
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 812, __pyx_L1_error)
    __pyx_t_25 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 812, __pyx_L1_error)
    try {
      __pyx_t_24->deserializeContent(__pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 812, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":811
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":813
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 813, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":791
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":815
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_74lengthMeta, "BinnedHisto2D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_75lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_74lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 815, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 815, __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, "lengthMeta") < 0)) __PYX_ERR(20, 815, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(20, 815, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_74lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedHisto2D.pyx":817
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 817, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":818
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 818, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 818, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 818, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 818, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 818, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":817
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":819
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 819, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":820
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 820, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 820, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 820, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 820, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 820, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":819
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":821
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 821, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":822
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 822, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 822, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 822, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 822, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":821
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":823
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 823, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":824
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 824, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 824, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 824, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 824, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 824, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":823
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":825
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 825, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":826
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 826, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 826, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 826, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 826, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":825
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":827
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 827, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":828
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 828, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 828, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 828, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 828, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":827
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":829
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 829, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":830
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 830, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 830, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 830, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 830, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 830, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":829
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":831
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 831, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":832
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 832, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 832, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 832, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 832, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":831
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":833
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 833, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":834
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 834, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 834, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 834, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 834, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 834, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":833
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":835
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 835, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":815
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":837
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_76serializeMeta, "BinnedHisto2D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_77serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_76serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 837, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 837, __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, "serializeMeta") < 0)) __PYX_ERR(20, 837, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(20, 837, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_76serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_21;
  std::vector<std::string>  __pyx_t_22;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedHisto2D.pyx":839
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 839, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":840
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 840, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 840, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 840, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 840, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 840, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":839
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":841
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 841, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":842
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 842, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 842, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 842, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 842, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 842, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":841
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":843
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 843, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":844
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 844, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 844, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 844, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 844, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":843
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":845
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 845, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":846
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 846, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 846, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 846, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 846, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 846, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":845
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":847
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 847, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":848
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 848, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 848, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 848, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 848, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":847
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":849
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 849, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":850
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 850, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 850, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 850, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 850, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 850, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":849
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":851
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 851, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":852
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 852, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 852, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 852, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 852, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 852, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":851
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":853
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 853, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":854
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 854, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 854, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 854, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 854, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 854, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":853
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":855
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 855, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":856
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 856, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 856, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 856, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 856, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_22); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 856, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":855
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":857
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 857, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":837
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":859
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_78deserializeMeta, "BinnedHisto2D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_79deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_78deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 859, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 859, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 859, __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, "deserializeMeta") < 0)) __PYX_ERR(20, 859, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(20, 859, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_78deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_14;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedHisto2D.pyx":862
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 862, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 862, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 862, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(20, 862, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 862, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(20, 862, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(20, 862, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 862, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(20, 862, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 862, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(20, 862, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto2D.pyx":863
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 863, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":864
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 864, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 864, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 864, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 864, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 864, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":863
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":865
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 865, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":866
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 866, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 866, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 866, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 866, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":865
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":867
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 867, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":868
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 868, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 868, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 868, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 868, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":867
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":869
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 869, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":870
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 870, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 870, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 870, __pyx_L1_error)
    try {
      __pyx_t_13->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 870, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":869
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":871
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 871, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":872
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 872, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 872, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 872, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 872, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":871
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":873
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 873, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":874
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 874, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 874, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 874, __pyx_L1_error)
    try {
      __pyx_t_15->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 874, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":873
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":875
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 875, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":876
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 876, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 876, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 876, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 876, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":875
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":877
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 877, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":878
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 878, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 878, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 878, __pyx_L1_error)
    try {
      __pyx_t_17->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 878, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":877
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":879
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(20, 879, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto2D.pyx":880
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 880, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 880, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 880, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 880, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":879
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":881
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 881, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":859
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":884
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_80fill, "BinnedHisto2D.fill(self, x, y, weight=1.0, fraction=1.0)\n\n        ([coords], float weight=1.0, float fraction=1.0) -> int\n\n        Fills the distribution with the given weight at given [coords].\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_81fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_80fill};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 884, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 884, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(20, 884, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 884, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 884, __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(20, 884, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(20, 884, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_80fill(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_9;
  int __pyx_t_10;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_11;
  std::string __pyx_t_12;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_14;
  int __pyx_t_15;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  std::string __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/generated/BinnedHisto2D.pyx":890
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 890, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":891
 *         """
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 891, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 891, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 891, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 891, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 891, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->fill(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 891, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 891, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":890
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":892
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 892, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":893
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 893, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 893, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 893, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 893, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 893, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->fill(__pyx_t_6, __pyx_t_7, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 893, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 893, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":892
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":894
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 894, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":895
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 895, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 895, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 895, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 895, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 895, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_11->fill(__pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 895, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":894
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":896
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 896, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":897
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 897, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 897, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 897, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 897, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 897, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_13->fill(__pyx_t_10, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 897, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":896
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, weight, fraction)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":898
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 898, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":899
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 899, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 899, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 899, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 899, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 899, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->fill(__pyx_t_7, __pyx_t_10, __pyx_t_4, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 899, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":898
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":900
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 900, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":901
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 901, __pyx_L1_error)
    __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 901, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 901, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 901, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 901, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_16->fill(__pyx_t_15, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 901, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 901, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":900
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, weight, fraction)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":902
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 902, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":903
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 903, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 903, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 903, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 903, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 903, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_17->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 903, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":902
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, weight, fraction)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":904
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 904, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":905
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 905, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 905, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 905, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 905, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 905, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_18->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __pyx_t_10, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 905, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":904
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, weight, fraction)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":906
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 906, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":907
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 907, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 907, __pyx_L1_error)
    __pyx_t_20 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 907, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 907, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 907, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_19->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_20), __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 907, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_15); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":906
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, weight, fraction)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":908
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 908, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":884
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

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

/* "include/generated/BinnedHisto2D.pyx":911
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_82indexAt, "BinnedHisto2D.indexAt(self, x, y)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_83indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_82indexAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 911, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 911, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, 1); __PYX_ERR(20, 911, __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, "indexAt") < 0)) __PYX_ERR(20, 911, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(20, 911, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_82indexAt(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  int __pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  std::string __pyx_t_10;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  int __pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_17;
  std::string __pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedHisto2D.pyx":912
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 912, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":913
 *     def indexAt(self, x, y):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 913, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 913, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 913, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->indexAt(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 913, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":912
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":914
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 914, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":915
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 915, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 915, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 915, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->indexAt(__pyx_t_4, __pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 915, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":914
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":916
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 916, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":917
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 917, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 917, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 917, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->indexAt(__pyx_t_4, __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(20, 917, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":916
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":918
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 918, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":919
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 919, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 919, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 919, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->indexAt(__pyx_t_8, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 919, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":918
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":920
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 920, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":921
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 921, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 921, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 921, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->indexAt(__pyx_t_8, __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 921, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 921, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":920
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":922
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 922, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":923
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 923, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 923, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 923, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->indexAt(__pyx_t_13, __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(20, 923, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 923, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":922
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":924
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 924, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":925
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 925, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 925, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 925, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_15->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 925, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 925, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":924
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":926
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 926, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":927
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 927, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 927, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 927, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_16->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 927, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 927, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":926
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":928
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 928, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":929
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 929, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 929, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 929, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_17->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_18));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 929, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 929, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":928
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":930
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def fillDim(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 930, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":911
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

  /* 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.BinnedHisto2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":932
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_84fillDim, "BinnedHisto2D.fillDim(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_85fillDim = {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_84fillDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("fillDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fillDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_84fillDim(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillDim", 1);

  /* "include/generated/BinnedHisto2D.pyx":933
 * 
 *     def fillDim(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 933, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":934
 *     def fillDim(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 934, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 934, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":933
 * 
 *     def fillDim(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":935
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 935, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":936
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 936, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 936, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":935
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":937
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 937, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":938
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 938, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 938, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":937
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":939
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 939, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":940
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 940, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 940, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":939
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":941
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 941, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":942
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 942, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 942, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":941
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":943
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 943, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":944
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 944, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 944, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":943
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":945
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 945, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":946
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 946, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 946, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":945
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":947
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 947, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":948
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 948, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 948, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":947
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":949
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 949, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":950
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 950, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 950, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":949
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":951
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 951, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":932
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */

  /* 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.BinnedHisto2D.fillDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":953
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_86normalize, "BinnedHisto2D.normalize(self, normto=1.0, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_87normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_86normalize};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 953, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 953, __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(20, 953, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(20, 953, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_86normalize(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 1);

  /* "include/generated/BinnedHisto2D.pyx":954
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 954, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":955
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 955, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 955, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 955, __pyx_L1_error)
    try {
      __pyx_t_2->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 955, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":954
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":956
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 956, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":957
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 957, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 957, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 957, __pyx_L1_error)
    try {
      __pyx_t_6->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 957, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":956
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":958
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 958, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":959
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 959, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 959, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 959, __pyx_L1_error)
    try {
      __pyx_t_7->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 959, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":958
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":960
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 960, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":961
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 961, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 961, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 961, __pyx_L1_error)
    try {
      __pyx_t_8->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 961, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":960
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":962
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 962, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":963
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 963, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 963, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 963, __pyx_L1_error)
    try {
      __pyx_t_9->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 963, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 963, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":962
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":964
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 964, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":965
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 965, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 965, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 965, __pyx_L1_error)
    try {
      __pyx_t_10->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 965, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 965, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":964
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":966
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 966, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":967
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 967, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 967, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 967, __pyx_L1_error)
    try {
      __pyx_t_11->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 967, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":966
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":968
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 968, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":969
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 969, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 969, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 969, __pyx_L1_error)
    try {
      __pyx_t_12->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 969, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":968
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":970
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 970, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":971
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 971, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 971, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 971, __pyx_L1_error)
    try {
      __pyx_t_13->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 971, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":970
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":972
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, factor):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 972, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":953
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":974
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_88scaleW, "BinnedHisto2D.scaleW(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_89scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_88scaleW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 974, __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(20, 974, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 974, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_88scaleW(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 1);

  /* "include/generated/BinnedHisto2D.pyx":975
 * 
 *     def scaleW(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 975, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":976
 *     def scaleW(self, factor):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 976, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 976, __pyx_L1_error)
    try {
      __pyx_t_2->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 976, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 976, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":975
 * 
 *     def scaleW(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":977
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 977, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":978
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 978, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 978, __pyx_L1_error)
    try {
      __pyx_t_5->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 978, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":977
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":979
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 979, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":980
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 980, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 980, __pyx_L1_error)
    try {
      __pyx_t_6->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 980, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":979
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":981
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 981, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":982
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 982, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 982, __pyx_L1_error)
    try {
      __pyx_t_7->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 982, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 982, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":981
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":983
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 983, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":984
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 984, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 984, __pyx_L1_error)
    try {
      __pyx_t_8->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 984, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 984, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":983
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":985
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 985, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":986
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 986, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 986, __pyx_L1_error)
    try {
      __pyx_t_9->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 986, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 986, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":985
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":987
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 987, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":988
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 988, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 988, __pyx_L1_error)
    try {
      __pyx_t_10->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 988, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":987
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":989
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 989, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":990
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 990, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 990, __pyx_L1_error)
    try {
      __pyx_t_11->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 990, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":989
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":991
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 991, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":992
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 992, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 992, __pyx_L1_error)
    try {
      __pyx_t_12->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 992, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 992, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":991
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":993
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 993, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":974
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */

  /* 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.BinnedHisto2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":995
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_90sumW, "BinnedHisto2D.sumW(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_91sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_90sumW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 995, __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(20, 995, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 995, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_90sumW(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 1);

  /* "include/generated/BinnedHisto2D.pyx":996
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 996, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":997
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 997, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 997, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 997, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 997, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":996
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":998
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 998, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":999
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 999, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 999, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 999, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":998
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1000
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1000, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1001
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1001, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1001, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1001, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1000
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1002
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1002, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1003
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1003, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1003, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1003, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1003, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1002
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1004
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1004, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1005
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1005, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1005, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1005, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1005, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1004
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1006
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1006, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1007
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1007, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1007, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1007, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1006
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1008
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1008, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1009
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1009, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1009, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1009, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1009, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1008
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1010
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1010, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1011
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1011, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1011, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1011, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1010
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1012
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1012, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1013
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1013, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1013, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1013, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1013, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1012
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1014
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1014, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":995
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1016
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_92sumW2, "BinnedHisto2D.sumW2(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_93sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_92sumW2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1016, __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(20, 1016, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1016, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_92sumW2(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 1);

  /* "include/generated/BinnedHisto2D.pyx":1017
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1017, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1018
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1018, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1018, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1018, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1018, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1017
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1019
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1019, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1020
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1020, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1020, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1020, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1019
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1021
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1021, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1022
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1022, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1022, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1022, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1021
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1023
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1023, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1024
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1024, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1024, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1024, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1023
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1025
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1025, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1026
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1026, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1026, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1026, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1026, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1025
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1027
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1027, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1028
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1028, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1028, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1028, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1027
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1029
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1029, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1030
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1030, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1030, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1030, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1030, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1029
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1031
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1031, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1032
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1032, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1032, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1032, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1032, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1031
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1033
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1033, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1034
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1034, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1034, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1034, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1033
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1035
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1035, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1016
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1037
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_94sumWA, "BinnedHisto2D.sumWA(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_95sumWA = {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_94sumWA};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1037, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1037, __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, "sumWA") < 0)) __PYX_ERR(20, 1037, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA", 0, 1, 2, __pyx_nargs); __PYX_ERR(20, 1037, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_94sumWA(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA", 1);

  /* "include/generated/BinnedHisto2D.pyx":1038
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1038, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1039
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1039, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1039, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1039, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1039, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1039, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1038
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1040
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1040, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1041
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1041, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1041, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1041, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1041, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1040
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1042
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1042, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1043
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1043, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1043, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1043, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1043, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1042
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1044
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1044, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1045
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1045, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1045, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1045, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1045, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1044
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1046
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1046, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1047
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1047, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1047, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1047, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1047, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1046
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1048
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1048, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1049
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1049, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1049, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1049, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1049, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1049, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1048
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1050
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1050, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1051
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1051, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1051, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1051, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1051, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1050
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1052
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1052, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1053
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1053, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1053, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1053, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1053, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1052
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1054
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1054, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1055
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1055, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1055, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1055, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1055, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1054
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1056
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1056, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1037
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */

  /* 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.BinnedHisto2D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1058
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_96sumWA2, "BinnedHisto2D.sumWA2(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_97sumWA2 = {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_96sumWA2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1058, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1058, __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, "sumWA2") < 0)) __PYX_ERR(20, 1058, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA2", 0, 1, 2, __pyx_nargs); __PYX_ERR(20, 1058, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_96sumWA2(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA2", 1);

  /* "include/generated/BinnedHisto2D.pyx":1059
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1059, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1060
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1060, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1060, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1060, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1060, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1059
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1061
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1061, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1062
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1062, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1062, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1062, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1062, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1062, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1061
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1063
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1063, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1064
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1064, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1064, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1064, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1064, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1063
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1065
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1065, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1066
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1066, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1066, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1066, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1066, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1066, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1065
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1067
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1067, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1068
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1068, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1068, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1068, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1068, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1067
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1069
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1069, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1070
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1070, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1070, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1070, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1070, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1070, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1069
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1071
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1071, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1072
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1072, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1072, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1072, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1072, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1071
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1073
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1073, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1074
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1074, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1074, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1074, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1074, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1073
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1075
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1075, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1076
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1076, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1076, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1076, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1076, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1076, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1075
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1077
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1077, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1058
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */

  /* 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.BinnedHisto2D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1079
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_98numEntries, "BinnedHisto2D.numEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_99numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_98numEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1079, __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(20, 1079, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1079, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_98numEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/generated/BinnedHisto2D.pyx":1080
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1080, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1081
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1081, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1081, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1081, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1080
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1082
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1082, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1083
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1083, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1083, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1083, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1083, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1082
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1084
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1084, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1085
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1085, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1085, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1085, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1085, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1084
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1086
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1086, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1087
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1087, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1087, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1087, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1086
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1088
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1088, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1089
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1089, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1089, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1089, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1088
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1090
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1090, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1091
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1091, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1091, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1091, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1090
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1092
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1092, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1093
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1093, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1093, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1093, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1092
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1094
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1094, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1095
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1095, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1095, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1095, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1094
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1096
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1096, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1097
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1097, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1097, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1097, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1096
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1098
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1098, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1079
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1100
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_100effNumEntries, "BinnedHisto2D.effNumEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_101effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_100effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1100, __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(20, 1100, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_100effNumEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 1);

  /* "include/generated/BinnedHisto2D.pyx":1101
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1101, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1102
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1102, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1102, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1102, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1101
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1103
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1103, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1104
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1104, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1104, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1104, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1103
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1105
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1105, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1106
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1106, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1106, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1106, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1105
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1107
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1107, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1108
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1108, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1108, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1108, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1107
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1109
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1109, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1110
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1110, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1110, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1110, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1109
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1111
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1111, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1112
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1112, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1112, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1112, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1111
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1113
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1113, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1114
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1114, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1114, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1114, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1113
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1115
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1115, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1116
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1116, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1116, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1116, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1115
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1117
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1117, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1118
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1118, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1118, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1118, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1117
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1119
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integral(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1119, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1100
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1121
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_102integral, "BinnedHisto2D.integral(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_103integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_102integral};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1121, __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(20, 1121, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1121, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_102integral(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 1);

  /* "include/generated/BinnedHisto2D.pyx":1122
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1122, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1123
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1123, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1123, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1123, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1122
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1124
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1124, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1125
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1125, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1125, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1125, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1124
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1126
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1126, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1127
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1127, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1127, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1127, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1126
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1128
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1128, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1129
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1129, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1129, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1129, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1128
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1130
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1130, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1131
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1131, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1131, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1131, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1130
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1132
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1132, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1133
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1133, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1133, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1133, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1132
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1134
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1134, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1135
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1135, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1135, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1135, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1134
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1136
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1137
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1137, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1137, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1137, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1136
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1138
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1139
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1139, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1139, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1139, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1138
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1140
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integralError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1140, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1121
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1142
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_104integralError, "BinnedHisto2D.integralError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_105integralError = {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_104integralError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1142, __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, "integralError") < 0)) __PYX_ERR(20, 1142, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralError", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.integralError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_104integralError(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralError", 1);

  /* "include/generated/BinnedHisto2D.pyx":1143
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1143, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1144
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1144, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1144, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1144, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1143
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1145
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1145, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1146
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1146, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1146, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1146, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1145
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1147
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1147, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1148
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1148, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1148, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1148, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1147
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1149
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1149, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1150
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1150, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1150, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1150, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1149
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1151
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1151, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1152
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1152, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1152, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1152, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1151
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1153
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1153, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1154
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1154, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1154, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1154, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1153
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1155
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1155, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1156
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1156, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1156, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1156, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1155
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1157
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1157, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1158
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1158, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1158, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1158, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1157
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1159
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1159, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1160
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1160, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1160, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1160, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1159
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1161
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def dVol(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1161, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1142
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1163
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_106dVol, "BinnedHisto2D.dVol(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_107dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_106dVol};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1163, __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, "dVol") < 0)) __PYX_ERR(20, 1163, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_106dVol(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/BinnedHisto2D.pyx":1164
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1164, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1165
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1165, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1165, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1165, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1164
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1166
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1166, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1167
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1167, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1167, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1167, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1166
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1168
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1168, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1169
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1169, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1169, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1169, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1168
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1170
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1170, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1171
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1171, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1171, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1171, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1170
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1172
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1172, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1173
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1173, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1173, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1173, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1172
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1174
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1174, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1175
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1175, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1175, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1175, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1174
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1176
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1176, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1177
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1177, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1177, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1177, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1176
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1178
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1178, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1179
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1179, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1179, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1179, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1178
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1180
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1180, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1181
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1181, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1181, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1181, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1180
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1182
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def density(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1182, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1163
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1184
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_108density, "BinnedHisto2D.density(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_109density = {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_108density};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("density (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1184, __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, "density") < 0)) __PYX_ERR(20, 1184, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("density", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1184, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.density", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_108density(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("density", 1);

  /* "include/generated/BinnedHisto2D.pyx":1185
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1185, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1186
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1186, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1186, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1186, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1185
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1187
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1187, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1188
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1188, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1188, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1188, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1187
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1189
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1189, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1190
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1190, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1190, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1190, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1189
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1191
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1191, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1192
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1192, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1192, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1192, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1191
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1193
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1193, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1194
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1194, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1194, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1194, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1193
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1195
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1195, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1196
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1196, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1196, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1196, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1195
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1197
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1197, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1198
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1198, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1198, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1198, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1197
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1199
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1199, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1200
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1200, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1200, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1200, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1199
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1201
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1201, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1202
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1202, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1202, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1202, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1201
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1203
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densityError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1203, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1184
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1205
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_110densityError, "BinnedHisto2D.densityError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_111densityError = {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_110densityError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densityError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1205, __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, "densityError") < 0)) __PYX_ERR(20, 1205, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densityError", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1205, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.densityError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_110densityError(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densityError", 1);

  /* "include/generated/BinnedHisto2D.pyx":1206
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1206, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1207
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1207, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1207, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1207, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1206
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1208
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1208, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1209
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1209, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1209, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1209, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1209, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1208
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1210
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1210, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1211
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1211, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1211, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1211, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1210
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1212
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1212, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1213
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1213, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1213, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1213, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1212
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1214
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1214, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1215
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1215, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1215, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1215, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1214
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1216
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1216, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1217
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1217, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1217, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1217, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1216
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1218
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1218, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1219
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1219, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1219, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1219, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1218
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1220
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1221
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1221, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1221, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1221, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1220
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1222
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1223
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1223, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1223, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1223, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1222
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1224
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densitySum(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1224, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1205
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1226
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_112densitySum, "BinnedHisto2D.densitySum(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_113densitySum = {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_112densitySum};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densitySum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1226, __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, "densitySum") < 0)) __PYX_ERR(20, 1226, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densitySum", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1226, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.densitySum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_112densitySum(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densitySum", 1);

  /* "include/generated/BinnedHisto2D.pyx":1227
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1227, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1228
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1228, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1228, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1228, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1227
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1229
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1229, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1230
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1230, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1230, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1230, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1229
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1231
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1231, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1232
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1232, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1232, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1232, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1231
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1233
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1233, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1234
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1234, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1234, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1234, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1233
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1235
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1235, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1236
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1236, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1236, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1236, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1235
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1237
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1237, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1238
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1238, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1238, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1238, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1237
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1239
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1239, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1240
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1240, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1240, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1240, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1239
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1241
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1241, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1242
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1242, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1242, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1242, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1241
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1243
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1243, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1244
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1244, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1244, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1244, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1243
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1245
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maxDensity(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1245, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1226
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1247
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_114maxDensity, "BinnedHisto2D.maxDensity(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_115maxDensity = {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_114maxDensity};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxDensity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1247, __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, "maxDensity") < 0)) __PYX_ERR(20, 1247, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxDensity", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1247, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.maxDensity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_114maxDensity(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxDensity", 1);

  /* "include/generated/BinnedHisto2D.pyx":1248
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1248, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1249
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1249, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1249, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1249, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1248
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1250
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1250, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1251
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1251, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1251, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1251, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1250
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1252
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1252, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1253
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1253, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1253, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1253, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1252
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1254
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1254, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1255
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1255, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1255, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1255, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1254
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1256
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1256, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1257
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1257, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1257, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1257, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1256
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1258
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1258, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1259
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1259, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1259, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1259, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1259, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1258
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1260
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1260, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1261
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1261, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1261, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1261, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1260
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1262
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1263
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1263, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1263, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1263, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1262
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1264
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1265
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1265, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1265, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1265, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1264
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1266
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1266, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1247
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */

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

/* "include/generated/BinnedHisto2D.pyx":1268
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_116maskedBins, "BinnedHisto2D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_117maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_116maskedBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_116maskedBins(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  std::vector<size_t>  __pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  std::vector<size_t>  __pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  std::vector<size_t>  __pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  std::vector<size_t>  __pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  std::vector<size_t>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedHisto2D.pyx":1269
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1269, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1270
 *     def maskedBins(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1270, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1270, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1269
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1271
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1271, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1272
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1272, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1272, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1271
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1273
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1273, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1274
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1274, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1274, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1273
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1275
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1275, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1276
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1276, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1276, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1275
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1277
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1277, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1278
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1278, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1278, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1277
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1279
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1279, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1280
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1280, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1280, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1279
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1281
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1281, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1282
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1282, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1282, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1281
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1283
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1283, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1284
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1284, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1284, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1283
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1285
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1285, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1286
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1286, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1286, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1285
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1287
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1287, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1268
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

  /* 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.BinnedHisto2D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1289
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_118numBinsX, "BinnedHisto2D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_119numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_118numBinsX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1289, __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, "numBinsX") < 0)) __PYX_ERR(20, 1289, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1289, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_118numBinsX(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedHisto2D.pyx":1291
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1292
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1292, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1292, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1292, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1291
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1293
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1294
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1294, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1294, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1294, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1293
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1295
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1296
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1296, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1296, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1296, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1295
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1297
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1297, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1298
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1298, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1298, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1298, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1297
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1299
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1299, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1300
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1300, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1300, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1300, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1299
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1301
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1301, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1302
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1302, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1302, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1302, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1301
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1303
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1303, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1304
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1304, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1304, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1304, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1303
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1305
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1305, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1306
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1306, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1306, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1306, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1305
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1307
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1307, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1308
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1308, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1308, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1308, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1307
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1309
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1309, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1289
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1312
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_120xEdges, "BinnedHisto2D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_121xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_120xEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1312, __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, "xEdges") < 0)) __PYX_ERR(20, 1312, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1312, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_120xEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  std::vector<int>  __pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  std::vector<int>  __pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  std::vector<std::string>  __pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedHisto2D.pyx":1314
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1315
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1315, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1315, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1315, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1314
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1316
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1317
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1317, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1317, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1317, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1316
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1318
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1319
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1319, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1319, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1319, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1318
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1320
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1321
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1321, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1321, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1321, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1320
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1322
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1322, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1323
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1323, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1323, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1323, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1322
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1324
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1324, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1325
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1325, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1325, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1325, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1324
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1326
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1327
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1327, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1327, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1327, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1326
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1328
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1329
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1329, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1329, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1329, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1328
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1330
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1331
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1331, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1331, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1331, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1330
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1332
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1332, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1312
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1335
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_122xWidths, "BinnedHisto2D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_123xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_122xWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1335, __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, "xWidths") < 0)) __PYX_ERR(20, 1335, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_122xWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedHisto2D.pyx":1337
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1337, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1338
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1338, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1338, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1338, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1337
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1339
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1339, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1340
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1340, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1340, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1340, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1339
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1341
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1342
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1342, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1342, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1342, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1341
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1343
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1343, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1335
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1346
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_124xMin, "BinnedHisto2D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_125xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_124xMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_124xMin(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/BinnedHisto2D.pyx":1348
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1348, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1349
 *         """xMin on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1349, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1349, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1348
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1350
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1350, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1351
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1351, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1351, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1350
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1352
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1352, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1353
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1353, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1353, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1352
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1354
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1354, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1346
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1357
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_126xMax, "BinnedHisto2D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_127xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_126xMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_126xMax(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/BinnedHisto2D.pyx":1359
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1360
 *         """xMax on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1360, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1360, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1359
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1361
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1361, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1362
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1362, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1362, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1361
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1363
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1363, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1364
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1364, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1364, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1363
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1365
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1365, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1357
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1368
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_128rebinXBy, "BinnedHisto2D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_129rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_128rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__99);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1368, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1368, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1368, __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, "rebinXBy") < 0)) __PYX_ERR(20, 1368, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(20, 1368, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_128rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedHisto2D.pyx":1370
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1370, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1371
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1371, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1371, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1371, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1371, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(20, 1371, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1370
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1372
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1373
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1373, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1373, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1373, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1373, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1373, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1372
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1374
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1375
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1375, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1375, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1375, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1375, __pyx_L1_error)
    try {
      __pyx_t_8->rebinXBy(__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(20, 1375, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1374
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1376
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1376, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1368
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1379
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_130rebinXTo, "BinnedHisto2D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_131rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_130rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1379, __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, "rebinXTo") < 0)) __PYX_ERR(20, 1379, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 1379, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_130rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedHisto2D.pyx":1381
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1381, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1382
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1382, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1382, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1382, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1381
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1383
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1383, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1384
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1384, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1384, __pyx_L1_error)
    try {
      __pyx_t_5->rebinXTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1384, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1383
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1385
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1385, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1386
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1386, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1386, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1386, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1385
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1387
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1387, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1379
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1390
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_132xMean, "BinnedHisto2D.xMean(self, includeOverflows=True)\nxMean on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_133xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_132xMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1390, __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(20, 1390, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1390, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_132xMean(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 1);

  /* "include/generated/BinnedHisto2D.pyx":1392
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1392, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1393
 *         """xMean on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1393, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1393, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1393, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1392
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1394
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1394, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1395
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1395, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1395, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1395, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1394
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1396
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1396, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1397
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1397, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1397, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1397, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1396
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1398
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1398, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1390
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1401
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_134xVariance, "BinnedHisto2D.xVariance(self, includeOverflows=True)\nxVariance on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_135xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_134xVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1401, __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(20, 1401, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1401, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_134xVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 1);

  /* "include/generated/BinnedHisto2D.pyx":1403
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1404
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1404, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1404, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1403
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1405
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1406
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1406, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1406, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1405
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1407
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1408
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1408, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1408, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1407
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1409
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1409, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1401
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1412
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_136xStdDev, "BinnedHisto2D.xStdDev(self, includeOverflows=True)\nxStdDev on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_137xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_136xStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1412, __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(20, 1412, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1412, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_136xStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 1);

  /* "include/generated/BinnedHisto2D.pyx":1414
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1414, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1415
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1415, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1415, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1415, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1414
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1416
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1417
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1417, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1417, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1417, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1416
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1418
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1418, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1419
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1419, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1419, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1419, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1418
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1420
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1420, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1412
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1423
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_138xStdErr, "BinnedHisto2D.xStdErr(self, includeOverflows=True)\nxStdErr on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_139xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_138xStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1423, __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(20, 1423, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1423, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_138xStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 1);

  /* "include/generated/BinnedHisto2D.pyx":1425
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1425, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1426
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1426, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1426, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1426, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1425
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1427
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1427, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1428
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1428, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1428, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1428, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1427
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1429
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1429, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1430
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1430, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1430, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1430, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1429
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1431
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1431, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1423
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1434
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_140xRMS, "BinnedHisto2D.xRMS(self, includeOverflows=True)\nxRMS on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_141xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_140xRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1434, __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(20, 1434, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1434, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_140xRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 1);

  /* "include/generated/BinnedHisto2D.pyx":1436
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1437
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1437, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1437, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1437, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1436
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1438
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1438, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1439
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1439, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1439, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1439, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1438
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1440
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1440, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1441
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1441, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1441, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1441, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1440
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1442
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1442, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1434
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1445
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_142rebinX, "BinnedHisto2D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_143rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_142rebinX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1445, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(20, 1445, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(20, 1445, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_142rebinX(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedHisto2D.pyx":1446
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 1446, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1447
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(20, 1447, __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/generated/BinnedHisto2D.pyx":1446
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":1449
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(20, 1449, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1449, __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(20, 1449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":1445
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1451
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_145numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_144numBinsY, "BinnedHisto2D.numBinsY(self, includeOverflows=False)\nnumBinsY on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_145numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_145numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_144numBinsY};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_145numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1451, __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, "numBinsY") < 0)) __PYX_ERR(20, 1451, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsY", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1451, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_144numBinsY(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_144numBinsY(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 1);

  /* "include/generated/BinnedHisto2D.pyx":1453
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1454
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1454, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1453
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1455
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1455, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1456
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1456, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1456, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1456, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1455
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1457
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1457, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1458
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1458, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1458, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1457
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1459
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1460
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1460, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1460, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1460, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1459
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1461
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1461, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1462
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1462, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1462, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1462, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1461
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1463
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1463, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1464
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1464, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1464, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1464, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1464, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1463
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1465
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1465, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1466
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1466, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1466, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1466, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1465
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1467
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1467, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1468
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1468, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1468, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1468, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1467
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1469
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1469, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1470
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1470, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1470, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1470, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1469
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1471
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1471, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1451
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1474
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_147yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_146yEdges, "BinnedHisto2D.yEdges(self, includeOverflows=False)\nyEdges on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_147yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_147yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_146yEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_147yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1474, __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, "yEdges") < 0)) __PYX_ERR(20, 1474, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_146yEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_146yEdges(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  std::vector<std::string>  __pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  std::vector<int>  __pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 1);

  /* "include/generated/BinnedHisto2D.pyx":1476
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1477
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1477, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1477, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1477, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1476
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1478
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1478, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1479
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1479, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1479, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1479, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1478
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1480
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1480, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1481
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1481, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1481, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1481, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1480
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1482
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1483
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1483, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1483, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1483, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1482
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1484
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1484, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1485
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1485, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1485, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1485, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1484
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1486
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1486, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1487
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1487, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1487, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1487, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1486
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1488
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1488, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1489
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1489, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1489, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1489, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1488
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1490
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1490, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1491
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1491, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1491, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1491, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1490
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1492
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1492, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1493
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1493, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1493, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1493, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1492
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1494
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1494, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1474
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1497
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_149yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_148yWidths, "BinnedHisto2D.yWidths(self, includeOverflows=True)\nyWidths on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_149yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_149yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_148yWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_149yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1497, __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, "yWidths") < 0)) __PYX_ERR(20, 1497, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1497, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_148yWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_148yWidths(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 1);

  /* "include/generated/BinnedHisto2D.pyx":1499
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1499, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1500
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1500, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1500, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1500, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1499
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1501
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1501, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1502
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1502, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1502, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1502, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1501
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1503
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1503, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1504
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1504, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1504, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1504, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1503
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1505
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1505, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1497
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1508
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_151yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_150yMin, "BinnedHisto2D.yMin(self)\nyMin on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_151yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_151yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_150yMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_151yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_150yMin(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_150yMin(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_5;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/BinnedHisto2D.pyx":1510
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1510, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1511
 *         """yMin on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1511, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1511, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1510
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1512
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1512, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1513
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1513, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1513, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1513, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1512
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1514
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1514, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1515
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1515, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1515, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1514
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1516
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1516, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1508
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1519
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_153yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_152yMax, "BinnedHisto2D.yMax(self)\nyMax on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_153yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_153yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_152yMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_153yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_152yMax(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_152yMax(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_5;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/BinnedHisto2D.pyx":1521
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1521, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1522
 *         """yMax on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1522, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1522, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1521
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1523
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1523, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1524
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1524, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1524, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1523
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1525
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1525, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1526
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1526, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1526, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1525
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1527
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1527, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1519
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1530
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_155rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_154rebinYBy, "BinnedHisto2D.rebinYBy(self, n, begin=1, end=sys.maxsize)\nrebinYBy on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_155rebinYBy = {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_155rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_154rebinYBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_155rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__100);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1530, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1530, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1530, __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, "rebinYBy") < 0)) __PYX_ERR(20, 1530, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(20, 1530, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_154rebinYBy(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_154rebinYBy(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_7;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYBy", 1);

  /* "include/generated/BinnedHisto2D.pyx":1532
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1532, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1533
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1533, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1533, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1533, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1533, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYBy(__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(20, 1533, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1532
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1534
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1535
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1535, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1535, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1535, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1535, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1535, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1534
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1536
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1537
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1537, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(20, 1537, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1537, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(20, 1537, __pyx_L1_error)
    try {
      __pyx_t_8->rebinYBy(__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(20, 1537, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1536
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1538
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1538, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1530
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1541
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_157rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_156rebinYTo, "BinnedHisto2D.rebinYTo(self, edges)\nrebinYTo on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_157rebinYTo = {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_157rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_156rebinYTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_157rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1541, __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, "rebinYTo") < 0)) __PYX_ERR(20, 1541, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 1541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_156rebinYTo(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_156rebinYTo(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYTo", 1);

  /* "include/generated/BinnedHisto2D.pyx":1543
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1543, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1544
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1544, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1544, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1544, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1543
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1545
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1546
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1546, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1546, __pyx_L1_error)
    try {
      __pyx_t_5->rebinYTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1546, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1545
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1547
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1547, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1548
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1548, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1548, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1548, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1547
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1549
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1549, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1541
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedHisto2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1552
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_159yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_158yMean, "BinnedHisto2D.yMean(self, includeOverflows=True)\nyMean on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_159yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_159yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_158yMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_159yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1552, __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(20, 1552, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1552, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_158yMean(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_158yMean(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 1);

  /* "include/generated/BinnedHisto2D.pyx":1554
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1554, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1555
 *         """yMean on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1555, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1555, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1555, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1554
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1556
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1556, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1557
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1557, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1557, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1557, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1556
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1558
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1558, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1559
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1559, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1559, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1559, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1558
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1560
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1560, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1552
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1563
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_161yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_160yVariance, "BinnedHisto2D.yVariance(self, includeOverflows=True)\nyVariance on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_161yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_161yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_160yVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_161yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1563, __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(20, 1563, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1563, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_160yVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_160yVariance(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 1);

  /* "include/generated/BinnedHisto2D.pyx":1565
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1565, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1566
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1566, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1566, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1566, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1565
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1567
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1567, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1568
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1568, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1568, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1568, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1567
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1569
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1569, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1570
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1570, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1570, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1570, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1569
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1571
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1571, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1563
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1574
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_163yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_162yStdDev, "BinnedHisto2D.yStdDev(self, includeOverflows=True)\nyStdDev on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_163yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_163yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_162yStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_163yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1574, __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(20, 1574, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_162yStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_162yStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 1);

  /* "include/generated/BinnedHisto2D.pyx":1576
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1577
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1577, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1577, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1576
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1579
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1579, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1579, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1579, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1580
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1581
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1581, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1581, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1581, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1580
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1582
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1582, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1574
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1585
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_165yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_164yStdErr, "BinnedHisto2D.yStdErr(self, includeOverflows=True)\nyStdErr on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_165yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_165yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_164yStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_165yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1585, __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(20, 1585, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1585, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_164yStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_164yStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 1);

  /* "include/generated/BinnedHisto2D.pyx":1587
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1587, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1588
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1588, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1588, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1588, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1587
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1589
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1589, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1590
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1590, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1590, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1590, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1590, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1589
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1591
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1591, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1592
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1592, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1592, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1592, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1591
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1593
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1593, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1585
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1596
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_167yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_166yRMS, "BinnedHisto2D.yRMS(self, includeOverflows=True)\nyRMS on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_167yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_167yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_166yRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_167yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1596, __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(20, 1596, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(20, 1596, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_166yRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_166yRMS(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_6;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 1);

  /* "include/generated/BinnedHisto2D.pyx":1598
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1598, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1599
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1599, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1599, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1599, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1598
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1600
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1600, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1601
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1601, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1601, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1601, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1600
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1602
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1602, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1603
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1603, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(20, 1603, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(20, 1603, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1602
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1604
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1604, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1596
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedHisto2D.pyx":1607
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_169rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto2D_168rebinY, "BinnedHisto2D.rebinY(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_169rebinY = {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_169rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_168rebinY};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_169rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 1607, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinY") < 0)) __PYX_ERR(20, 1607, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinY", 0, 1, 1, __pyx_nargs); __PYX_ERR(20, 1607, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_168rebinY(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_168rebinY(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinY", 1);

  /* "include/generated/BinnedHisto2D.pyx":1608
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 1608, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1609
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(20, 1609, __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/generated/BinnedHisto2D.pyx":1608
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto2D.pyx":1611
 *             self.rebinYTo(arg)
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(20, 1611, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1611, __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(20, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 1611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto2D.pyx":1607
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1613
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_171__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_171__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1613, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_170__add__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_170__add__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1614
 * 
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1615
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1614
 * 
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1616
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1616, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 1616, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 1616, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":1617
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":1618
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1618, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1619
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1619, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1619, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto2D.pyx":1620
 *         if self._config == "dd":
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1618
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1621
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1621, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1622
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1622, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1622, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":1623
 *         elif self._config == "di":
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1621
 *           tmp = c.BH_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1624
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1624, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1625
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1625, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1625, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedHisto2D.pyx":1626
 *         elif self._config == "ds":
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1624
 *           tmp = c.BH_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1627
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1627, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1628
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1628, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1628, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedHisto2D.pyx":1629
 *         elif self._config == "id":
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1627
 *           tmp = c.BH_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1630
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1630, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1631
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1631, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1631, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedHisto2D.pyx":1632
 *         elif self._config == "ii":
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1630
 *           tmp = c.BH_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1633
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1633, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1634
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1634, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1634, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedHisto2D.pyx":1635
 *         elif self._config == "is":
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1633
 *           tmp = c.BH_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1636
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1636, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1637
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1637, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1637, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedHisto2D.pyx":1638
 *         elif self._config == "sd":
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1636
 *           tmp = c.BH_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1639
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1639, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1640
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1640, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1640, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedHisto2D.pyx":1641
 *         elif self._config == "si":
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1639
 *           tmp = c.BH_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1642
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1642, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1643
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1643, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1643, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedHisto2D.pyx":1644
 *         elif self._config == "ss":
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1642
 *           tmp = c.BH_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto2D.pyx":1645
 *           tmp = c.BH_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(20, 1645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto2D.pyx":1646
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":1613
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.__add__", __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/generated/BinnedHisto2D.pyx":1648
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_173__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_173__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1648, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_172__iadd__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_172__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_4;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1649
 * 
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1650
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1649
 * 
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1651
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1651, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 1651, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 1651, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":1652
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1652, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1653
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1653, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1653, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto2D.pyx":1652
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1654
 *         if self._config == "dd":
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1654, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1655
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1655, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1655, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedHisto2D.pyx":1654
 *         if self._config == "dd":
 *           c.BH_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1656
 *         elif self._config == "di":
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1656, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1657
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1657, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1657, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":1656
 *         elif self._config == "di":
 *           c.BH_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1658
 *         elif self._config == "ds":
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1658, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1659
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1659, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1659, __pyx_L1_error)
    cython_iadd(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedHisto2D.pyx":1658
 *         elif self._config == "ds":
 *           c.BH_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1660
 *         elif self._config == "id":
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1660, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1661
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1661, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1661, __pyx_L1_error)
    cython_iadd(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedHisto2D.pyx":1660
 *         elif self._config == "id":
 *           c.BH_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1662
 *         elif self._config == "ii":
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1662, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1663
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1663, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1663, __pyx_L1_error)
    cython_iadd(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":1662
 *         elif self._config == "ii":
 *           c.BH_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1664
 *         elif self._config == "is":
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1664, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1665
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1665, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1665, __pyx_L1_error)
    cython_iadd(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":1664
 *         elif self._config == "is":
 *           c.BH_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1666
 *         elif self._config == "sd":
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1666, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1667
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BH_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1667, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1667, __pyx_L1_error)
    cython_iadd(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedHisto2D.pyx":1666
 *         elif self._config == "sd":
 *           c.BH_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1668
 *         elif self._config == "si":
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1668, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1669
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BH_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1669, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1669, __pyx_L1_error)
    cython_iadd(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedHisto2D.pyx":1668
 *         elif self._config == "si":
 *           c.BH_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto2D.pyx":1670
 *         elif self._config == "ss":
 *           c.BH_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":1648
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto2D.pyx":1672
 *         return self
 * 
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_175__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_175__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1672, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_174__sub__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_174__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1673
 * 
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1674
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1673
 * 
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1675
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1675, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 1675, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 1675, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":1676
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto2D.pyx":1677
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1677, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1678
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1678, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1678, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto2D.pyx":1679
 *         if self._config == "dd":
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1677
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1680
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1680, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1681
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1681, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1681, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedHisto2D.pyx":1682
 *         elif self._config == "di":
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1682, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1680
 *           tmp = c.BH_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1683
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1683, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1684
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1684, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1684, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedHisto2D.pyx":1685
 *         elif self._config == "ds":
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1683
 *           tmp = c.BH_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1686
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1686, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1687
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1687, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1687, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedHisto2D.pyx":1688
 *         elif self._config == "id":
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1686
 *           tmp = c.BH_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1689
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1689, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1690
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1690, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1690, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedHisto2D.pyx":1691
 *         elif self._config == "ii":
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1691, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1689
 *           tmp = c.BH_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1692
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1692, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1693
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1693, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1693, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedHisto2D.pyx":1694
 *         elif self._config == "is":
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1694, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1692
 *           tmp = c.BH_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1695
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1695, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1696
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1696, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1696, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedHisto2D.pyx":1697
 *         elif self._config == "sd":
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1695
 *           tmp = c.BH_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1698
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1698, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1699
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1699, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1699, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedHisto2D.pyx":1700
 *         elif self._config == "si":
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1698
 *           tmp = c.BH_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1701
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1701, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1702
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1702, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1702, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedHisto2D.pyx":1703
 *         elif self._config == "ss":
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto2D.pyx":1701
 *           tmp = c.BH_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto2D.pyx":1704
 *           tmp = c.BH_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(20, 1704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 1704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto2D.pyx":1705
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":1672
 *         return self
 * 
 *     def __sub__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.__sub__", __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/generated/BinnedHisto2D.pyx":1707
 *         return rtn
 * 
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_177__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_177__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1707, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_176__isub__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_176__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_4;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1708
 * 
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1709
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1708
 * 
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1710
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1710, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(20, 1710, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(20, 1710, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto2D.pyx":1711
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1711, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1712
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1712, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1712, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto2D.pyx":1711
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1713
 *         if self._config == "dd":
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1713, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1714
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1714, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1714, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedHisto2D.pyx":1713
 *         if self._config == "dd":
 *           c.BH_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1715
 *         elif self._config == "di":
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1715, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1716
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1716, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1716, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedHisto2D.pyx":1715
 *         elif self._config == "di":
 *           c.BH_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1717
 *         elif self._config == "ds":
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1717, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1718
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1718, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1718, __pyx_L1_error)
    cython_isub(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedHisto2D.pyx":1717
 *         elif self._config == "ds":
 *           c.BH_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1719
 *         elif self._config == "id":
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1719, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1720
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1720, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1720, __pyx_L1_error)
    cython_isub(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedHisto2D.pyx":1719
 *         elif self._config == "id":
 *           c.BH_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1721
 *         elif self._config == "ii":
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1721, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1722
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1722, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1722, __pyx_L1_error)
    cython_isub(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedHisto2D.pyx":1721
 *         elif self._config == "ii":
 *           c.BH_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1723
 *         elif self._config == "is":
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1723, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1724
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1724, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1724, __pyx_L1_error)
    cython_isub(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedHisto2D.pyx":1723
 *         elif self._config == "is":
 *           c.BH_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1725
 *         elif self._config == "sd":
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1725, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1726
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BH_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1726, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1726, __pyx_L1_error)
    cython_isub(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedHisto2D.pyx":1725
 *         elif self._config == "sd":
 *           c.BH_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto2D.pyx":1727
 *         elif self._config == "si":
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1727, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1728
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BH_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1728, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1728, __pyx_L1_error)
    cython_isub(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedHisto2D.pyx":1727
 *         elif self._config == "si":
 *           c.BH_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto2D.pyx":1729
 *         elif self._config == "ss":
 *           c.BH_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto2D.pyx":1707
 *         return rtn
 * 
 *     def __isub__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto2D.pyx":1731
 *         return self
 * 
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_179__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_179__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1731, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_178__eq__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_178__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1732
 * 
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1732, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1733
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1733, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1733, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1732
 * 
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1734
 *         if self._config == "dd":
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1734, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1735
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1735, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1735, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1734
 *         if self._config == "dd":
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1736
 *         elif self._config == "di":
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1736, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1737
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1737, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1737, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1736
 *         elif self._config == "di":
 *           return c.BH_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1738
 *         elif self._config == "ds":
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1738, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1739
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1739, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1739, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1738
 *         elif self._config == "ds":
 *           return c.BH_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1740
 *         elif self._config == "id":
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1740, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1741
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1741, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1741, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1740
 *         elif self._config == "id":
 *           return c.BH_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1742
 *         elif self._config == "ii":
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1742, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1743
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1743, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1743, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1742
 *         elif self._config == "ii":
 *           return c.BH_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1744
 *         elif self._config == "is":
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1744, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1745
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1745, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1745, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1744
 *         elif self._config == "is":
 *           return c.BH_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1746
 *         elif self._config == "sd":
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1746, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1747
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BH_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1747, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1747, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1746
 *         elif self._config == "sd":
 *           return c.BH_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1748
 *         elif self._config == "si":
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1748, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1749
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BH_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1749, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1749, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1748
 *         elif self._config == "si":
 *           return c.BH_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1750
 *         elif self._config == "ss":
 *           return c.BH_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1750, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1731
 *         return self
 * 
 *     def __eq__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BH_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedHisto2D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":1752
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_181__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_181__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto2D, 1, "other", 0))) __PYX_ERR(20, 1752, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_180__ne__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__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_13BinnedHisto2D_180__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_2;
  YODA::BinnedHisto2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_5;
  YODA::BinnedHisto2D<double,int>  *__pyx_t_6;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedHisto2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_9;
  YODA::BinnedHisto2D<int,double>  *__pyx_t_10;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_11;
  YODA::BinnedHisto2D<int,int>  *__pyx_t_12;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedHisto2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedHisto2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedHisto2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedHisto2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedHisto2D.pyx":1753
 * 
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1753, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1754
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1754, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto2D<double,double>  *)NULL))) __PYX_ERR(20, 1754, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1753
 * 
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1755
 *         if self._config == "dd":
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1755, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1756
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1756, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedHisto2D<double,int>  *)NULL))) __PYX_ERR(20, 1756, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1755
 *         if self._config == "dd":
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1757
 *         elif self._config == "di":
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1757, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1758
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1758, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto2D<double,std::string>  *)NULL))) __PYX_ERR(20, 1758, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1757
 *         elif self._config == "di":
 *           return c.BH_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1759
 *         elif self._config == "ds":
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1759, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1760
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1760, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedHisto2D<int,double>  *)NULL))) __PYX_ERR(20, 1760, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1759
 *         elif self._config == "ds":
 *           return c.BH_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1761
 *         elif self._config == "id":
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1761, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1762
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1762, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedHisto2D<int,int>  *)NULL))) __PYX_ERR(20, 1762, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1761
 *         elif self._config == "id":
 *           return c.BH_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1763
 *         elif self._config == "ii":
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1763, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1764
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1764, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedHisto2D<int,std::string>  *)NULL))) __PYX_ERR(20, 1764, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1763
 *         elif self._config == "ii":
 *           return c.BH_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1765
 *         elif self._config == "is":
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1765, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1766
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1766, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedHisto2D<std::string,double>  *)NULL))) __PYX_ERR(20, 1766, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1766, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1765
 *         elif self._config == "is":
 *           return c.BH_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1767
 *         elif self._config == "sd":
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1767, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1768
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BH_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1768, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedHisto2D<std::string,int>  *)NULL))) __PYX_ERR(20, 1768, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1767
 *         elif self._config == "sd":
 *           return c.BH_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1769
 *         elif self._config == "si":
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(20, 1769, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto2D.pyx":1770
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BH_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1770, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedHisto2D<std::string,std::string>  *)NULL))) __PYX_ERR(20, 1770, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 1770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto2D.pyx":1769
 *         elif self._config == "si":
 *           return c.BH_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto2D.pyx":1771
 *         elif self._config == "ss":
 *           return c.BH_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(20, 1771, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1752
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto2D self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BH_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedHisto2D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto2D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(20, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedHisto2D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedHisto2D[double,double]* binned_dd_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_13BinnedHisto2D_183__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_13BinnedHisto2D_182__reduce_cython__, "BinnedHisto2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_183__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_183__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_182__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_183__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto2D_182__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_182__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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__", 1);

  /* "(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(1, 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.BinnedHisto2D.__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_13BinnedHisto2D_185__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_13BinnedHisto2D_184__setstate_cython__, "BinnedHisto2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto2D_185__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_185__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_184__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto2D_185__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto2D_184__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto2D_184__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto2D *__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__", 1);

  /* "(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(1, 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.BinnedHisto2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto3D[double,double,double]* binned_ddd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto3D[double,double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedHisto3D<double,double,double>  *__pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  YODA::BinnedHisto3D<double,double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedHisto3D.pyx":31
 * 
 *     cdef inline c.BinnedHisto3D[double,double,double]* binned_ddd_ptr(self) except NULL:
 *         return <c.BinnedHisto3D[double,double,double]*> 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, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedHisto3D[double,double,double]* binned_ddd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedHisto3D[double,double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedHisto3D.pyx":35
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D___init__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D___init__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedHisto3D.pyx":36
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedHisto3D.pyx":37
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":38
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 38, __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(21, 38, __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_BinnedHisto3D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto3D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto3D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto3D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(21, 38, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(21, 38, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(21, 38, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(21, 38, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(21, 38, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto3D.pyx":35
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":40
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_2__init1, "BinnedHisto3D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1 = {"_BinnedHisto3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedHisto3D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_2__init1(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init1", 1);

  /* "include/generated/BinnedHisto3D.pyx":41
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedHisto3D<double,double,double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 41, __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(21, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto3D.pyx":40
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedHisto3D.pyx":44
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__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_13BinnedHisto3D_4__init2, "BinnedHisto3D.__init2(self, edgesA1, edgesA2, edgesA3, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__init2 = {"_BinnedHisto3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__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_edgesA1 = 0;
  PyObject *__pyx_v_edgesA2 = 0;
  PyObject *__pyx_v_edgesA3 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_edgesA2,&__pyx_n_s_edgesA3,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 44, __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_edgesA2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 44, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init2", 0, 3, 5, 1); __PYX_ERR(21, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edgesA3)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 44, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init2", 0, 3, 5, 2); __PYX_ERR(21, 44, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 44, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "_BinnedHisto3D__init2") < 0)) __PYX_ERR(21, 44, __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_edgesA1 = values[0];
    __pyx_v_edgesA2 = values[1];
    __pyx_v_edgesA3 = values[2];
    __pyx_v_path = ((PyObject*)values[3]);
    __pyx_v_title = ((PyObject*)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init2", 0, 3, 5, __pyx_nargs); __PYX_ERR(21, 44, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(21, 44, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(21, 44, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_edgesA2, __pyx_v_edgesA3, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_2generator128(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto3D.pyx":50
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_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_129_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_129_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(21, 50, __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_13BinnedHisto3D_21_BinnedHisto3D__init2_2generator128, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto3D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(21, 50, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init2.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_13BinnedHisto3D_21_BinnedHisto3D__init2_2generator128(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_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(21, 50, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(21, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(21, 50, __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(21, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 50, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 50, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 50, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 50, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 50, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 50, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 50, __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(21, 50, __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(21, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(21, 50, __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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_5generator129(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto3D.pyx":51
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_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_130_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_130_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(21, 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_13BinnedHisto3D_21_BinnedHisto3D__init2_5generator129, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto3D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(21, 51, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init2.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_13BinnedHisto3D_21_BinnedHisto3D__init2_5generator129(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_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(21, 51, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(21, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(21, 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(21, 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(21, 51, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 51, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 51, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 51, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 51, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 51, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 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(21, 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(21, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(21, 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;
}
static PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_8generator130(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedHisto3D.pyx":52
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_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_131_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_131_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(21, 52, __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_13BinnedHisto3D_21_BinnedHisto3D__init2_8generator130, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedHisto3D__init2_locals_gen, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(21, 52, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init2.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_13BinnedHisto3D_21_BinnedHisto3D__init2_8generator130(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_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(21, 52, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(21, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(21, 52, __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(21, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 52, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 52, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 52, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 52, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 52, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(21, 52, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 52, __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(21, 52, __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(21, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(21, 52, __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/generated/BinnedHisto3D.pyx":44
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_4__init2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_edgesA3, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_2generator128 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_5generator129 = 0;
  PyObject *__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_8generator130 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  std::vector<std::vector<double> >  __pyx_t_8;
  std::string __pyx_t_9;
  std::string __pyx_t_10;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  unsigned int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init2", 1);

  /* "include/generated/BinnedHisto3D.pyx":45
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(21, 45, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(21, 45, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 45, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 45, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":46
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 *         cdef vector[vector[double]] edges_d
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA2, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(21, 46, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(21, 46, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 46, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 46, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":47
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(21, 47, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA3); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(21, 47, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L7_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 47, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 47, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":49
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L10_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedHisto3D.pyx":50
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":51
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_3genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":52
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_6genexpr(NULL, __pyx_v_edgesA3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":50
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 */
    __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(21, 50, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(21, 50, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_7)) __PYX_ERR(21, 50, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 50, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8);

    /* "include/generated/BinnedHisto3D.pyx":53
 *                       list(float(x) for x in edgesA2),
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         else:
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 53, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 53, __pyx_L1_error)
    try {
      __pyx_t_11 = new YODA::BinnedHisto3D<double,double,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), (__pyx_v_edges_d[2]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_10));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 53, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":54
 *                       list(float(x) for x in edgesA3), ]
 *           cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double](edges_d[0], edges_d[1], edges_d[2], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[2])); if (unlikely(!__pyx_t_12)) __PYX_ERR(21, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = NULL;
    __pyx_t_14 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_14 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_6, __pyx_t_5, __pyx_t_12};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_14, 3+__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 54, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":49
 *         assert( hasattr(edgesA3, "__iter__") and len(edgesA3) )
 *         cdef vector[vector[double]] edges_d
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float) and isinstance(edgesA3[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2),
 */
    goto __pyx_L9;
  }

  /* "include/generated/BinnedHisto3D.pyx":56
 *           self._set_config(edges_d[0], edges_d[1], edges_d[2])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(21, 56, __pyx_L1_error)
  }
  __pyx_L9:;

  /* "include/generated/BinnedHisto3D.pyx":44
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_2generator128);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_5generator129);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_13BinnedHisto3D_21_BinnedHisto3D__init2_8generator130);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":58
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__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_13BinnedHisto3D_6__init3, "BinnedHisto3D.__init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__init3 = {"_BinnedHisto3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_nbinsY = 0;
  PyObject *__pyx_v_lowerY = 0;
  PyObject *__pyx_v_upperY = 0;
  PyObject *__pyx_v_nbinsZ = 0;
  PyObject *__pyx_v_lowerZ = 0;
  PyObject *__pyx_v_upperZ = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_nbinsY,&__pyx_n_s_lowerY,&__pyx_n_s_upperY,&__pyx_n_s_nbinsZ,&__pyx_n_s_lowerZ,&__pyx_n_s_upperZ,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[9] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[10] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 1); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 2); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 3); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 4); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 5); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 6); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[7]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 7); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperZ)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[8]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, 8); __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[9] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[10] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 58, __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, "_BinnedHisto3D__init3") < 0)) __PYX_ERR(21, 58, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_nbinsY = values[3];
    __pyx_v_lowerY = values[4];
    __pyx_v_upperY = values[5];
    __pyx_v_nbinsZ = values[6];
    __pyx_v_lowerZ = values[7];
    __pyx_v_upperZ = values[8];
    __pyx_v_path = ((PyObject*)values[9]);
    __pyx_v_title = ((PyObject*)values[10]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init3", 0, 9, 11, __pyx_nargs); __PYX_ERR(21, 58, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(21, 58, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(21, 58, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY, __pyx_v_nbinsZ, __pyx_v_lowerZ, __pyx_v_upperZ, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_6__init3(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_nbinsZ, PyObject *__pyx_v_lowerZ, PyObject *__pyx_v_upperZ, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  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("_BinnedHisto3D__init3", 1);

  /* "include/generated/BinnedHisto3D.pyx":60
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *             linspace(nbinsY, lowerY, upperY),
 *             linspace(nbinsZ, lowerZ, upperZ),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(21, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedHisto3D.pyx":61
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),             # <<<<<<<<<<<<<<
 *             linspace(nbinsZ, lowerZ, upperZ),
 *         ]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/generated/BinnedHisto3D.pyx":62
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 *             linspace(nbinsZ, lowerZ, upperZ),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_nbinsZ, __pyx_v_lowerZ, __pyx_v_upperZ};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "include/generated/BinnedHisto3D.pyx":59
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 */
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(21, 59, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(21, 59, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_3)) __PYX_ERR(21, 59, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto3D.pyx":64
 *             linspace(nbinsZ, lowerZ, upperZ),
 *         ]
 *         self.__init2(edges[0], edges[1], edges[2], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedHisto3D other):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedHisto3D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_edges, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_edges, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_t_2, __pyx_t_1, __pyx_t_6, __pyx_v_path, __pyx_v_title};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto3D.pyx":58
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":66
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__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_13BinnedHisto3D_8__init4, "BinnedHisto3D.__init4(self, BinnedHisto3D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__init4 = {"_BinnedHisto3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "_BinnedHisto3D__init4") < 0)) __PYX_ERR(21, 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_other = ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedHisto3D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 66, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init4", __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_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 66, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_8__init4(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  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;
  unsigned int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedHisto3D__init4", 1);

  /* "include/generated/BinnedHisto3D.pyx":67
 * 
 *     def __init4(self, BinnedHisto3D other):
 *         if other._config == "ddd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 67, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":68
 *     def __init4(self, BinnedHisto3D other):
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 68, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 68, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":67
 * 
 *     def __init4(self, BinnedHisto3D other):
 *         if other._config == "ddd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":69
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Binning); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_9 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_other->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_t_7 = NULL;
  __pyx_t_9 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_9 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto3D.pyx":66
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._BinnedHisto3D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":71
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedHisto3D.pyx":72
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(21, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 72, __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/generated/BinnedHisto3D.pyx":71
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedHisto3D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":74
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto3D.pyx":75
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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, 75, __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, 75, __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(21, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 75, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(21, 75, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(21, 75, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(21, 75, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(21, 75, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 75, __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/BinnedHisto3D.pyx":74
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedHisto3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":77
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_14_set_config, "BinnedHisto3D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<double>  __pyx_t_12;
  std::vector<double>  __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  unsigned int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedHisto3D.pyx":78
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 78, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(21, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":79
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":78
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":80
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 80, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":81
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(21, 81, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(21, 81, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":80
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto3D.pyx":82
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 82, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":83
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":82
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedHisto3D.pyx":85
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedHisto3D.pyx":86
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedHisto3D.pyx":87
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(21, 87, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(21, 87, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 87, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_ddd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 87, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedHisto3D.pyx":88
 *           try:
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 88, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(21, 88, __pyx_L9_error)

          /* "include/generated/BinnedHisto3D.pyx":87
 *           edges = None
 *           try:
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedHisto3D.pyx":90
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).zEdges(False),
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(21, 90, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(21, 90, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 90, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedHisto3D.pyx":91
 *             edges = tuple([
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).zEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(21, 91, __pyx_L9_error)
        try {
          __pyx_t_12 = ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(21, 91, __pyx_L9_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 91, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedHisto3D.pyx":92
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).yEdges(False),
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).zEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ddd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(21, 92, __pyx_L9_error)
        try {
          __pyx_t_13 = ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_9)->zEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(21, 92, __pyx_L9_error)
        }
        __pyx_t_14 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 92, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_14);

        /* "include/generated/BinnedHisto3D.pyx":89
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_15 = PyList_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 89, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_5)) __PYX_ERR(21, 89, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 1, __pyx_t_4)) __PYX_ERR(21, 89, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_14);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 2, __pyx_t_14)) __PYX_ERR(21, 89, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_14 = 0;
        __pyx_t_14 = PyList_AsTuple(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 89, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_14));
        __pyx_t_14 = 0;

        /* "include/generated/BinnedHisto3D.pyx":94
 *               (<c.BinnedHisto3D[double,double,double]*> self.ptr()).zEdges(False),
 *             ])
 *             self._config = "ddd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_ddd);
        __Pyx_GIVEREF(__pyx_n_s_ddd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ddd;

        /* "include/generated/BinnedHisto3D.pyx":86
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedHisto3D[double,double,double]*> self.ptr())._config()) != "ddd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedHisto3D.pyx":95
 *             ])
 *             self._config = "ddd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedHisto3D.pyx":96
 *             self._config = "ddd"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_Binning); if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(21, 96, __pyx_L1_error)
    }
    __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_GIVEREF(__pyx_t_15);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_15;
    __pyx_t_15 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedHisto3D.pyx":97
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(21, 97, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_4 = NULL;
  __pyx_t_16 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_14))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_14, function);
      __pyx_t_16 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_15 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_16, 0+__pyx_t_16);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(21, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L17_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":98
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_4 = NULL;
    __pyx_t_16 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_14))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_14, function);
        __pyx_t_16 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_15 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_16, 0+__pyx_t_16);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_15))||((__pyx_t_15) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_15))) __PYX_ERR(21, 98, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_15);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_15);
    __pyx_t_15 = 0;

    /* "include/generated/BinnedHisto3D.pyx":97
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":77
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":100
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto3D.
 *         Clone this BinnedHisto3D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_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_13BinnedHisto3D_16clone, "BinnedHisto3D.clone(self)\n() -> BinnedHisto3D.\n        Clone this BinnedHisto3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_16clone};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_16clone(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_16clone(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedHisto3D.pyx":103
 *         """() -> BinnedHisto3D.
 *         Clone this BinnedHisto3D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":104
 *         Clone this BinnedHisto3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":105
 *         rtn = None
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 105, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 105, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D), ((YODA::BinnedHisto3D<double,double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":104
 *         Clone this BinnedHisto3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         if self._binning is None:
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":106
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":107
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 107, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":106
 *         if self._config == "ddd":
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, <c.BinnedHisto3D[double,double,double]*> self.binned_ddd_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedHisto3D.pyx":109
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_self->_binning};
      __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(21, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedHisto3D.pyx":110
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":100
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto3D.
 *         Clone this BinnedHisto3D."""
 */

  /* 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.BinnedHisto3D.clone", __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/generated/BinnedHisto3D.pyx":113
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex, "BinnedHisto3D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_7;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedHisto3D.pyx":115
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(21, 115, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 3);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 115, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 115, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":117
 *         assert(len(indices) == 3) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 117, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(21, 117, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(21, 117, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto3D.pyx":118
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(21, 118, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto3D.pyx":119
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 119, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } 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 = __Pyx_PyInt_FromSize_t(__pyx_t_8); 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/BinnedHisto3D.pyx":118
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":120
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 120, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":113
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */

  /* 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.BinnedHisto3D.localToGlobalIndex", __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/generated/BinnedHisto3D.pyx":123
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_20_global_set, "BinnedHisto3D._global_set(self, size_t idx, Dbn3D cont)\nint, Dbn3D -> void.\n        Set a Dbn3D at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 123, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 123, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(21, 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, "_global_set") < 0)) __PYX_ERR(21, 123, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 123, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn3D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(21, 123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn3D, 1, "cont", 0))) __PYX_ERR(21, 123, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::Dbn3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedHisto3D.pyx":126
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 126, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":127
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 127, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(21, 127, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 127, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":126
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":128
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 128, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":123
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */

  /* 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.BinnedHisto3D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":132
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_22_local_set, "BinnedHisto3D._local_set(self, indices, Dbn3D cont)\nvector[int], Dbn3D -> void.\n        Set a Dbn3D at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 132, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 132, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(21, 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, "_local_set") < 0)) __PYX_ERR(21, 132, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn3D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(21, 132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn3D, 1, "cont", 0))) __PYX_ERR(21, 132, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Dbn3D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedHisto3D.pyx":135
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 135, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":136
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 136, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 136, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(21, 136, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 136, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":135
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":137
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 137, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":132
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */

  /* 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.BinnedHisto3D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":140
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_24set, "BinnedHisto3D.set(self, *args)\nSet bin with Dbn3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_24set};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_24set(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_24set(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedHisto3D.pyx":142
 *     def set(self, *args):
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(21, 142, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 142, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 142, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":143
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedHisto3D.pyx":144
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 144, __pyx_L1_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/generated/BinnedHisto3D.pyx":143
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto3D.pyx":146
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 146, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto3D.pyx":140
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedHisto3D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":148
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_26reset, "BinnedHisto3D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_26reset};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_26reset(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_26reset(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedHisto3D.pyx":150
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":151
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 151, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 151, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":150
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":152
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 152, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":148
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":156
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_28numBins, "BinnedHisto3D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedHisto.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 156, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 156, __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, "numBins") < 0)) __PYX_ERR(21, 156, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(21, 156, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_28numBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedHisto3D.pyx":159
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 159, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":160
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 160, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 160, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 160, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 160, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":159
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":161
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 161, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":156
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */

  /* 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.BinnedHisto3D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":164
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_30isMasked, "BinnedHisto3D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 164, __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, "isMasked") < 0)) __PYX_ERR(21, 164, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 164, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedHisto3D.pyx":166
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 166, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":167
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 167, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 167, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 167, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":166
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":168
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 168, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":164
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":171
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_32isVisible, "BinnedHisto3D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 171, __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, "isVisible") < 0)) __PYX_ERR(21, 171, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 171, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedHisto3D.pyx":173
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 173, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":174
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 174, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 174, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 174, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":173
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":175
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 175, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":171
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":178
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_34binDim, "BinnedHisto3D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_34binDim(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__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("binDim", 1);

  /* "include/generated/BinnedHisto3D.pyx":180
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 180, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":181
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 181, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 181, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":180
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":182
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 182, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":178
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":185
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_13BinnedHisto3D_36__len__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedHisto3D.pyx":186
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(21, 186, __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(21, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":185
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedHisto3D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":188
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_38bins, "BinnedHisto3D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_38bins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 188, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 188, __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, "bins") < 0)) __PYX_ERR(21, 188, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(21, 188, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_38bins(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_38bins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedHisto3D.pyx":190
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(21, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 190, __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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 190, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 190, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(21, 190, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 190, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 190, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(21, 190, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 190, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(21, 190, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":191
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(21, 191, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(21, 191, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedHisto3D.pyx":192
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(21, 192, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(21, 192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedHisto3D.pyx":191
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedHisto3D.pyx":190
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 190, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(21, 190, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto3D.pyx":191
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedHisto3D.pyx":190
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(21, 190, __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/generated/BinnedHisto3D.pyx":188
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.bins", __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/generated/BinnedHisto3D.pyx":194
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_40_bin, "BinnedHisto3D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "_bin") < 0)) __PYX_ERR(21, 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_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 194, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 194, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_40_bin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedHisto3D.pyx":196
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin3D(Dbn3D)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":197
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin3D(Dbn3D)
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(21, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto3D.pyx":198
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin3D(Dbn3D)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin3D(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedHisto3D.pyx":199
 *         st = self.isMasked(i)
 *         b = Bin3D(Dbn3D)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(21, 199, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedHisto3D.pyx":200
 *         b = Bin3D(Dbn3D)
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 200, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 200, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedHisto3D.pyx":201
 *         if self._config == "ddd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 201, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 201, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(21, 201, __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/generated/BinnedHisto3D.pyx":199
 *         st = self.isMasked(i)
 *         b = Bin3D(Dbn3D)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":202
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ddd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 202, __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/generated/BinnedHisto3D.pyx":203
 *           rtn.setIndices(i, self.binned_ddd_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":194
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":205
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_42bin, "BinnedHisto3D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_42bin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_42bin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_42bin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedHisto3D.pyx":207
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(21, 207, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 207, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 207, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":208
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(21, 208, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto3D.pyx":209
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y, z):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(21, 209, __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/generated/BinnedHisto3D.pyx":205
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedHisto3D.bin", __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;
}

/* "include/generated/BinnedHisto3D.pyx":211
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_44binAt, "BinnedHisto3D.binAt(self, x, y, z)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 211, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 211, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, 1); __PYX_ERR(21, 211, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 211, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, 2); __PYX_ERR(21, 211, __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(21, 211, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 3, 3, __pyx_nargs); __PYX_ERR(21, 211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_44binAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedHisto3D.pyx":213
 *     def binAt(self, x, y, z):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(21, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_x, __pyx_v_y, __pyx_v_z};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 213, __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
  if (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;
    }
  }
  #endif
  {
    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(21, 213, __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/generated/BinnedHisto3D.pyx":211
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":215
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_46maskBin, "BinnedHisto3D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 215, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 215, __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, "maskBin") < 0)) __PYX_ERR(21, 215, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(21, 215, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedHisto3D<double,double,double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedHisto3D.pyx":217
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":218
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 218, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedHisto3D.pyx":217
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":219
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 219, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":220
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 220, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 220, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 220, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 220, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":219
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":215
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedHisto3D.maskBin", __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;
}

/* "include/generated/BinnedHisto3D.pyx":222
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_48maskBins, "BinnedHisto3D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 222, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 222, __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, "maskBins") < 0)) __PYX_ERR(21, 222, __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_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(21, 222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedHisto3D.pyx":224
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(21, 224, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 224, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 224, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":225
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 225, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 225, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(21, 225, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 225, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 225, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(21, 225, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 225, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(21, 225, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":226
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, y, z, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":225
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedHisto3D.pyx":222
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maskBins", __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;
}

/* "include/generated/BinnedHisto3D.pyx":228
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_50maskBinAt, "BinnedHisto3D.maskBinAt(self, x, y, z, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_status,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 228, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 228, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, 1); __PYX_ERR(21, 228, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 228, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, 2); __PYX_ERR(21, 228, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 228, __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, "maskBinAt") < 0)) __PYX_ERR(21, 228, __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);
        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_status = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 3, 4, __pyx_nargs); __PYX_ERR(21, 228, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedHisto3D.pyx":230
 *     def maskBinAt(self, x, y, z, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_x, __pyx_v_y, __pyx_v_z};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 230, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(21, 230, __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/generated/BinnedHisto3D.pyx":228
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */

  /* 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.BinnedHisto3D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":232
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_52maskSlice, "BinnedHisto3D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 232, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 232, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(21, 232, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 232, __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, "maskSlice") < 0)) __PYX_ERR(21, 232, __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_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(21, 232, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedHisto3D.pyx":234
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 234, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":235
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 235, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 235, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 235, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 235, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(21, 235, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":234
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":232
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":237
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedHisto3D.pyx":238
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(21, 238, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(21, 238, __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(21, 238, __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(21, 238, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedHisto3D.pyx":239
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 239, __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/generated/BinnedHisto3D.pyx":237
 *           return self.binned_ddd_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":241
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_56mkEstimate, "BinnedHisto3D.mkEstimate(self, str path='', str source='', divbyvol=True)\nNone -> Estimate.\n\n        Convert this BinnedHisto3D to an BinnedEstimate3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_57mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_56mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  PyObject *__pyx_v_divbyvol = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,&__pyx_n_s_divbyvol,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 241, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 241, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_divbyvol);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 241, __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, "mkEstimate") < 0)) __PYX_ERR(21, 241, __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_path = ((PyObject*)values[0]);
    __pyx_v_source = ((PyObject*)values[1]);
    __pyx_v_divbyvol = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 3, __pyx_nargs); __PYX_ERR(21, 241, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(21, 241, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(21, 241, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_56mkEstimate(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_path, __pyx_v_source, __pyx_v_divbyvol);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkEstimate", 1);

  /* "include/generated/BinnedHisto3D.pyx":245
 * 
 *         Convert this BinnedHisto3D to an BinnedEstimate3D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":246
 *         Convert this BinnedHisto3D to an BinnedEstimate3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":247
 *         rtn = None
 *         if self._config == "ddd":
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 247, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 247, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 247, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 247, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedHisto3D.pyx":248
 *         if self._config == "ddd":
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedHisto3D.pyx":246
 *         Convert this BinnedHisto3D to an BinnedEstimate3D."""
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":249
 *           tmp = c.BH_est_ddd(self.binned_ddd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_9 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_self->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/BinnedHisto3D.pyx":250
 *           rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":241
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.mkEstimate", __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/generated/BinnedHisto3D.pyx":252
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_58mkScatter, "BinnedHisto3D.mkScatter(self, path='', binwidthdiv=True, useFocus=False, includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter4D.\n\n        Make a new Scatter4D.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_59mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_58mkScatter};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_59mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_binwidthdiv = 0;
  PyObject *__pyx_v_useFocus = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_binwidthdiv,&__pyx_n_s_useFocus,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 252, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 252, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_useFocus);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 252, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 252, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 252, __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(21, 252, __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);
        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_path = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_useFocus = values[2];
    __pyx_v_includeOverflows = values[3];
    __pyx_v_includeMaskedBins = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 5, __pyx_nargs); __PYX_ERR(21, 252, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_58mkScatter(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_path, __pyx_v_binwidthdiv, __pyx_v_useFocus, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_58mkScatter(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter4D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  bool __pyx_t_7;
  YODA::Scatter4D __pyx_t_8;
  YODA::Scatter4D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedHisto3D.pyx":256
 * 
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 256, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":257
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 257, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 257, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 257, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 257, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 257, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 257, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 257, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter4D)__pyx_t_8);

    /* "include/generated/BinnedHisto3D.pyx":258
 *         if self._config == "ddd":
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedHisto3D self, BinnedHisto3D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 258, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":256
 * 
 *         Make a new Scatter4D."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter4D> self.binned_ddd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":252
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */

  /* 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.BinnedHisto3D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":260
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedHisto3D self, BinnedHisto3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto3D -> BinnedEstimate3D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_61divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_60divideBy, "BinnedHisto3D.divideBy(self, BinnedHisto3D other, efficiency=False)\nBinnedHisto3D -> BinnedEstimate3D\n\n        Divide this BinnedHisto3D by other,\n        returning a BinnedEstimate3D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_61divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_60divideBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_61divideBy(PyObject *__pyx_v_self, 
#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_BinnedHisto3D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 260, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "divideBy") < 0)) __PYX_ERR(21, 260, __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_BinnedHisto3D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(21, 260, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.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_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 260, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_60divideBy(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_60divideBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::BinnedEstimate3D<double,double,double>  *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedHisto3D.pyx":266
 *         returning a BinnedEstimate3D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 266, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 266, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 266, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":267
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "ddd":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":268
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "ddd":
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":269
 *         rtn = None
 *         if efficiency:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 269, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto3D.pyx":270
 *         if efficiency:
 *           if self._config == "ddd":
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 270, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 270, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedHisto3D.pyx":271
 *           if self._config == "ddd":
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "ddd":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto3D.pyx":269
 *         rtn = None
 *         if efficiency:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    }

    /* "include/generated/BinnedHisto3D.pyx":268
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "ddd":
 *             tmp = c.BH_eff_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto3D.pyx":273
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 273, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedHisto3D.pyx":274
 *         else:
 *           if self._config == "ddd":
 *             tmp = c.BH_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 274, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 274, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedHisto3D.pyx":275
 *           if self._config == "ddd":
 *             tmp = c.BH_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto3D.pyx":273
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         else:
 *           if self._config == "ddd":             # <<<<<<<<<<<<<<
 *             tmp = c.BH_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 */
    }
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto3D.pyx":276
 *             tmp = c.BH_div_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_self->_binning};
    __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(21, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedHisto3D.pyx":277
 *             rtn = cutil.new_owned_cls(BinnedEstimate3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedHisto3D self, BinnedHisto3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":260
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedHisto3D self, BinnedHisto3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto3D -> BinnedEstimate3D
 * 
 */

  /* 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.BinnedHisto3D.divideBy", __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/generated/BinnedHisto3D.pyx":279
 *         return rtn
 * 
 *     def __div__(BinnedHisto3D self, BinnedHisto3D 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_13BinnedHisto3D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_63__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 279, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_62__div__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_62__div__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedHisto3D.pyx":280
 * 
 *     def __div__(BinnedHisto3D self, BinnedHisto3D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedHisto3D self, BinnedHisto3D 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(21, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(21, 280, __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/generated/BinnedHisto3D.pyx":279
 *         return rtn
 * 
 *     def __div__(BinnedHisto3D self, BinnedHisto3D 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.BinnedHisto3D.__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/generated/BinnedHisto3D.pyx":282
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_65__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 282, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_64__truediv__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_64__truediv__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedHisto3D.pyx":283
 * 
 *     def __truediv__(BinnedHisto3D self, BinnedHisto3D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(21, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(21, 283, __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/generated/BinnedHisto3D.pyx":282
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedHisto3D self, BinnedHisto3D 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.BinnedHisto3D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":285
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_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_13BinnedHisto3D_66_mknp, "BinnedHisto3D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_67_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_66_mknp};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "_mknp") < 0)) __PYX_ERR(21, 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_xs = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 285, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_66_mknp(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedHisto3D.pyx":286
 * 
 *     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/generated/BinnedHisto3D.pyx":287
 *     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(21, 287, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedHisto3D.pyx":288
 *         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(21, 288, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(21, 288, __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/generated/BinnedHisto3D.pyx":286
 * 
 *     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/generated/BinnedHisto3D.pyx":289
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedHisto3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(21, 289, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedHisto3D.pyx":290
 *             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/generated/BinnedHisto3D.pyx":286
 * 
 *     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/generated/BinnedHisto3D.pyx":285
 *         return self.divideBy(other)
 * 
 *     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.BinnedHisto3D._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/generated/BinnedHisto3D.pyx":293
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_68lengthContent, "BinnedHisto3D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_69lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_68lengthContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_69lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 293, __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, "lengthContent") < 0)) __PYX_ERR(21, 293, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 293, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_68lengthContent(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_68lengthContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedHisto3D.pyx":295
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":296
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 296, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 296, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 296, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":295
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":297
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 297, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":293
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":299
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_70serializeContent, "BinnedHisto3D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_71serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_70serializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_71serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "serializeContent") < 0)) __PYX_ERR(21, 299, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 299, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_70serializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_70serializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedHisto3D.pyx":301
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 301, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":302
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 302, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 302, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 302, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":301
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":303
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 303, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":299
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":305
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_72deserializeContent, "BinnedHisto3D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_73deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_72deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_73deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 305, __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, "deserializeContent") < 0)) __PYX_ERR(21, 305, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 305, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_72deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_72deserializeContent(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedHisto3D.pyx":308
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 308, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 308, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(21, 308, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 308, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 308, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(21, 308, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 308, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(21, 308, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(21, 308, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto3D.pyx":309
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(21, 309, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto3D.pyx":310
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 310, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 310, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 310, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":309
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":311
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 311, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":305
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":313
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_74lengthMeta, "BinnedHisto3D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_75lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_74lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_75lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 313, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 313, __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, "lengthMeta") < 0)) __PYX_ERR(21, 313, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(21, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_74lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_74lengthMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedHisto3D.pyx":315
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 315, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":316
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 316, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 316, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 316, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 316, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":315
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":317
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 317, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":313
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":319
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_76serializeMeta, "BinnedHisto3D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_77serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_76serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_77serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 319, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "serializeMeta") < 0)) __PYX_ERR(21, 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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(21, 319, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_76serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_76serializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<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("serializeMeta", 1);

  /* "include/generated/BinnedHisto3D.pyx":321
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 321, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":322
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 322, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 322, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 322, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 322, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":321
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":323
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 323, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":319
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":325
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_78deserializeMeta, "BinnedHisto3D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_79deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_78deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_79deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 325, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "deserializeMeta") < 0)) __PYX_ERR(21, 325, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(21, 325, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_78deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_78deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedHisto3D.pyx":328
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 328, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 328, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(21, 328, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 328, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(21, 328, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(21, 328, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 328, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(21, 328, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(21, 328, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 328, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedHisto3D.pyx":329
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(21, 329, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedHisto3D.pyx":330
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 330, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 330, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 330, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 330, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":329
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":331
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 331, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":325
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":334
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_80fill, "BinnedHisto3D.fill(self, x, y, z, weight=1.0, fraction=1.0)\n\n        ([coords], float weight=1.0, float fraction=1.0) -> int\n\n        Fills the distribution with the given weight at given [coords].\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_81fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_80fill};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_81fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 334, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 334, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 1); __PYX_ERR(21, 334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 334, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 2); __PYX_ERR(21, 334, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 334, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 334, __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(21, 334, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, __pyx_nargs); __PYX_ERR(21, 334, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_80fill(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_80fill(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  double __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/generated/BinnedHisto3D.pyx":340
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 340, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":341
 *         """
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 341, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 341, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 341, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 341, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 341, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 341, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->fill(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 341, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":340
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":342
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 342, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":334
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

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

/* "include/generated/BinnedHisto3D.pyx":345
 * 
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_82indexAt, "BinnedHisto3D.indexAt(self, x, y, z)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_83indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_82indexAt};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_83indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 345, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 345, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, 1); __PYX_ERR(21, 345, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 345, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, 2); __PYX_ERR(21, 345, __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, "indexAt") < 0)) __PYX_ERR(21, 345, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 3, 3, __pyx_nargs); __PYX_ERR(21, 345, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_82indexAt(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_82indexAt(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedHisto3D.pyx":346
 * 
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 346, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":347
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 347, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 347, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 347, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 347, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_2->indexAt(__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(21, 347, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":346
 * 
 *     def indexAt(self, x, y, z):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":348
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def fillDim(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 348, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":345
 * 
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */

  /* 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.BinnedHisto3D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":350
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_84fillDim, "BinnedHisto3D.fillDim(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_85fillDim = {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_84fillDim};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_85fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("fillDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fillDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_84fillDim(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_84fillDim(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__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("fillDim", 1);

  /* "include/generated/BinnedHisto3D.pyx":351
 * 
 *     def fillDim(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":352
 *     def fillDim(self):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 352, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 352, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":351
 * 
 *     def fillDim(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":353
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 353, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":350
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()
 */

  /* 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.BinnedHisto3D.fillDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":355
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_86normalize, "BinnedHisto3D.normalize(self, normto=1.0, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_87normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_86normalize};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_87normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 355, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 355, __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(21, 355, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(21, 355, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_86normalize(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_86normalize(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  double __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 1);

  /* "include/generated/BinnedHisto3D.pyx":356
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 356, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":357
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 357, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 357, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 357, __pyx_L1_error)
    try {
      __pyx_t_2->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 357, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":356
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":358
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, factor):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 358, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":355
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":360
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_88scaleW, "BinnedHisto3D.scaleW(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_89scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_88scaleW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_89scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 360, __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(21, 360, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_88scaleW(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_88scaleW(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("scaleW", 1);

  /* "include/generated/BinnedHisto3D.pyx":361
 * 
 *     def scaleW(self, factor):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 361, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":362
 *     def scaleW(self, factor):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 362, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 362, __pyx_L1_error)
    try {
      __pyx_t_2->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 362, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":361
 * 
 *     def scaleW(self, factor):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":363
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 363, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":360
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)
 */

  /* 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.BinnedHisto3D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":365
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_90sumW, "BinnedHisto3D.sumW(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_91sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_90sumW};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_91sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 365, __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(21, 365, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 365, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_90sumW(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_90sumW(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 1);

  /* "include/generated/BinnedHisto3D.pyx":366
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 366, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":367
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 367, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 367, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 367, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":366
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":368
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 368, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":365
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":370
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_92sumW2, "BinnedHisto3D.sumW2(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_93sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_92sumW2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_93sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 370, __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(21, 370, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 370, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_92sumW2(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_92sumW2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 1);

  /* "include/generated/BinnedHisto3D.pyx":371
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 371, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":372
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 372, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 372, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 372, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":371
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":373
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 373, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":370
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":375
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_94sumWA, "BinnedHisto3D.sumWA(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_95sumWA = {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_94sumWA};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_95sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 375, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 375, __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, "sumWA") < 0)) __PYX_ERR(21, 375, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA", 0, 1, 2, __pyx_nargs); __PYX_ERR(21, 375, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_94sumWA(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_94sumWA(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __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("sumWA", 1);

  /* "include/generated/BinnedHisto3D.pyx":376
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":377
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 377, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 377, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 377, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 377, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":376
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":378
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 378, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":375
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 */

  /* 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.BinnedHisto3D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":380
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_96sumWA2, "BinnedHisto3D.sumWA2(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_97sumWA2 = {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_96sumWA2};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_97sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 380, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 380, __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, "sumWA2") < 0)) __PYX_ERR(21, 380, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA2", 0, 1, 2, __pyx_nargs); __PYX_ERR(21, 380, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_96sumWA2(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_96sumWA2(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __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("sumWA2", 1);

  /* "include/generated/BinnedHisto3D.pyx":381
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 381, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":382
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 382, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 382, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 382, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 382, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":381
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":383
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 383, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":380
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 */

  /* 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.BinnedHisto3D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":385
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_98numEntries, "BinnedHisto3D.numEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_99numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_98numEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_99numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 385, __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(21, 385, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 385, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_98numEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_98numEntries(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/generated/BinnedHisto3D.pyx":386
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":387
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 387, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 387, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 387, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":386
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":388
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 388, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":385
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":390
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_100effNumEntries, "BinnedHisto3D.effNumEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_101effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_100effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_101effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 390, __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(21, 390, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 390, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_100effNumEntries(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_100effNumEntries(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 1);

  /* "include/generated/BinnedHisto3D.pyx":391
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 391, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":392
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 392, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 392, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 392, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":391
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":393
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integral(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 393, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":390
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":395
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_102integral, "BinnedHisto3D.integral(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_103integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_102integral};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_103integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 395, __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(21, 395, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 395, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_102integral(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_102integral(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 1);

  /* "include/generated/BinnedHisto3D.pyx":396
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 396, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":397
 *     def integral(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 397, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 397, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 397, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":396
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":398
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integralError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 398, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":395
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":400
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_104integralError, "BinnedHisto3D.integralError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_105integralError = {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_104integralError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_105integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 400, __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, "integralError") < 0)) __PYX_ERR(21, 400, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralError", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.integralError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_104integralError(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_104integralError(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralError", 1);

  /* "include/generated/BinnedHisto3D.pyx":401
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":402
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 402, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 402, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":401
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":403
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def dVol(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 403, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":400
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":405
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_106dVol, "BinnedHisto3D.dVol(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_107dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_106dVol};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_107dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 405, __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, "dVol") < 0)) __PYX_ERR(21, 405, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 405, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_106dVol(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_106dVol(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/BinnedHisto3D.pyx":406
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 406, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":407
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 407, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 407, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 407, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":406
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":408
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def density(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 408, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":405
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":410
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_108density, "BinnedHisto3D.density(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_109density = {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_108density};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_109density(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("density (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "density") < 0)) __PYX_ERR(21, 410, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("density", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 410, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.density", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_108density(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_108density(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("density", 1);

  /* "include/generated/BinnedHisto3D.pyx":411
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":412
 *     def density(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 412, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 412, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":411
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":413
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densityError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 413, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":410
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":415
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_110densityError, "BinnedHisto3D.densityError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_111densityError = {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_110densityError};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_111densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densityError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 415, __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, "densityError") < 0)) __PYX_ERR(21, 415, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densityError", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 415, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.densityError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_110densityError(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_110densityError(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densityError", 1);

  /* "include/generated/BinnedHisto3D.pyx":416
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":417
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 417, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 417, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 417, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":416
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":418
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densitySum(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 418, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":415
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":420
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_112densitySum, "BinnedHisto3D.densitySum(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_113densitySum = {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_112densitySum};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_113densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densitySum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 420, __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, "densitySum") < 0)) __PYX_ERR(21, 420, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densitySum", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 420, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.densitySum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_112densitySum(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_112densitySum(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densitySum", 1);

  /* "include/generated/BinnedHisto3D.pyx":421
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 421, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":422
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 422, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 422, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 422, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":421
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":423
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maxDensity(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 423, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":420
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":425
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_114maxDensity, "BinnedHisto3D.maxDensity(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_115maxDensity = {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_114maxDensity};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_115maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxDensity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 425, __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, "maxDensity") < 0)) __PYX_ERR(21, 425, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxDensity", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 425, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.maxDensity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_114maxDensity(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_114maxDensity(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxDensity", 1);

  /* "include/generated/BinnedHisto3D.pyx":426
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":427
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 427, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 427, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":426
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":428
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 428, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":425
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 */

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

/* "include/generated/BinnedHisto3D.pyx":430
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_116maskedBins, "BinnedHisto3D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_117maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_116maskedBins};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_117maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_116maskedBins(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_116maskedBins(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::vector<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("maskedBins", 1);

  /* "include/generated/BinnedHisto3D.pyx":431
 * 
 *     def maskedBins(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 431, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":432
 *     def maskedBins(self):
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 432, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 432, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":431
 * 
 *     def maskedBins(self):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":433
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 433, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":430
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */

  /* 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.BinnedHisto3D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":435
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_118numBinsX, "BinnedHisto3D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_119numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_118numBinsX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_119numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 435, __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, "numBinsX") < 0)) __PYX_ERR(21, 435, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 435, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_118numBinsX(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_118numBinsX(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedHisto3D.pyx":437
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 437, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":438
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 438, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 438, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 438, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":437
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":439
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 439, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":435
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":442
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_120xEdges, "BinnedHisto3D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_121xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_120xEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_121xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 442, __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, "xEdges") < 0)) __PYX_ERR(21, 442, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 442, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_120xEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_120xEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedHisto3D.pyx":444
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 444, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":445
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 445, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 445, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 445, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":444
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":446
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 446, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":442
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":449
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_122xWidths, "BinnedHisto3D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_123xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_122xWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_123xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 449, __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, "xWidths") < 0)) __PYX_ERR(21, 449, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 449, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_122xWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_122xWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedHisto3D.pyx":451
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":452
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 452, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":451
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":453
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 453, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":449
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":456
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_124xMin, "BinnedHisto3D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_125xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_124xMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_125xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_124xMin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_124xMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("xMin", 1);

  /* "include/generated/BinnedHisto3D.pyx":458
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 458, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":459
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 459, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 459, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":458
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":460
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 460, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":456
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":463
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_126xMax, "BinnedHisto3D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_127xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_126xMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_127xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_126xMax(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_126xMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("xMax", 1);

  /* "include/generated/BinnedHisto3D.pyx":465
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 465, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":466
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 466, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 466, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":465
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":467
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 467, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":463
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":470
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_128rebinXBy, "BinnedHisto3D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_129rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_128rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_129rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__101);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 470, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 470, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 470, __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, "rebinXBy") < 0)) __PYX_ERR(21, 470, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(21, 470, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_128rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_128rebinXBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedHisto3D.pyx":472
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":473
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 473, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(21, 473, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 473, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 473, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(21, 473, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":472
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":474
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 474, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":470
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":477
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_130rebinXTo, "BinnedHisto3D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_131rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_130rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_131rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 477, __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, "rebinXTo") < 0)) __PYX_ERR(21, 477, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 477, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_130rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_130rebinXTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedHisto3D.pyx":479
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 479, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":480
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 480, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 480, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 480, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":479
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":481
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 481, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":477
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":484
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_132xMean, "BinnedHisto3D.xMean(self, includeOverflows=True)\nxMean on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_133xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_132xMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_133xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 484, __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(21, 484, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 484, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_132xMean(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_132xMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 1);

  /* "include/generated/BinnedHisto3D.pyx":486
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 486, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":487
 *         """xMean on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 487, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 487, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 487, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":486
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":488
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 488, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":484
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":491
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_134xVariance, "BinnedHisto3D.xVariance(self, includeOverflows=True)\nxVariance on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_135xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_134xVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_135xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "xVariance") < 0)) __PYX_ERR(21, 491, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 491, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_134xVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_134xVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 1);

  /* "include/generated/BinnedHisto3D.pyx":493
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 493, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":494
 *         """xVariance on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 494, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 494, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 494, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":493
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":495
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 495, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":491
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":498
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_136xStdDev, "BinnedHisto3D.xStdDev(self, includeOverflows=True)\nxStdDev on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_137xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_136xStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_137xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 498, __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(21, 498, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 498, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_136xStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_136xStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 1);

  /* "include/generated/BinnedHisto3D.pyx":500
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 500, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":501
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 501, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 501, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 501, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":500
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":502
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 502, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":498
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":505
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_138xStdErr, "BinnedHisto3D.xStdErr(self, includeOverflows=True)\nxStdErr on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_139xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_138xStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_139xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "xStdErr") < 0)) __PYX_ERR(21, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 505, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_138xStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_138xStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 1);

  /* "include/generated/BinnedHisto3D.pyx":507
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 507, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":508
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 508, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 508, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 508, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":507
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":509
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 509, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":505
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":512
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_140xRMS, "BinnedHisto3D.xRMS(self, includeOverflows=True)\nxRMS on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_141xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_140xRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_141xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "xRMS") < 0)) __PYX_ERR(21, 512, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 512, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_140xRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_140xRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 1);

  /* "include/generated/BinnedHisto3D.pyx":514
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 514, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":515
 *         """xRMS on x axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 515, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 515, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 515, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":514
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":516
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 516, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":512
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":519
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_142rebinX, "BinnedHisto3D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_143rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_142rebinX};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_143rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 519, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(21, 519, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(21, 519, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_142rebinX(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_142rebinX(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedHisto3D.pyx":520
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 520, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":521
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(21, 521, __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/generated/BinnedHisto3D.pyx":520
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto3D.pyx":523
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(21, 523, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 523, __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(21, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto3D.pyx":519
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":525
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_145numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_144numBinsY, "BinnedHisto3D.numBinsY(self, includeOverflows=False)\nnumBinsY on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_145numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_145numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_144numBinsY};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_145numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "numBinsY") < 0)) __PYX_ERR(21, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsY", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 525, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_144numBinsY(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_144numBinsY(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 1);

  /* "include/generated/BinnedHisto3D.pyx":527
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 527, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":528
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 528, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 528, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 528, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":527
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":529
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 529, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":525
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":532
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_147yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_146yEdges, "BinnedHisto3D.yEdges(self, includeOverflows=False)\nyEdges on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_147yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_147yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_146yEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_147yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "yEdges") < 0)) __PYX_ERR(21, 532, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 532, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_146yEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_146yEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 1);

  /* "include/generated/BinnedHisto3D.pyx":534
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":535
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 535, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 535, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 535, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":534
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":536
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 536, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":532
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":539
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_149yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_148yWidths, "BinnedHisto3D.yWidths(self, includeOverflows=True)\nyWidths on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_149yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_149yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_148yWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_149yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 539, __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, "yWidths") < 0)) __PYX_ERR(21, 539, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 539, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_148yWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_148yWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 1);

  /* "include/generated/BinnedHisto3D.pyx":541
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 541, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":542
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 542, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 542, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 542, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":541
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":543
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 543, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":539
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":546
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_151yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_150yMin, "BinnedHisto3D.yMin(self)\nyMin on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_151yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_151yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_150yMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_151yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_150yMin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_150yMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("yMin", 1);

  /* "include/generated/BinnedHisto3D.pyx":548
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 548, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":549
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 549, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 549, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":548
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":550
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 550, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":546
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":553
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_153yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_152yMax, "BinnedHisto3D.yMax(self)\nyMax on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_153yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_153yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_152yMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_153yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_152yMax(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_152yMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("yMax", 1);

  /* "include/generated/BinnedHisto3D.pyx":555
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 555, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":556
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 556, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 556, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":555
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":557
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 557, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":553
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":560
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_155rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_154rebinYBy, "BinnedHisto3D.rebinYBy(self, n, begin=1, end=sys.maxsize)\nrebinYBy on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_155rebinYBy = {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_155rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_154rebinYBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_155rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__102);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 560, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 560, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 560, __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, "rebinYBy") < 0)) __PYX_ERR(21, 560, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(21, 560, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_154rebinYBy(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_154rebinYBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYBy", 1);

  /* "include/generated/BinnedHisto3D.pyx":562
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 562, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":563
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 563, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(21, 563, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 563, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 563, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYBy(__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(21, 563, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":562
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":564
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 564, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":560
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":567
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_157rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_156rebinYTo, "BinnedHisto3D.rebinYTo(self, edges)\nrebinYTo on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_157rebinYTo = {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_157rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_156rebinYTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_157rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 567, __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, "rebinYTo") < 0)) __PYX_ERR(21, 567, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 567, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_156rebinYTo(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_156rebinYTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYTo", 1);

  /* "include/generated/BinnedHisto3D.pyx":569
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 569, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":570
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 570, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 570, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 570, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":569
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":571
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 571, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":567
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":574
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_159yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_158yMean, "BinnedHisto3D.yMean(self, includeOverflows=True)\nyMean on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_159yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_159yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_158yMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_159yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 574, __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(21, 574, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_158yMean(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_158yMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 1);

  /* "include/generated/BinnedHisto3D.pyx":576
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":577
 *         """yMean on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 577, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 577, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":576
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":578
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 578, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":574
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":581
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_161yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_160yVariance, "BinnedHisto3D.yVariance(self, includeOverflows=True)\nyVariance on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_161yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_161yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_160yVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_161yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 581, __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(21, 581, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 581, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_160yVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_160yVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 1);

  /* "include/generated/BinnedHisto3D.pyx":583
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 583, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":584
 *         """yVariance on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 584, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 584, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 584, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":583
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":585
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 585, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":581
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":588
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_163yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_162yStdDev, "BinnedHisto3D.yStdDev(self, includeOverflows=True)\nyStdDev on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_163yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_163yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_162yStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_163yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 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, "yStdDev") < 0)) __PYX_ERR(21, 588, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 588, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_162yStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_162yStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 1);

  /* "include/generated/BinnedHisto3D.pyx":590
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":591
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 591, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 591, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 591, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":590
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":592
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 592, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":588
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":595
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_165yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_164yStdErr, "BinnedHisto3D.yStdErr(self, includeOverflows=True)\nyStdErr on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_165yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_165yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_164yStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_165yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 595, __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(21, 595, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 595, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_164yStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_164yStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 1);

  /* "include/generated/BinnedHisto3D.pyx":597
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 597, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":598
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 598, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 598, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 598, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":597
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":599
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 599, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":595
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":602
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_167yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_166yRMS, "BinnedHisto3D.yRMS(self, includeOverflows=True)\nyRMS on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_167yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_167yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_166yRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_167yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 602, __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(21, 602, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 602, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_166yRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_166yRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 1);

  /* "include/generated/BinnedHisto3D.pyx":604
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":605
 *         """yRMS on y axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 605, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 605, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 605, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":604
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":606
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 606, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":602
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":609
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_169rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_168rebinY, "BinnedHisto3D.rebinY(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_169rebinY = {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_169rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_168rebinY};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_169rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 609, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinY") < 0)) __PYX_ERR(21, 609, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinY", 0, 1, 1, __pyx_nargs); __PYX_ERR(21, 609, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_168rebinY(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_168rebinY(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinY", 1);

  /* "include/generated/BinnedHisto3D.pyx":610
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 610, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":611
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(21, 611, __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/generated/BinnedHisto3D.pyx":610
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto3D.pyx":613
 *             self.rebinYTo(arg)
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsZ(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(21, 613, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 613, __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(21, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto3D.pyx":609
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":615
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_171numBinsZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_170numBinsZ, "BinnedHisto3D.numBinsZ(self, includeOverflows=False)\nnumBinsZ on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_171numBinsZ = {"numBinsZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_171numBinsZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_170numBinsZ};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_171numBinsZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 615, __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, "numBinsZ") < 0)) __PYX_ERR(21, 615, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsZ", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 615, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.numBinsZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_170numBinsZ(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_170numBinsZ(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsZ", 1);

  /* "include/generated/BinnedHisto3D.pyx":617
 *     def numBinsZ(self, includeOverflows=False):
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 617, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":618
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 618, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 618, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsZ(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 618, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":617
 *     def numBinsZ(self, includeOverflows=False):
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":619
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numBinsZ(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 619, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":615
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":622
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_173zEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_172zEdges, "BinnedHisto3D.zEdges(self, includeOverflows=False)\nzEdges on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_173zEdges = {"zEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_173zEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_172zEdges};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_173zEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 622, __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, "zEdges") < 0)) __PYX_ERR(21, 622, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 622, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_172zEdges(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_172zEdges(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zEdges", 1);

  /* "include/generated/BinnedHisto3D.pyx":624
 *     def zEdges(self, includeOverflows=False):
 *         """zEdges on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 624, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":625
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 625, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 625, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 625, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":624
 *     def zEdges(self, includeOverflows=False):
 *         """zEdges on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":626
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 626, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":622
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":629
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_175zWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_174zWidths, "BinnedHisto3D.zWidths(self, includeOverflows=True)\nzWidths on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_175zWidths = {"zWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_175zWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_174zWidths};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_175zWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 629, __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, "zWidths") < 0)) __PYX_ERR(21, 629, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 629, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_174zWidths(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_174zWidths(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zWidths", 1);

  /* "include/generated/BinnedHisto3D.pyx":631
 *     def zWidths(self, includeOverflows=True):
 *         """zWidths on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 631, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":632
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 632, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 632, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 632, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":631
 *     def zWidths(self, includeOverflows=True):
 *         """zWidths on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":633
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 633, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":629
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":636
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_177zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_176zMin, "BinnedHisto3D.zMin(self)\nzMin on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_177zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_177zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_176zMin};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_177zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_176zMin(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_176zMin(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("zMin", 1);

  /* "include/generated/BinnedHisto3D.pyx":638
 *     def zMin(self):
 *         """zMin on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 638, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":639
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 639, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->zMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 639, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":638
 *     def zMin(self):
 *         """zMin on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":640
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 640, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":636
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":643
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_179zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_178zMax, "BinnedHisto3D.zMax(self)\nzMax on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_179zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_179zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_178zMax};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_179zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_178zMax(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_178zMax(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,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("zMax", 1);

  /* "include/generated/BinnedHisto3D.pyx":645
 *     def zMax(self):
 *         """zMax on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 645, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":646
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 646, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->zMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 646, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":645
 *     def zMax(self):
 *         """zMax on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":647
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 647, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":643
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":650
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_181rebinZBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_180rebinZBy, "BinnedHisto3D.rebinZBy(self, n, begin=1, end=sys.maxsize)\nrebinZBy on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_181rebinZBy = {"rebinZBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_181rebinZBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_180rebinZBy};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_181rebinZBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__103);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 650, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 650, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 650, __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, "rebinZBy") < 0)) __PYX_ERR(21, 650, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(21, 650, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinZBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_180rebinZBy(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_180rebinZBy(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZBy", 1);

  /* "include/generated/BinnedHisto3D.pyx":652
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 652, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":653
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 653, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(21, 653, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 653, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(21, 653, __pyx_L1_error)
    try {
      __pyx_t_2->rebinZBy(__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(21, 653, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":652
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":654
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 654, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":650
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinZBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":657
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_183rebinZTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_182rebinZTo, "BinnedHisto3D.rebinZTo(self, edges)\nrebinZTo on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_183rebinZTo = {"rebinZTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_183rebinZTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_182rebinZTo};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_183rebinZTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 657, __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, "rebinZTo") < 0)) __PYX_ERR(21, 657, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 657, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinZTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_182rebinZTo(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_182rebinZTo(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZTo", 1);

  /* "include/generated/BinnedHisto3D.pyx":659
 *     def rebinZTo(self, edges):
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 659, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":660
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 660, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 660, __pyx_L1_error)
    try {
      __pyx_t_2->rebinZTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 660, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":659
 *     def rebinZTo(self, edges):
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":661
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().rebinZTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 661, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":657
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */

  /* 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.BinnedHisto3D.rebinZTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":664
 * 
 * 
 *     def zMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zMean on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_185zMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_184zMean, "BinnedHisto3D.zMean(self, includeOverflows=True)\nzMean on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_185zMean = {"zMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_185zMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_184zMean};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_185zMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 664, __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, "zMean") < 0)) __PYX_ERR(21, 664, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 664, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_184zMean(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_184zMean(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMean", 1);

  /* "include/generated/BinnedHisto3D.pyx":666
 *     def zMean(self, includeOverflows=True):
 *         """zMean on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 666, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":667
 *         """zMean on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 667, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 667, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 667, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":666
 *     def zMean(self, includeOverflows=True):
 *         """zMean on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":668
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 668, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":664
 * 
 * 
 *     def zMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zMean on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":671
 * 
 * 
 *     def zVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zVariance on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_187zVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_186zVariance, "BinnedHisto3D.zVariance(self, includeOverflows=True)\nzVariance on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_187zVariance = {"zVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_187zVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_186zVariance};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_187zVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 671, __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, "zVariance") < 0)) __PYX_ERR(21, 671, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 671, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_186zVariance(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_186zVariance(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zVariance", 1);

  /* "include/generated/BinnedHisto3D.pyx":673
 *     def zVariance(self, includeOverflows=True):
 *         """zVariance on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 673, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":674
 *         """zVariance on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 674, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 674, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 674, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":673
 *     def zVariance(self, includeOverflows=True):
 *         """zVariance on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":675
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 675, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":671
 * 
 * 
 *     def zVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zVariance on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":678
 * 
 * 
 *     def zStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_189zStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_188zStdDev, "BinnedHisto3D.zStdDev(self, includeOverflows=True)\nzStdDev on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_189zStdDev = {"zStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_189zStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_188zStdDev};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_189zStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 678, __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, "zStdDev") < 0)) __PYX_ERR(21, 678, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 678, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_188zStdDev(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_188zStdDev(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zStdDev", 1);

  /* "include/generated/BinnedHisto3D.pyx":680
 *     def zStdDev(self, includeOverflows=True):
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 680, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":681
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 681, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 681, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 681, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":680
 *     def zStdDev(self, includeOverflows=True):
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":682
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 682, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":678
 * 
 * 
 *     def zStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":685
 * 
 * 
 *     def zStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_191zStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_190zStdErr, "BinnedHisto3D.zStdErr(self, includeOverflows=True)\nzStdErr on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_191zStdErr = {"zStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_191zStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_190zStdErr};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_191zStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 685, __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, "zStdErr") < 0)) __PYX_ERR(21, 685, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 685, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_190zStdErr(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_190zStdErr(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zStdErr", 1);

  /* "include/generated/BinnedHisto3D.pyx":687
 *     def zStdErr(self, includeOverflows=True):
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 687, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":688
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 688, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 688, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 688, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":687
 *     def zStdErr(self, includeOverflows=True):
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":689
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 689, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":685
 * 
 * 
 *     def zStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":692
 * 
 * 
 *     def zRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zRMS on z axis."""
 *         if self._config == "ddd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_193zRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_192zRMS, "BinnedHisto3D.zRMS(self, includeOverflows=True)\nzRMS on z axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_193zRMS = {"zRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_193zRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_192zRMS};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_193zRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 692, __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, "zRMS") < 0)) __PYX_ERR(21, 692, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 692, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.zRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_192zRMS(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_192zRMS(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zRMS", 1);

  /* "include/generated/BinnedHisto3D.pyx":694
 *     def zRMS(self, includeOverflows=True):
 *         """zRMS on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 694, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":695
 *         """zRMS on z axis."""
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 695, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(21, 695, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->zRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(21, 695, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":694
 *     def zRMS(self, includeOverflows=True):
 *         """zRMS on z axis."""
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return self.binned_ddd_ptr().zRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":696
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().zRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 696, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":692
 * 
 * 
 *     def zRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zRMS on z axis."""
 *         if self._config == "ddd":
 */

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

/* "include/generated/BinnedHisto3D.pyx":699
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_195rebinZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_13BinnedHisto3D_194rebinZ, "BinnedHisto3D.rebinZ(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_195rebinZ = {"rebinZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_195rebinZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_194rebinZ};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_195rebinZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 699, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinZ") < 0)) __PYX_ERR(21, 699, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinZ", 0, 1, 1, __pyx_nargs); __PYX_ERR(21, 699, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_194rebinZ(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_194rebinZ(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinZ", 1);

  /* "include/generated/BinnedHisto3D.pyx":700
 * 
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinZTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 700, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":701
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinZBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinZTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(21, 701, __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/generated/BinnedHisto3D.pyx":700
 * 
 *     def rebinZ(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinZTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedHisto3D.pyx":703
 *             self.rebinZTo(arg)
 *         else:
 *             self.rebinZBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinZBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(21, 703, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 703, __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(21, 703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedHisto3D.pyx":699
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.rebinZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":705
 *             self.rebinZBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_197__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_197__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 705, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_196__add__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_196__add__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedHisto3D.pyx":706
 * 
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":707
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":706
 * 
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":708
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "ddd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 708, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 708, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 708, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":709
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":710
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 710, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":711
 *         rtn = None
 *         if self._config == "ddd":
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 711, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 711, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto3D.pyx":712
 *         if self._config == "ddd":
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":710
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":713
 *           tmp = c.BH_add_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_self->_binning};
    __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(21, 713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto3D.pyx":714
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":705
 *             self.rebinZBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.__add__", __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/generated/BinnedHisto3D.pyx":716
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_199__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_199__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 716, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_198__iadd__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_198__iadd__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedHisto3D.pyx":717
 * 
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":718
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":717
 * 
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":719
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           c.BH_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 719, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 719, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 719, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":720
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 720, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":721
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 *           c.BH_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 721, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 721, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto3D.pyx":720
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BH_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":722
 *         if self._config == "ddd":
 *           c.BH_iadd_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":716
 *         return rtn
 * 
 *     def __iadd__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto3D.pyx":724
 *         return self
 * 
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_201__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_201__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 724, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_200__sub__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_200__sub__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedHisto3D.pyx":725
 * 
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":726
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":725
 * 
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":727
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "ddd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 727, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 727, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 727, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":728
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedHisto3D.pyx":729
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 729, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":730
 *         rtn = None
 *         if self._config == "ddd":
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 730, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 730, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto3D.pyx":731
 *         if self._config == "ddd":
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedHisto3D.pyx":729
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":732
 *           tmp = c.BH_sub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_self->_binning};
    __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(21, 732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedHisto3D.pyx":733
 *           rtn = cutil.new_owned_cls(BinnedHisto3D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":724
 *         return self
 * 
 *     def __sub__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.__sub__", __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/generated/BinnedHisto3D.pyx":735
 *         return rtn
 * 
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_203__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_203__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 735, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_202__isub__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_202__isub__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedHisto3D.pyx":736
 * 
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":737
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":736
 * 
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":738
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           c.BH_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 738, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(21, 738, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(21, 738, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedHisto3D.pyx":739
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 739, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":740
 *         assert(self._config == other._config)
 *         if self._config == "ddd":
 *           c.BH_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 740, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 740, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedHisto3D.pyx":739
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           c.BH_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":741
 *         if self._config == "ddd":
 *           c.BH_isub_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedHisto3D.pyx":735
 *         return rtn
 * 
 *     def __isub__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedHisto3D.pyx":743
 *         return self
 * 
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_205__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_205__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 743, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_204__eq__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_204__eq__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedHisto3D.pyx":744
 * 
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 744, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":745
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 745, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 745, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":744
 * 
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":746
 *         if self._config == "ddd":
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 746, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":743
 *         return self
 * 
 *     def __eq__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BH_eq_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

  /* 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.BinnedHisto3D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":748
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_207__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_207__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedHisto3D, 1, "other", 0))) __PYX_ERR(21, 748, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_206__ne__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__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_13BinnedHisto3D_206__ne__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_2;
  YODA::BinnedHisto3D<double,double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedHisto3D.pyx":749
 * 
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ddd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(21, 749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedHisto3D.pyx":750
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 750, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedHisto3D<double,double,double>  *)NULL))) __PYX_ERR(21, 750, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedHisto3D.pyx":749
 * 
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):
 *         if self._config == "ddd":             # <<<<<<<<<<<<<<
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedHisto3D.pyx":751
 *         if self._config == "ddd":
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(21, 751, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":748
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedHisto3D self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return c.BH_ne_ddd(self.binned_ddd_ptr(), other.binned_ddd_ptr())
 */

  /* 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.BinnedHisto3D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedHisto3D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(21, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto3D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedHisto3D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedHisto3D[double,double,double]* binned_ddd_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_13BinnedHisto3D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedHisto3D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_13BinnedHisto3D_209__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_13BinnedHisto3D_208__reduce_cython__, "BinnedHisto3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_209__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_209__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_208__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_209__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_13BinnedHisto3D_208__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_208__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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__", 1);

  /* "(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(1, 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.BinnedHisto3D.__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_13BinnedHisto3D_211__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_13BinnedHisto3D_210__setstate_cython__, "BinnedHisto3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_13BinnedHisto3D_211__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_211__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_210__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_13BinnedHisto3D_211__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedHisto3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_13BinnedHisto3D_210__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_13BinnedHisto3D_210__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedHisto3D *__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__", 1);

  /* "(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(1, 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.BinnedHisto3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedProfile1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile1D<double>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  YODA::BinnedProfile1D<double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile1D.pyx":31
 * 
 *     cdef inline c.BinnedProfile1D[double]* binned_d_ptr(self) except NULL:
 *         return <c.BinnedProfile1D[double]*> 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(22, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile1D<double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedProfile1D[double]* binned_d_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedProfile1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile1D<int>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  YODA::BinnedProfile1D<int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile1D.pyx":35
 * 
 *     cdef inline c.BinnedProfile1D[int]* binned_i_ptr(self) except NULL:
 *         return <c.BinnedProfile1D[int]*> 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(22, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile1D<int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedProfile1D[int]* binned_i_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedProfile1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile1D<std::string>  *__pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  YODA::BinnedProfile1D<std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile1D.pyx":39
 * 
 *     cdef inline c.BinnedProfile1D[string]* binned_s_ptr(self) except NULL:
 *         return <c.BinnedProfile1D[string]*> 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(22, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile1D<std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedProfile1D[string]* binned_s_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile1D[string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D___init__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D___init__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedProfile1D.pyx":44
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedProfile1D.pyx":45
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":46
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 46, __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(22, 46, __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_BinnedProfile1D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile1D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile1D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile1D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(22, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(22, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(22, 46, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(22, 46, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(22, 46, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile1D.pyx":43
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile1D[double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_2__init1, "BinnedProfile1D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1 = {"_BinnedProfile1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedProfile1D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_2__init1(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedProfile1D<double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init1", 1);

  /* "include/generated/BinnedProfile1D.pyx":49
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedProfile1D[double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedProfile1D<double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 49, __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(22, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile1D[double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedProfile1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__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_15BinnedProfile1D_4__init2, "BinnedProfile1D.__init2(self, edgesA1, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__init2 = {"_BinnedProfile1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__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_edgesA1 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 52, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 52, __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, "_BinnedProfile1D__init2") < 0)) __PYX_ERR(22, 52, __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_edgesA1 = values[0];
    __pyx_v_path = ((PyObject*)values[1]);
    __pyx_v_title = ((PyObject*)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init2", 0, 1, 3, __pyx_nargs); __PYX_ERR(22, 52, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(22, 52, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(22, 52, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_2generator131(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_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_132_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_132_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(22, 58, __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_15BinnedProfile1D_23_BinnedProfile1D__init2_2generator131, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile1D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(22, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init2.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_15BinnedProfile1D_23_BinnedProfile1D__init2_2generator131(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_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(22, 58, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(22, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(22, 58, __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(22, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 58, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 58, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 58, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 58, __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(22, 58, __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(22, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(22, 58, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_5generator132(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_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_133_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_133_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(22, 62, __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_15BinnedProfile1D_23_BinnedProfile1D__init2_5generator132, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile1D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init2.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_15BinnedProfile1D_23_BinnedProfile1D__init2_5generator132(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_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(22, 62, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(22, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(22, 62, __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(22, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 62, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 62, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 62, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 62, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 62, __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(22, 62, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(22, 62, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_8generator133(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_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_134_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_134_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(22, 66, __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_15BinnedProfile1D_23_BinnedProfile1D__init2_8generator133, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile1D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init2.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_15BinnedProfile1D_23_BinnedProfile1D__init2_8generator133(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_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(22, 66, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(22, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(22, 66, __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(22, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 66, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(22, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 66, __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(22, 66, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(22, 66, __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/generated/BinnedProfile1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_4__init2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_2generator131 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_5generator132 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_8generator133 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::vector<double> >  __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::BinnedProfile1D<double>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  std::vector<std::vector<int> >  __pyx_t_13;
  YODA::BinnedProfile1D<int>  *__pyx_t_14;
  std::vector<std::vector<std::string> >  __pyx_t_15;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init2", 1);

  /* "include/generated/BinnedProfile1D.pyx":53
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 53, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(22, 53, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 53, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 53, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":58
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 58, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

    /* "include/generated/BinnedProfile1D.pyx":59
 *         if isinstance(edgesA1[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 59, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 59, __pyx_L1_error)
    try {
      __pyx_t_9 = new YODA::BinnedProfile1D<double> ((__pyx_v_edges_d[0]), ((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(22, 59, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":60
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":57
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedProfile1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":62
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_3genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 62, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_13 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 62, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13);

    /* "include/generated/BinnedProfile1D.pyx":63
 *         elif isinstance(edgesA1[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 63, __pyx_L1_error)
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 63, __pyx_L1_error)
    try {
      __pyx_t_14 = new YODA::BinnedProfile1D<int> ((__pyx_v_edges_i[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_7));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 63, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":64
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":61
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[double](edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_d[0])
 *         elif isinstance(edgesA1[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedProfile1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedProfile1D.pyx":66
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 66, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15);

    /* "include/generated/BinnedProfile1D.pyx":67
 *         elif isinstance(edgesA1[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0])
 *         else:
 */
    __pyx_t_7 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 67, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 67, __pyx_L1_error)
    try {
      __pyx_t_16 = new YODA::BinnedProfile1D<std::string> ((__pyx_v_edges_s[0]), ((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(22, 67, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":68
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_s[0])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":65
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[int](edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_i[0])
 *         elif isinstance(edgesA1[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile1D[string](edges_s[0], <string>path, <string>title))
 */
    goto __pyx_L5;
  }

  /* "include/generated/BinnedProfile1D.pyx":70
 *           self._set_config(edges_s[0])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(22, 70, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "include/generated/BinnedProfile1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */

  /* 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_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_2generator131);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_5generator132);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile1D_23_BinnedProfile1D__init2_8generator133);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__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_15BinnedProfile1D_6__init3, "BinnedProfile1D.__init3(self, nbinsX, lowerX, upperX, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__init3 = {"_BinnedProfile1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 72, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init3", 0, 3, 5, 1); __PYX_ERR(22, 72, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 72, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init3", 0, 3, 5, 2); __PYX_ERR(22, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 72, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 72, __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, "_BinnedProfile1D__init3") < 0)) __PYX_ERR(22, 72, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_path = ((PyObject*)values[3]);
    __pyx_v_title = ((PyObject*)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init3", 0, 3, 5, __pyx_nargs); __PYX_ERR(22, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(22, 72, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(22, 72, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_6__init3(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init3", 1);

  /* "include/generated/BinnedProfile1D.pyx":74
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(22, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedProfile1D.pyx":73
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(22, 73, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile1D.pyx":76
 *             linspace(nbinsX, lowerX, upperX),
 *         ]
 *         self.__init2(edges[0], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedProfile1D other):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile1D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_t_3, __pyx_v_path, __pyx_v_title};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__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_2)) __PYX_ERR(22, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__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_15BinnedProfile1D_8__init4, "BinnedProfile1D.__init4(self, BinnedProfile1D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__init4 = {"_BinnedProfile1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 78, __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, "_BinnedProfile1D__init4") < 0)) __PYX_ERR(22, 78, __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_BinnedProfile1D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile1D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 78, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init4", __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_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 78, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_8__init4(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile1D__init4", 1);

  /* "include/generated/BinnedProfile1D.pyx":79
 * 
 *     def __init4(self, BinnedProfile1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 79, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":80
 *     def __init4(self, BinnedProfile1D other):
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 80, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 80, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":79
 * 
 *     def __init4(self, BinnedProfile1D other):
 *         if other._config == "d":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 81, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":82
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[string]*> other.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 82, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 82, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":81
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 *         elif other._config == "i":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 83, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":84
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[string]*> other.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 84, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 84, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":83
 *         elif other._config == "i":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[int]*> other.binned_i_ptr().newclone())
 *         elif other._config == "s":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":85
 *         elif other._config == "s":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[string]*> other.binned_s_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Binning); if (unlikely(!__pyx_t_11)) __PYX_ERR(22, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_11))) {
    __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
    if (likely(__pyx_t_12)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_11, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_other->_binning};
    __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_t_11 = NULL;
  __pyx_t_13 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_11)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
      __pyx_t_13 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 */

  /* 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_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._BinnedProfile1D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedProfile1D.pyx":88
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(22, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 88, __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/generated/BinnedProfile1D.pyx":87
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedProfile1D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedProfile1D.pyx":91
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(22, 91, __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(22, 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_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(22, 91, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(22, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(22, 91, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(22, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(22, 91, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(22, 91, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 91, __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/BinnedProfile1D.pyx":90
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedProfile1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_14_set_config, "BinnedProfile1D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<int>  __pyx_t_12;
  std::vector<std::string>  __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  unsigned int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedProfile1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(22, 94, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":95
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":94
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(22, 96, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":97
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(22, 97, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(22, 97, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":96
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(22, 98, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":99
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":98
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":101
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedProfile1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 103, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile1D<double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 103, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 103, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_d, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 103, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile1D.pyx":104
 *           try:
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile1D[double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 104, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(22, 104, __pyx_L9_error)

          /* "include/generated/BinnedProfile1D.pyx":103
 *           edges = None
 *           try:
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile1D.pyx":106
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile1D[double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "d"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 106, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedProfile1D<double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 106, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 106, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile1D.pyx":105
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile1D[double]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 105, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 105, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile1D.pyx":108
 *               (<c.BinnedProfile1D[double]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "d"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_d);
        __Pyx_GIVEREF(__pyx_n_s_d);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_d;

        /* "include/generated/BinnedProfile1D.pyx":102
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile1D.pyx":109
 *             ])
 *             self._config = "d"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedProfile1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedProfile1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 111, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile1D<int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 111, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 111, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 111, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile1D.pyx":112
 *           try:
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile1D[int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 112, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(22, 112, __pyx_L16_error)

          /* "include/generated/BinnedProfile1D.pyx":111
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile1D.pyx":114
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile1D[int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "i"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 114, __pyx_L16_error)
        try {
          __pyx_t_12 = ((YODA::BinnedProfile1D<int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 114, __pyx_L16_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 114, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile1D.pyx":113
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile1D[int]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 113, __pyx_L16_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 113, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile1D.pyx":116
 *               (<c.BinnedProfile1D[int]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "i"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_i);
        __Pyx_GIVEREF(__pyx_n_s_i);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_i;

        /* "include/generated/BinnedProfile1D.pyx":110
 *             self._config = "d"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[int]*> self.ptr())._config()) != "i":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile1D.pyx":117
 *             ])
 *             self._config = "i"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedProfile1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 119, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile1D<std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 119, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 119, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_s, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 119, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile1D.pyx":120
 *           try:
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile1D[string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 120, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(22, 120, __pyx_L23_error)

          /* "include/generated/BinnedProfile1D.pyx":119
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile1D.pyx":122
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile1D[string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "s"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(22, 122, __pyx_L23_error)
        try {
          __pyx_t_13 = ((YODA::BinnedProfile1D<std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(22, 122, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 122, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile1D.pyx":121
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile1D[string]*> self.ptr()).xEdges(False),
 *             ])
 */
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(22, 121, __pyx_L23_error);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 121, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile1D.pyx":124
 *               (<c.BinnedProfile1D[string]*> self.ptr()).xEdges(False),
 *             ])
 *             self._config = "s"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_s);
        __Pyx_GIVEREF(__pyx_n_s_s);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_s;

        /* "include/generated/BinnedProfile1D.pyx":118
 *             self._config = "i"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile1D[string]*> self.ptr())._config()) != "s":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile1D.pyx":125
 *             ])
 *             self._config = "s"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedProfile1D.pyx":126
 *             self._config = "s"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(22, 126, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(22, 127, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_14 = NULL;
  __pyx_t_15 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_14)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_14);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_15 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(22, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L31_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":128
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_14 = NULL;
    __pyx_t_15 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_14)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_15 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 0+__pyx_t_15);
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(22, 128, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":127
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_14);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile1D.
 *         Clone this BinnedProfile1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_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_15BinnedProfile1D_16clone, "BinnedProfile1D.clone(self)\n() -> BinnedProfile1D.\n        Clone this BinnedProfile1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_16clone};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D_16clone(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_16clone(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedProfile1D.pyx":133
 *         """() -> BinnedProfile1D.
 *         Clone this BinnedProfile1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":134
 *         Clone this BinnedProfile1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 134, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":135
 *         rtn = None
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 135, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 135, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), ((YODA::BinnedProfile1D<double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":134
 *         Clone this BinnedProfile1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":137
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 137, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 137, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), ((YODA::BinnedProfile1D<int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":136
 *         if self._config == "d":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[double]*> self.binned_d_ptr().newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":139
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 139, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), ((YODA::BinnedProfile1D<std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":138
 *         elif self._config == "i":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[int]*> self.binned_i_ptr().newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":141
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 141, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":140
 *         elif self._config == "s":
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, <c.BinnedProfile1D[string]*> self.binned_s_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedProfile1D.pyx":143
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedProfile1D.pyx":144
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile1D.
 *         Clone this BinnedProfile1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.clone", __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/generated/BinnedProfile1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex, "BinnedProfile1D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedProfile1D<double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedProfile1D<int>  *__pyx_t_9;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedProfile1D.pyx":149
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(22, 149, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 1);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 149, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 149, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":151
 *         assert(len(indices) == 1) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 151, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(22, 151, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(22, 151, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(22, 152, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile1D.pyx":153
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 153, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 153, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":152
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(22, 154, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile1D.pyx":155
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 155, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 155, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":154
 *         if self._config == "d":
 *           return self.binned_d_ptr()._local2global(localIndices)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(22, 156, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile1D.pyx":157
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 157, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 157, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":156
 *         if self._config == "i":
 *           return self.binned_i_ptr()._local2global(localIndices)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":158
 *         if self._config == "s":
 *           return self.binned_s_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 158, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */

  /* 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.BinnedProfile1D.localToGlobalIndex", __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/generated/BinnedProfile1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_20_global_set, "BinnedProfile1D._global_set(self, size_t idx, Dbn2D cont)\nint, Dbn2D -> void.\n        Set a Dbn2D at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 161, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 161, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(22, 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, "_global_set") < 0)) __PYX_ERR(22, 161, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 161, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn2D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 161, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn2D, 1, "cont", 0))) __PYX_ERR(22, 161, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedProfile1D.pyx":164
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 164, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":165
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 165, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 165, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 165, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":164
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 166, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":167
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 167, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 167, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 167, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":166
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 168, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":169
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 169, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 169, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 169, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":168
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(idx, cont.d2ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":170
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(idx, cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 170, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */

  /* 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.BinnedProfile1D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_22_local_set, "BinnedProfile1D._local_set(self, indices, Dbn2D cont)\nvector[int], Dbn2D -> void.\n        Set a Dbn2D at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 174, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 174, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(22, 174, __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, "_local_set") < 0)) __PYX_ERR(22, 174, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn2D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn2D, 1, "cont", 0))) __PYX_ERR(22, 174, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Dbn2D *__pyx_t_7;
  YODA::BinnedProfile1D<int>  *__pyx_t_8;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedProfile1D.pyx":177
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 177, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":178
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 178, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 178, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 178, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 178, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":177
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 179, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":180
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 180, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 180, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 180, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":179
 *         if self._config == "d":
 *           return self.binned_d_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 181, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":182
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 182, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(22, 182, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 182, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":181
 *         if self._config == "i":
 *           return self.binned_i_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":183
 *         if self._config == "s":
 *           return self.binned_s_ptr().set(self.localToGlobalIndex(*indices), cont.d2ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 183, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */

  /* 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.BinnedProfile1D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_24set, "BinnedProfile1D.set(self, *args)\nSet bin with Dbn2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_24set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_24set(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_24set(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedProfile1D.pyx":188
 *     def set(self, *args):
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(22, 188, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 188, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 188, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":189
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile1D.pyx":190
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 190, __pyx_L1_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/generated/BinnedProfile1D.pyx":189
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":192
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 192, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedProfile1D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_26reset, "BinnedProfile1D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_26reset};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D_26reset(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_26reset(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_4;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedProfile1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 196, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":197
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 197, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 197, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":196
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 198, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":199
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 199, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 199, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":198
 *         if self._config == "d":
 *           return self.binned_d_ptr().reset()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 200, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":201
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 201, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 201, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":200
 *         if self._config == "i":
 *           return self.binned_i_ptr().reset()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":202
 *         if self._config == "s":
 *           return self.binned_s_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 202, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_28numBins, "BinnedProfile1D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedProfile.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 206, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 206, __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, "numBins") < 0)) __PYX_ERR(22, 206, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(22, 206, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_28numBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedProfile1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 209, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":210
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 210, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 210, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 210, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 210, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":209
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":212
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 212, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 212, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 212, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 212, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":211
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 213, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":214
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 214, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 214, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 214, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 214, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":213
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":215
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 215, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */

  /* 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.BinnedProfile1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_30isMasked, "BinnedProfile1D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 218, __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, "isMasked") < 0)) __PYX_ERR(22, 218, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 218, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedProfile1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":221
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 221, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 221, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 221, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":220
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":223
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 223, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 223, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 223, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":222
 *         if self._config == "d":
 *           return self.binned_d_ptr().isMasked(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 224, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":225
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 225, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 225, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 225, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":224
 *         if self._config == "i":
 *           return self.binned_i_ptr().isMasked(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":226
 *         if self._config == "s":
 *           return self.binned_s_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 226, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_32isVisible, "BinnedProfile1D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "isVisible") < 0)) __PYX_ERR(22, 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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 229, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedProfile1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 231, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":232
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 232, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 232, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 232, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":231
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 233, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":234
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 234, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 234, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 234, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":233
 *         if self._config == "d":
 *           return self.binned_d_ptr().isVisible(index)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 235, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":236
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 236, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 236, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 236, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":235
 *         if self._config == "i":
 *           return self.binned_i_ptr().isVisible(index)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":237
 *         if self._config == "s":
 *           return self.binned_s_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 237, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_34binDim, "BinnedProfile1D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_34binDim(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedProfile1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 242, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":243
 *         """Return binning dimension."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 243, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 243, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":242
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 244, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":245
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 245, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 245, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":244
 *         if self._config == "d":
 *           return self.binned_d_ptr().binDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 246, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":247
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 247, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 247, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":246
 *         if self._config == "i":
 *           return self.binned_i_ptr().binDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":248
 *         if self._config == "s":
 *           return self.binned_s_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 248, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_15BinnedProfile1D_36__len__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedProfile1D.pyx":252
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(22, 252, __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(22, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":251
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedProfile1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_38bins, "BinnedProfile1D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_38bins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 254, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 254, __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, "bins") < 0)) __PYX_ERR(22, 254, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(22, 254, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_38bins(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_38bins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedProfile1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(22, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 256, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(22, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 256, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(22, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(22, 256, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(22, 257, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(22, 257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedProfile1D.pyx":258
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(22, 258, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(22, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedProfile1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedProfile1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(22, 256, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":257
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedProfile1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(22, 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/generated/BinnedProfile1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.bins", __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/generated/BinnedProfile1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_40_bin, "BinnedProfile1D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 260, __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(22, 260, __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(22, 260, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 260, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_40_bin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedProfile1D<double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Dbn2D> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedProfile1D.pyx":262
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn2D)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":263
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin1D(Dbn2D)
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(22, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedProfile1D.pyx":264
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn2D)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin1D(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedProfile1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn2D)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(22, 265, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile1D.pyx":266
 *         b = Bin1D(Dbn2D)
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 266, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 266, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile1D.pyx":267
 *         if self._config == "d":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 267, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(22, 267, __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/generated/BinnedProfile1D.pyx":265
 *         st = self.isMasked(i)
 *         b = Bin1D(Dbn2D)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(22, 268, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile1D.pyx":269
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 269, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 269, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile1D.pyx":270
 *         elif self._config == "i":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 270, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 270, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 270, __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/generated/BinnedProfile1D.pyx":268
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_d_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_d_ptr()._global2local(i), st)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(22, 271, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile1D.pyx":272
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 272, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 272, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile1D.pyx":273
 *         elif self._config == "s":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 273, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(22, 273, __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/generated/BinnedProfile1D.pyx":271
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_i_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_i_ptr()._global2local(i), st)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":274
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_s_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 274, __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/generated/BinnedProfile1D.pyx":275
 *           rtn.setIndices(i, self.binned_s_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_42bin, "BinnedProfile1D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_42bin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_42bin(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_42bin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedProfile1D.pyx":279
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(22, 279, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 279, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 279, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":280
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(22, 280, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile1D.pyx":281
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(22, 281, __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/generated/BinnedProfile1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedProfile1D.bin", __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;
}

/* "include/generated/BinnedProfile1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_44binAt, "BinnedProfile1D.binAt(self, x)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 283, __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(22, 283, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 283, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_44binAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedProfile1D.pyx":285
 *     def binAt(self, x):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(22, 285, __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
  if (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;
    }
  }
  #endif
  {
    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(22, 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/generated/BinnedProfile1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */

  /* 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.BinnedProfile1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_46maskBin, "BinnedProfile1D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 287, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 287, __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, "maskBin") < 0)) __PYX_ERR(22, 287, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 287, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedProfile1D<double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedProfile1D<int>  *__pyx_t_8;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedProfile1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":290
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 290, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":289
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":292
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 292, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 292, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 292, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 292, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":291
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":294
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 294, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 294, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 294, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 294, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":293
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskBin(idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":296
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 296, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 296, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 296, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 296, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":295
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskBin(idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedProfile1D.maskBin", __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;
}

/* "include/generated/BinnedProfile1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_48maskBins, "BinnedProfile1D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 298, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 298, __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, "maskBins") < 0)) __PYX_ERR(22, 298, __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_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 298, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedProfile1D.pyx":300
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(22, 300, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 300, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 300, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 301, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(22, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 301, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(22, 301, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(22, 301, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":302
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":301
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maskBins", __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;
}

/* "include/generated/BinnedProfile1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_50maskBinAt, "BinnedProfile1D.maskBinAt(self, x, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 304, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "maskBinAt") < 0)) __PYX_ERR(22, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 304, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_x, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedProfile1D.pyx":306
 *     def maskBinAt(self, x, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(22, 306, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(22, 306, __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/generated/BinnedProfile1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */

  /* 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.BinnedProfile1D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_52maskSlice, "BinnedProfile1D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 308, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 308, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(22, 308, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "maskSlice") < 0)) __PYX_ERR(22, 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);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(22, 308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedProfile1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 310, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":311
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 311, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 311, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 311, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 311, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(22, 311, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":310
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 312, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":313
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 313, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 313, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 313, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 313, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 313, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":312
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":315
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 315, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 315, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 315, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 315, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(22, 315, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":314
 *         elif self._config == "i":
 *           return self.binned_i_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedProfile1D.pyx":318
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 318, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(22, 318, __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(22, 318, __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(22, 318, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedProfile1D.pyx":319
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 319, __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/generated/BinnedProfile1D.pyx":317
 *           return self.binned_s_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_56mkEstimate, "BinnedProfile1D.mkEstimate(self, str path='', str source='', divbyvol=True)\nNone -> Estimate.\n\n        Convert this BinnedProfile1D to an BinnedEstimate1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_57mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_56mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  PyObject *__pyx_v_divbyvol = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,&__pyx_n_s_divbyvol,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 321, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 321, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_divbyvol);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 321, __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, "mkEstimate") < 0)) __PYX_ERR(22, 321, __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_path = ((PyObject*)values[0]);
    __pyx_v_source = ((PyObject*)values[1]);
    __pyx_v_divbyvol = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 3, __pyx_nargs); __PYX_ERR(22, 321, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(22, 321, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(22, 321, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_56mkEstimate(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_path, __pyx_v_source, __pyx_v_divbyvol);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkEstimate", 1);

  /* "include/generated/BinnedProfile1D.pyx":325
 * 
 *         Convert this BinnedProfile1D to an BinnedEstimate1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":326
 *         Convert this BinnedProfile1D to an BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":327
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 327, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 327, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 327, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 327, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile1D.pyx":328
 *         if self._config == "d":
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile1D.pyx":326
 *         Convert this BinnedProfile1D to an BinnedEstimate1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":329
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 329, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":330
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 330, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 330, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 330, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 330, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_7, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedProfile1D.pyx":331
 *         elif self._config == "i":
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile1D.pyx":329
 *           tmp = c.BP_est_d(self.binned_d_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":332
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":333
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 333, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 333, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 333, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 333, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile1D.pyx":334
 *         elif self._config == "s":
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile1D.pyx":332
 *           tmp = c.BP_est_i(self.binned_i_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":335
 *           tmp = c.BP_est_s(self.binned_s_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_11 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/BinnedProfile1D.pyx":336
 *           rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkHisto(self, str path = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.mkEstimate", __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/generated/BinnedProfile1D.pyx":338
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto1D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_59mkHisto(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_58mkHisto, "BinnedProfile1D.mkHisto(self, str path='')\nNone -> BinnedHisto1D.\n\n        Convert this BinnedProfile1D to a BinnedHisto1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_59mkHisto = {"mkHisto", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_59mkHisto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_58mkHisto};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_59mkHisto(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkHisto (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 338, __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, "mkHisto") < 0)) __PYX_ERR(22, 338, __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_path = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkHisto", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.mkHisto", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(22, 338, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_58mkHisto(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_58mkHisto(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkHisto", 1);

  /* "include/generated/BinnedProfile1D.pyx":342
 * 
 *         Convert this BinnedProfile1D to a BinnedHisto1D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":343
 *         Convert this BinnedProfile1D to a BinnedHisto1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":344
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 344, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 344, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_2, __pyx_t_3);

    /* "include/generated/BinnedProfile1D.pyx":345
 *         if self._config == "d":
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":343
 *         Convert this BinnedProfile1D to a BinnedHisto1D."""
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":346
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 346, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":347
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 347, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 347, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_5, __pyx_t_3);

    /* "include/generated/BinnedProfile1D.pyx":348
 *         elif self._config == "i":
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":346
 *           tmp = c.BP_hist_d(self.binned_d_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":349
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":350
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 350, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 350, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_6, __pyx_t_3);

    /* "include/generated/BinnedProfile1D.pyx":351
 *         elif self._config == "s":
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile1D.pyx":349
 *           tmp = c.BP_hist_i(self.binned_i_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":352
 *           tmp = c.BP_hist_s(self.binned_s_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_9 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_9 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile1D.pyx":353
 *           rtn = cutil.new_owned_cls(BinnedHisto1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":338
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto1D.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.mkHisto", __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/generated/BinnedProfile1D.pyx":355
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_61mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_60mkScatter, "BinnedProfile1D.mkScatter(self, path='', binwidthdiv=True, useFocus=False, includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter2D.\n\n        Make a new Scatter2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_61mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_61mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_60mkScatter};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_61mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_binwidthdiv = 0;
  PyObject *__pyx_v_useFocus = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_binwidthdiv,&__pyx_n_s_useFocus,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 355, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 355, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_useFocus);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 355, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 355, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 355, __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(22, 355, __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);
        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_path = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_useFocus = values[2];
    __pyx_v_includeOverflows = values[3];
    __pyx_v_includeMaskedBins = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 5, __pyx_nargs); __PYX_ERR(22, 355, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_60mkScatter(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_path, __pyx_v_binwidthdiv, __pyx_v_useFocus, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_60mkScatter(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  std::string __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  bool __pyx_t_7;
  YODA::Scatter2D __pyx_t_8;
  YODA::Scatter2D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_11;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedProfile1D.pyx":359
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":360
 *         Make a new Scatter2D."""
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 360, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 360, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedProfile1D.pyx":361
 *         if self._config == "d":
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 361, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":359
 * 
 *         Make a new Scatter2D."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":362
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 362, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":363
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 363, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 363, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 363, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 363, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 363, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 363, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 363, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedProfile1D.pyx":364
 *         elif self._config == "i":
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 364, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":362
 *           s = <c.Scatter2D> self.binned_d_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":365
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 365, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":366
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 366, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 366, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 366, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 366, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 366, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 366, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 366, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter2D)__pyx_t_8);

    /* "include/generated/BinnedProfile1D.pyx":367
 *         elif self._config == "s":
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedProfile1D self, BinnedProfile1D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 367, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":365
 *           s = <c.Scatter2D> self.binned_i_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter2D> self.binned_s_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":355
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

  /* 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.BinnedProfile1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":369
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedProfile1D self, BinnedProfile1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile1D -> BinnedEstimate1D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_63divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_62divideBy, "BinnedProfile1D.divideBy(self, BinnedProfile1D other, efficiency=False)\nBinnedProfile1D -> BinnedEstimate1D\n\n        Divide this BinnedProfile1D by other,\n        returning a BinnedEstimate1D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_63divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_63divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_62divideBy};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_63divideBy(PyObject *__pyx_v_self, 
#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_BinnedProfile1D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 369, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "divideBy") < 0)) __PYX_ERR(22, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.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_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 369, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_62divideBy(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_62divideBy(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedProfile1D.pyx":375
 *         returning a BinnedEstimate1D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 375, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 375, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 375, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":376
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "d":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":377
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 377, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":378
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 378, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":379
 *         if efficiency:
 *           if self._config == "d":
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 379, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 379, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedProfile1D.pyx":380
 *           if self._config == "d":
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":378
 *         rtn = None
 *         if efficiency:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile1D.pyx":381
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 381, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":382
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 382, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 382, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedProfile1D.pyx":383
 *           elif self._config == "i":
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BP_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 383, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":381
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile1D.pyx":384
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 384, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":385
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BP_eff_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 385, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 385, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedProfile1D.pyx":386
 *           elif self._config == "s":
 *             tmp = c.BP_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "d":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":384
 *             tmp = c.BP_eff_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedProfile1D.pyx":377
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "d":
 *             tmp = c.BP_eff_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":388
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 388, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":389
 *         else:
 *           if self._config == "d":
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 389, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 389, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedProfile1D.pyx":390
 *           if self._config == "d":
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "i":
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":388
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         else:
 *           if self._config == "d":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile1D.pyx":391
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 391, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":392
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 392, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 392, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedProfile1D.pyx":393
 *           elif self._config == "i":
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "s":
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":391
 *             tmp = c.BP_div_d(self.binned_d_ptr(), other.binned_d_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "i":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile1D.pyx":394
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 394, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile1D.pyx":395
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 395, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 395, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedProfile1D.pyx":396
 *           elif self._config == "s":
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 396, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":394
 *             tmp = c.BP_div_i(self.binned_i_ptr(), other.binned_i_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *           elif self._config == "s":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":397
 *             tmp = c.BP_div_s(self.binned_s_ptr(), other.binned_s_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = NULL;
  __pyx_t_11 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_11 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11);
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile1D.pyx":398
 *             rtn = cutil.new_owned_cls(BinnedEstimate1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedProfile1D self, BinnedProfile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":369
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedProfile1D self, BinnedProfile1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile1D -> BinnedEstimate1D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.divideBy", __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/generated/BinnedProfile1D.pyx":400
 *         return rtn
 * 
 *     def __div__(BinnedProfile1D self, BinnedProfile1D 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_15BinnedProfile1D_65__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_65__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 400, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_64__div__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_64__div__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedProfile1D.pyx":401
 * 
 *     def __div__(BinnedProfile1D self, BinnedProfile1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedProfile1D self, BinnedProfile1D 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(22, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(22, 401, __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/generated/BinnedProfile1D.pyx":400
 *         return rtn
 * 
 *     def __div__(BinnedProfile1D self, BinnedProfile1D 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.BinnedProfile1D.__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/generated/BinnedProfile1D.pyx":403
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_67__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_67__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 403, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_66__truediv__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_66__truediv__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedProfile1D.pyx":404
 * 
 *     def __truediv__(BinnedProfile1D self, BinnedProfile1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(22, 404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(22, 404, __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/generated/BinnedProfile1D.pyx":403
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedProfile1D self, BinnedProfile1D 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.BinnedProfile1D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":406
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_69_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_15BinnedProfile1D_68_mknp, "BinnedProfile1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_69_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_69_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_68_mknp};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_69_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 406, __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(22, 406, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 406, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_68_mknp(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_68_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedProfile1D.pyx":407
 * 
 *     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/generated/BinnedProfile1D.pyx":408
 *     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(22, 408, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile1D.pyx":409
 *         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(22, 409, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(22, 409, __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/generated/BinnedProfile1D.pyx":407
 * 
 *     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/generated/BinnedProfile1D.pyx":410
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedProfile1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(22, 410, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedProfile1D.pyx":411
 *             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/generated/BinnedProfile1D.pyx":407
 * 
 *     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/generated/BinnedProfile1D.pyx":406
 *         return self.divideBy(other)
 * 
 *     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.BinnedProfile1D._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/generated/BinnedProfile1D.pyx":414
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_71lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_70lengthContent, "BinnedProfile1D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_71lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_71lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_70lengthContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_71lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "lengthContent") < 0)) __PYX_ERR(22, 414, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 414, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_70lengthContent(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_70lengthContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedProfile1D.pyx":416
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":417
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 417, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 417, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 417, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":416
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":418
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 418, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":419
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 419, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 419, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 419, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":418
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":420
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":421
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 421, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 421, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 421, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":420
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":422
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 422, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":414
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":424
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_73serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_72serializeContent, "BinnedProfile1D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_73serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_73serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_72serializeContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_73serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 424, __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, "serializeContent") < 0)) __PYX_ERR(22, 424, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 424, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_72serializeContent(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_72serializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedProfile1D.pyx":426
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":427
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 427, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 427, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":426
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":428
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":429
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 429, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 429, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 429, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":428
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeContent(fixed_length)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":430
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":431
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 431, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 431, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 431, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":430
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeContent(fixed_length)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":432
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 432, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":424
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":434
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_75deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_74deserializeContent, "BinnedProfile1D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_75deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_75deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_74deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_75deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 434, __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, "deserializeContent") < 0)) __PYX_ERR(22, 434, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 434, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_74deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_74deserializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedProfile1D<double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedProfile1D<int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedProfile1D.pyx":437
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 437, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 437, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(22, 437, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 437, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(22, 437, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(22, 437, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(22, 437, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile1D.pyx":438
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 438, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":439
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 439, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 439, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 439, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":438
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":440
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 440, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":441
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 441, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 441, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 441, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":440
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeContent(data)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":442
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 442, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":443
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 443, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 443, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 443, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":442
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeContent(data)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":444
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 444, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":434
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":446
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_77lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_76lengthMeta, "BinnedProfile1D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_77lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_77lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_76lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_77lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 446, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 446, __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, "lengthMeta") < 0)) __PYX_ERR(22, 446, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(22, 446, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_76lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_76lengthMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedProfile1D.pyx":448
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 448, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":449
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 449, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 449, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 449, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 449, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":448
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":450
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 450, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":451
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 451, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 451, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 451, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 451, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":450
 *         if self._config == "d":
 *           return self.binned_d_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":452
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 452, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":453
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 453, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 453, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 453, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 453, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":452
 *         if self._config == "i":
 *           return self.binned_i_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":454
 *         if self._config == "s":
 *           return self.binned_s_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 454, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":446
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":456
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_79serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_78serializeMeta, "BinnedProfile1D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_79serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_79serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_78serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_79serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 456, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 456, __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, "serializeMeta") < 0)) __PYX_ERR(22, 456, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(22, 456, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_78serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_78serializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedProfile1D.pyx":458
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 458, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":459
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 459, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 459, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 459, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 459, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":458
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":460
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 460, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":461
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 461, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 461, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 461, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 461, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":460
 *         if self._config == "d":
 *           return self.binned_d_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":462
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 462, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":463
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 463, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 463, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 463, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 463, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":462
 *         if self._config == "i":
 *           return self.binned_i_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":464
 *         if self._config == "s":
 *           return self.binned_s_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 464, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":456
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":466
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_81deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_80deserializeMeta, "BinnedProfile1D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_81deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_81deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_80deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_81deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 466, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 466, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 466, __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, "deserializeMeta") < 0)) __PYX_ERR(22, 466, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(22, 466, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_80deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_80deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedProfile1D<double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedProfile1D<int>  *__pyx_t_11;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedProfile1D.pyx":469
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 469, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 469, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(22, 469, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 469, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(22, 469, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(22, 469, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 469, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(22, 469, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(22, 469, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile1D.pyx":470
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 470, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":471
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 471, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 471, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 471, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 471, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":470
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":472
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 472, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":473
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 473, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 473, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 473, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 473, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":472
 *         if self._config == "d":
 *           return self.binned_d_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":474
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(22, 474, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile1D.pyx":475
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 475, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 475, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 475, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 475, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":474
 *         if self._config == "i":
 *           return self.binned_i_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":476
 *         if self._config == "s":
 *           return self.binned_s_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 476, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":466
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":479
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_83fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_82fill, "BinnedProfile1D.fill(self, x, y, weight=1.0, fraction=1.0)\n\n        ([coords], float weight=1.0, float fraction=1.0) -> int\n\n        Fills the distribution with the given weight at given [coords].\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_83fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_83fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_82fill};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_83fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 479, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 479, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(22, 479, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 479, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 479, __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(22, 479, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(22, 479, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_82fill(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_82fill(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_9;
  int __pyx_t_10;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_11;
  std::string __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/generated/BinnedProfile1D.pyx":485
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 485, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":486
 *         """
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 486, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 486, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 486, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 486, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 486, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_2->fill(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 486, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(22, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":485
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":487
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 487, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":488
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, y, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 488, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 488, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 488, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 488, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 488, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->fill(__pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 488, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(22, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":487
 *         if self._config == "d":
 *           return self.binned_d_ptr().fill(x, y, weight, fraction)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":489
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 489, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":490
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 490, __pyx_L1_error)
    __pyx_t_12 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 490, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 490, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 490, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 490, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_11->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_12), __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 490, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(22, 490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":489
 *         if self._config == "i":
 *           return self.binned_i_ptr().fill(x, y, weight, fraction)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":491
 *         if self._config == "s":
 *           return self.binned_s_ptr().fill(x, y, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 491, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":479
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

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

/* "include/generated/BinnedProfile1D.pyx":494
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_84indexAt, "BinnedProfile1D.indexAt(self, x)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_85indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_84indexAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 494, __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, "indexAt") < 0)) __PYX_ERR(22, 494, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 494, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_84indexAt(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  std::string __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedProfile1D.pyx":495
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 495, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":496
 *     def indexAt(self, x):
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 496, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 496, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->indexAt(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 496, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":495
 * 
 *     def indexAt(self, x):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":497
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 497, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":498
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 498, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 498, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->indexAt(__pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 498, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":497
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":499
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 499, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":500
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 500, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 500, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 500, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":499
 *         if self._config == "i":
 *           return self.binned_i_ptr().indexAt(x)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":501
 *         if self._config == "s":
 *           return self.binned_s_ptr().indexAt(x)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def fillDim(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 501, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":494
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */

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

/* "include/generated/BinnedProfile1D.pyx":503
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_87fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_86fillDim, "BinnedProfile1D.fillDim(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_87fillDim = {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_87fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_86fillDim};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_87fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("fillDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fillDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_86fillDim(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_86fillDim(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillDim", 1);

  /* "include/generated/BinnedProfile1D.pyx":504
 * 
 *     def fillDim(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 504, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":505
 *     def fillDim(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 505, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 505, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":504
 * 
 *     def fillDim(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":506
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 506, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":507
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 507, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 507, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":506
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":508
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 508, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":509
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 509, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 509, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":508
 *         if self._config == "i":
 *           return self.binned_i_ptr().fillDim()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":510
 *         if self._config == "s":
 *           return self.binned_s_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 510, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":503
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */

  /* 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.BinnedProfile1D.fillDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":512
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_89normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_88normalize, "BinnedProfile1D.normalize(self, normto=1.0, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_89normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_89normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_88normalize};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_89normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 512, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "normalize") < 0)) __PYX_ERR(22, 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_normto = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(22, 512, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_88normalize(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_88normalize(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 1);

  /* "include/generated/BinnedProfile1D.pyx":513
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 513, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":514
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 514, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 514, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 514, __pyx_L1_error)
    try {
      __pyx_t_2->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 514, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":513
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":515
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 515, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":516
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 516, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 516, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 516, __pyx_L1_error)
    try {
      __pyx_t_6->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 516, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":515
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":517
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 517, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":518
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 518, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 518, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 518, __pyx_L1_error)
    try {
      __pyx_t_7->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 518, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":517
 *         if self._config == "i":
 *           return self.binned_i_ptr().normalize(normto,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":519
 *         if self._config == "s":
 *           return self.binned_s_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, factor):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 519, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":512
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":521
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_91scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_90scaleW, "BinnedProfile1D.scaleW(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_91scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_91scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_90scaleW};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_91scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 521, __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(22, 521, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 521, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_90scaleW(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_90scaleW(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 1);

  /* "include/generated/BinnedProfile1D.pyx":522
 * 
 *     def scaleW(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 522, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":523
 *     def scaleW(self, factor):
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 523, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 523, __pyx_L1_error)
    try {
      __pyx_t_2->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 523, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":522
 * 
 *     def scaleW(self, factor):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":524
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":525
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 525, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 525, __pyx_L1_error)
    try {
      __pyx_t_5->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 525, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":524
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":526
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 526, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":527
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 527, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 527, __pyx_L1_error)
    try {
      __pyx_t_6->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 527, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":526
 *         if self._config == "i":
 *           return self.binned_i_ptr().scaleW(factor)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":528
 *         if self._config == "s":
 *           return self.binned_s_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 528, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":521
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */

  /* 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.BinnedProfile1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":530
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_93sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_92sumW, "BinnedProfile1D.sumW(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_93sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_93sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_92sumW};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_93sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 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, "sumW") < 0)) __PYX_ERR(22, 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_includeOverflows = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 530, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_92sumW(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_92sumW(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 1);

  /* "include/generated/BinnedProfile1D.pyx":531
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 531, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":532
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 532, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 532, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 532, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":531
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":533
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 533, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":534
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 534, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 534, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 534, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":533
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":535
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 535, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":536
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 536, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 536, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 536, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":535
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":537
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 537, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":530
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":539
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_95sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_94sumW2, "BinnedProfile1D.sumW2(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_95sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_95sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_94sumW2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_95sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 539, __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(22, 539, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 539, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_94sumW2(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_94sumW2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 1);

  /* "include/generated/BinnedProfile1D.pyx":540
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 540, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":541
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 541, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 541, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 541, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":540
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":542
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 542, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":543
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 543, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 543, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 543, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":542
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":544
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 544, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":545
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 545, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 545, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 545, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":544
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumW2(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":546
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 546, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":539
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":548
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_97sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_96sumWA, "BinnedProfile1D.sumWA(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_97sumWA = {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_97sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_96sumWA};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_97sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 548, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 548, __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, "sumWA") < 0)) __PYX_ERR(22, 548, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 548, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_96sumWA(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_96sumWA(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA", 1);

  /* "include/generated/BinnedProfile1D.pyx":549
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 549, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":550
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 550, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 550, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 550, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 550, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":549
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":551
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 551, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":552
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 552, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 552, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 552, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 552, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":551
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":553
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 553, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":554
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 554, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 554, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 554, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 554, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":553
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":555
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 555, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":548
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */

  /* 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.BinnedProfile1D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":557
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_99sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_98sumWA2, "BinnedProfile1D.sumWA2(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_99sumWA2 = {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_99sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_98sumWA2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_99sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 557, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 557, __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, "sumWA2") < 0)) __PYX_ERR(22, 557, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA2", 0, 1, 2, __pyx_nargs); __PYX_ERR(22, 557, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_98sumWA2(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_98sumWA2(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA2", 1);

  /* "include/generated/BinnedProfile1D.pyx":558
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 558, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":559
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 559, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 559, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 559, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 559, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":558
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":560
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 560, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":561
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 561, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 561, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 561, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 561, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":560
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":562
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 562, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":563
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 563, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 563, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 563, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 563, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":562
 *         if self._config == "i":
 *           return self.binned_i_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":564
 *         if self._config == "s":
 *           return self.binned_s_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 564, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":557
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */

  /* 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.BinnedProfile1D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":566
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_101numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_100numEntries, "BinnedProfile1D.numEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_101numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_101numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_100numEntries};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_101numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 566, __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(22, 566, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 566, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_100numEntries(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_100numEntries(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/generated/BinnedProfile1D.pyx":567
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 567, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":568
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 568, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 568, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 568, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":567
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":569
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 569, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":570
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 570, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 570, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 570, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":569
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":571
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 571, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":572
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 572, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 572, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 572, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":571
 *         if self._config == "i":
 *           return self.binned_i_ptr().numEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":573
 *         if self._config == "s":
 *           return self.binned_s_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 573, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":566
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":575
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_103effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_102effNumEntries, "BinnedProfile1D.effNumEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_103effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_103effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_102effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_103effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 575, __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(22, 575, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 575, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_102effNumEntries(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_102effNumEntries(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 1);

  /* "include/generated/BinnedProfile1D.pyx":576
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":577
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 577, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 577, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":576
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":578
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":579
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 579, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 579, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 579, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":578
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":580
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":581
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 581, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 581, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 581, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":580
 *         if self._config == "i":
 *           return self.binned_i_ptr().effNumEntries(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":582
 *         if self._config == "s":
 *           return self.binned_s_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integral(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 582, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":575
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":584
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_105integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_104integral, "BinnedProfile1D.integral(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_105integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_105integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_104integral};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_105integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 584, __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(22, 584, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 584, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_104integral(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_104integral(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 1);

  /* "include/generated/BinnedProfile1D.pyx":585
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 585, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":586
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 586, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 586, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 586, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 586, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":585
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":587
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 587, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":588
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 588, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 588, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 588, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":587
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":589
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 589, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":590
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 590, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 590, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 590, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 590, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":589
 *         if self._config == "i":
 *           return self.binned_i_ptr().integral(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":591
 *         if self._config == "s":
 *           return self.binned_s_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integralError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 591, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":584
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":593
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_107integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_106integralError, "BinnedProfile1D.integralError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_107integralError = {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_107integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_106integralError};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_107integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 593, __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, "integralError") < 0)) __PYX_ERR(22, 593, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralError", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 593, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.integralError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_106integralError(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_106integralError(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralError", 1);

  /* "include/generated/BinnedProfile1D.pyx":594
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 594, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":595
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 595, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 595, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 595, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":594
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":596
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 596, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":597
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 597, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 597, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 597, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":596
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":598
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 598, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":599
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 599, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 599, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 599, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":598
 *         if self._config == "i":
 *           return self.binned_i_ptr().integralError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":600
 *         if self._config == "s":
 *           return self.binned_s_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def dVol(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 600, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":593
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":602
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_109dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_108dVol, "BinnedProfile1D.dVol(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_109dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_109dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_108dVol};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_109dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 602, __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, "dVol") < 0)) __PYX_ERR(22, 602, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 602, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_108dVol(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_108dVol(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/BinnedProfile1D.pyx":603
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 603, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":604
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 604, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 604, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 604, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":603
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":605
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 605, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":606
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 606, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 606, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 606, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":605
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":607
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 607, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":608
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 608, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 608, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 608, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":607
 *         if self._config == "i":
 *           return self.binned_i_ptr().dVol(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":609
 *         if self._config == "s":
 *           return self.binned_s_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def density(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 609, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":602
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":611
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_111density(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_110density, "BinnedProfile1D.density(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_111density = {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_111density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_110density};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_111density(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("density (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 611, __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, "density") < 0)) __PYX_ERR(22, 611, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("density", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 611, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.density", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_110density(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_110density(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("density", 1);

  /* "include/generated/BinnedProfile1D.pyx":612
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 612, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":613
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 613, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 613, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 613, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":612
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":614
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 614, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":615
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 615, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 615, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 615, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":614
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":616
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 616, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":617
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 617, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 617, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 617, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":616
 *         if self._config == "i":
 *           return self.binned_i_ptr().density(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":618
 *         if self._config == "s":
 *           return self.binned_s_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densityError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 618, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":611
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":620
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_113densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_112densityError, "BinnedProfile1D.densityError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_113densityError = {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_113densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_112densityError};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_113densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densityError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 620, __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, "densityError") < 0)) __PYX_ERR(22, 620, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densityError", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 620, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.densityError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_112densityError(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_112densityError(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densityError", 1);

  /* "include/generated/BinnedProfile1D.pyx":621
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 621, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":622
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 622, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 622, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 622, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":621
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":623
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 623, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":624
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 624, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 624, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 624, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":623
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":625
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 625, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":626
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 626, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 626, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 626, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":625
 *         if self._config == "i":
 *           return self.binned_i_ptr().densityError(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":627
 *         if self._config == "s":
 *           return self.binned_s_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densitySum(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 627, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":620
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":629
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_115densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_114densitySum, "BinnedProfile1D.densitySum(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_115densitySum = {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_115densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_114densitySum};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_115densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densitySum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 629, __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, "densitySum") < 0)) __PYX_ERR(22, 629, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densitySum", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 629, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.densitySum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_114densitySum(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_114densitySum(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densitySum", 1);

  /* "include/generated/BinnedProfile1D.pyx":630
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 630, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":631
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 631, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 631, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 631, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":630
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":632
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 632, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":633
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 633, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 633, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 633, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":632
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":634
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 634, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":635
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 635, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 635, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 635, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":634
 *         if self._config == "i":
 *           return self.binned_i_ptr().densitySum(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":636
 *         if self._config == "s":
 *           return self.binned_s_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maxDensity(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 636, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":629
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":638
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_117maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_116maxDensity, "BinnedProfile1D.maxDensity(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_117maxDensity = {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_117maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_116maxDensity};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_117maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxDensity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 638, __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, "maxDensity") < 0)) __PYX_ERR(22, 638, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxDensity", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 638, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.maxDensity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_116maxDensity(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_116maxDensity(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxDensity", 1);

  /* "include/generated/BinnedProfile1D.pyx":639
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 639, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":640
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 640, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 640, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 640, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":639
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":641
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 641, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":642
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 642, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 642, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 642, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 642, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":641
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":643
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 643, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":644
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 644, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 644, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 644, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":643
 *         if self._config == "i":
 *           return self.binned_i_ptr().maxDensity(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":645
 *         if self._config == "s":
 *           return self.binned_s_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 645, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":638
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */

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

/* "include/generated/BinnedProfile1D.pyx":647
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_119maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_118maskedBins, "BinnedProfile1D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_119maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_119maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_118maskedBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_119maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_118maskedBins(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_118maskedBins(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedProfile1D.pyx":648
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 648, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":649
 *     def maskedBins(self):
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 649, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 649, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":648
 * 
 *     def maskedBins(self):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":650
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 650, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":651
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 651, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 651, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":650
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":652
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 652, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":653
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 653, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 653, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":652
 *         if self._config == "i":
 *           return self.binned_i_ptr().maskedBins()
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":654
 *         if self._config == "s":
 *           return self.binned_s_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 654, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":647
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */

  /* 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.BinnedProfile1D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":656
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_121numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_120numBinsX, "BinnedProfile1D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_121numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_121numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_120numBinsX};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_121numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 656, __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, "numBinsX") < 0)) __PYX_ERR(22, 656, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 656, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_120numBinsX(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_120numBinsX(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedProfile1D.pyx":658
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 658, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":659
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 659, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 659, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 659, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 659, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":658
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":660
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 660, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":661
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 661, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 661, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 661, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":660
 *         if self._config == "d":
 *           return self.binned_d_ptr().numBinsX(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":662
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 662, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":663
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 663, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 663, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 663, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 663, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":662
 *         if self._config == "i":
 *           return self.binned_i_ptr().numBinsX(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":664
 *         if self._config == "s":
 *           return self.binned_s_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 664, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":656
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":667
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_123xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_122xEdges, "BinnedProfile1D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_123xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_123xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_122xEdges};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_123xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 667, __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, "xEdges") < 0)) __PYX_ERR(22, 667, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 667, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_122xEdges(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_122xEdges(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedProfile1D.pyx":669
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 669, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":670
 *         """xEdges on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 670, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 670, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 670, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":669
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":671
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 671, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":672
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 672, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 672, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 672, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":671
 *         if self._config == "d":
 *           return self.binned_d_ptr().xEdges(includeOverflows)
 *         if self._config == "i":             # <<<<<<<<<<<<<<
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":673
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 673, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":674
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 674, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 674, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 674, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":673
 *         if self._config == "i":
 *           return self.binned_i_ptr().xEdges(includeOverflows)
 *         if self._config == "s":             # <<<<<<<<<<<<<<
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":675
 *         if self._config == "s":
 *           return self.binned_s_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 675, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":667
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":678
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_125xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_124xWidths, "BinnedProfile1D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_125xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_125xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_124xWidths};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_125xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 678, __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, "xWidths") < 0)) __PYX_ERR(22, 678, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 678, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_124xWidths(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_124xWidths(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedProfile1D.pyx":680
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 680, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":681
 *         """xWidths on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 681, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 681, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 681, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":680
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":682
 *         if self._config == "d":
 *           return self.binned_d_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 682, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":678
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":685
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_127xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_126xMin, "BinnedProfile1D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_127xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_127xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_126xMin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_127xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D_126xMin(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_126xMin(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<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("xMin", 1);

  /* "include/generated/BinnedProfile1D.pyx":687
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 687, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":688
 *         """xMin on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 688, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 688, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 688, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":687
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":689
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 689, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":685
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":692
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_129xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_128xMax, "BinnedProfile1D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_129xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_129xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_128xMax};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_129xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D_128xMax(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_128xMax(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<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("xMax", 1);

  /* "include/generated/BinnedProfile1D.pyx":694
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 694, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":695
 *         """xMax on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 695, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 695, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 695, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":694
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":696
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 696, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":692
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":699
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_131rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_130rebinXBy, "BinnedProfile1D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_131rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_131rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_130rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_131rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__104);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 699, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 699, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 699, __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, "rebinXBy") < 0)) __PYX_ERR(22, 699, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(22, 699, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_130rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_130rebinXBy(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedProfile1D.pyx":701
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 701, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":702
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 702, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(22, 702, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 702, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(22, 702, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(22, 702, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":701
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":703
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 703, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":699
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":706
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_133rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_132rebinXTo, "BinnedProfile1D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_133rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_133rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_132rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_133rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 706, __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, "rebinXTo") < 0)) __PYX_ERR(22, 706, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 706, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_132rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_132rebinXTo(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedProfile1D.pyx":708
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 708, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":709
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 709, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 709, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 709, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 709, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":708
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":710
 *         if self._config == "d":
 *           return self.binned_d_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 710, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":706
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */

  /* 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.BinnedProfile1D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":713
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_135xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_134xMean, "BinnedProfile1D.xMean(self, includeOverflows=True)\nxMean on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_135xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_135xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_134xMean};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_135xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 713, __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(22, 713, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 713, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_134xMean(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_134xMean(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 1);

  /* "include/generated/BinnedProfile1D.pyx":715
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 715, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":716
 *         """xMean on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 716, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 716, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 716, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 716, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":715
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":717
 *         if self._config == "d":
 *           return self.binned_d_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 717, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":713
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":720
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_137xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_136xVariance, "BinnedProfile1D.xVariance(self, includeOverflows=True)\nxVariance on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_137xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_137xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_136xVariance};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_137xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 720, __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(22, 720, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 720, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_136xVariance(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_136xVariance(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 1);

  /* "include/generated/BinnedProfile1D.pyx":722
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 722, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":723
 *         """xVariance on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 723, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 723, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 723, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":722
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":724
 *         if self._config == "d":
 *           return self.binned_d_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 724, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":720
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":727
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_139xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_138xStdDev, "BinnedProfile1D.xStdDev(self, includeOverflows=True)\nxStdDev on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_139xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_139xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_138xStdDev};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_139xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 727, __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(22, 727, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 727, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_138xStdDev(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_138xStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 1);

  /* "include/generated/BinnedProfile1D.pyx":729
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 729, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":730
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 730, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 730, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 730, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 730, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":729
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":731
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 731, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":727
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":734
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_141xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_140xStdErr, "BinnedProfile1D.xStdErr(self, includeOverflows=True)\nxStdErr on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_141xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_141xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_140xStdErr};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_141xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 734, __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(22, 734, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 734, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_140xStdErr(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_140xStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 1);

  /* "include/generated/BinnedProfile1D.pyx":736
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 736, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":737
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 737, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 737, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 737, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":736
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":738
 *         if self._config == "d":
 *           return self.binned_d_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 738, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":734
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":741
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_143xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_142xRMS, "BinnedProfile1D.xRMS(self, includeOverflows=True)\nxRMS on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_143xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_143xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_142xRMS};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_143xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 741, __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(22, 741, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_142xRMS(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_142xRMS(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 1);

  /* "include/generated/BinnedProfile1D.pyx":743
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 743, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":744
 *         """xRMS on x axis."""
 *         if self._config == "d":
 *           return self.binned_d_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 744, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(22, 744, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(22, 744, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":743
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":745
 *         if self._config == "d":
 *           return self.binned_d_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 745, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":741
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */

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

/* "include/generated/BinnedProfile1D.pyx":748
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_145rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile1D_144rebinX, "BinnedProfile1D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_145rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_145rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_144rebinX};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_145rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 748, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(22, 748, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(22, 748, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_144rebinX(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_144rebinX(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedProfile1D.pyx":749
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 749, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":750
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(22, 750, __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/generated/BinnedProfile1D.pyx":749
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile1D.pyx":752
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(22, 752, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 752, __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(22, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile1D.pyx":748
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":754
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_147__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_147__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 754, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_146__add__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_146__add__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  YODA::BinnedProfile1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedProfile1D.pyx":755
 * 
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":756
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":755
 * 
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":757
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 757, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 757, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 757, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":758
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":759
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 759, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":760
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 760, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 760, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile1D.pyx":761
 *         if self._config == "d":
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":759
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":762
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 762, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":763
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 763, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 763, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedProfile1D.pyx":764
 *         elif self._config == "i":
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":762
 *           tmp = c.BP_add_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":765
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 765, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":766
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 766, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 766, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedProfile1D.pyx":767
 *         elif self._config == "s":
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":765
 *           tmp = c.BP_add_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile1D.pyx":768
 *           tmp = c.BP_add_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedProfile1D.pyx":769
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":754
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.__add__", __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/generated/BinnedProfile1D.pyx":771
 *         return rtn
 * 
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_149__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_149__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 771, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_148__iadd__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_148__iadd__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  YODA::BinnedProfile1D<double>  *__pyx_t_4;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedProfile1D.pyx":772
 * 
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":773
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":772
 * 
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":774
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 774, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 774, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 774, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":775
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 775, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":776
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 776, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 776, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile1D.pyx":775
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":777
 *         if self._config == "d":
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":778
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BP_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 778, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 778, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedProfile1D.pyx":777
 *         if self._config == "d":
 *           c.BP_iadd_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":779
 *         elif self._config == "i":
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 779, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":780
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BP_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 780, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 780, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedProfile1D.pyx":779
 *         elif self._config == "i":
 *           c.BP_iadd_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile1D.pyx":781
 *         elif self._config == "s":
 *           c.BP_iadd_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":771
 *         return rtn
 * 
 *     def __iadd__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedProfile1D.pyx":783
 *         return self
 * 
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_151__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_151__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 783, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_150__sub__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_150__sub__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  YODA::BinnedProfile1D<double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<int>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedProfile1D.pyx":784
 * 
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":785
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":784
 * 
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":786
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "d":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 786, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 786, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 786, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":787
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile1D.pyx":788
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 788, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":789
 *         rtn = None
 *         if self._config == "d":
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 789, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 789, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile1D.pyx":790
 *         if self._config == "d":
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":788
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":791
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 791, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":792
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 792, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 792, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedProfile1D.pyx":793
 *         elif self._config == "i":
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":791
 *           tmp = c.BP_sub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":794
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 794, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":795
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 795, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 795, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedProfile1D.pyx":796
 *         elif self._config == "s":
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile1D.pyx":794
 *           tmp = c.BP_sub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile1D.pyx":797
 *           tmp = c.BP_sub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedProfile1D.pyx":798
 *           rtn = cutil.new_owned_cls(BinnedProfile1D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":783
 *         return self
 * 
 *     def __sub__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.__sub__", __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/generated/BinnedProfile1D.pyx":800
 *         return rtn
 * 
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_153__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_153__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 800, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_152__isub__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_152__isub__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  YODA::BinnedProfile1D<double>  *__pyx_t_4;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedProfile1D.pyx":801
 * 
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":802
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "d":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":801
 * 
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":803
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 803, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(22, 803, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(22, 803, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile1D.pyx":804
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 804, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":805
 *         assert(self._config == other._config)
 *         if self._config == "d":
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 805, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 805, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile1D.pyx":804
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":806
 *         if self._config == "d":
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 806, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":807
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           c.BP_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 807, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 807, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedProfile1D.pyx":806
 *         if self._config == "d":
 *           c.BP_isub_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile1D.pyx":808
 *         elif self._config == "i":
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BP_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 808, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":809
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           c.BP_isub_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 809, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 809, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedProfile1D.pyx":808
 *         elif self._config == "i":
 *           c.BP_isub_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           c.BP_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile1D.pyx":810
 *         elif self._config == "s":
 *           c.BP_isub_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile1D.pyx":800
 *         return rtn
 * 
 *     def __isub__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedProfile1D.pyx":812
 *         return self
 * 
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_155__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_155__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 812, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_154__eq__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_154__eq__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedProfile1D.pyx":813
 * 
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 813, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":814
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 814, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 814, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 814, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":813
 * 
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":815
 *         if self._config == "d":
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 815, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":816
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BP_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 816, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 816, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":815
 *         if self._config == "d":
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":817
 *         elif self._config == "i":
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 817, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":818
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BP_eq_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 818, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 818, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 818, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":817
 *         elif self._config == "i":
 *           return c.BP_eq_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":819
 *         elif self._config == "s":
 *           return c.BP_eq_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 819, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":812
 *         return self
 * 
 *     def __eq__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BP_eq_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedProfile1D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":821
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_157__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_157__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile1D, 1, "other", 0))) __PYX_ERR(22, 821, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_156__ne__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__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_15BinnedProfile1D_156__ne__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile1D<double>  *__pyx_t_2;
  YODA::BinnedProfile1D<double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile1D<int>  *__pyx_t_5;
  YODA::BinnedProfile1D<int>  *__pyx_t_6;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_7;
  YODA::BinnedProfile1D<std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedProfile1D.pyx":822
 * 
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_d, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 822, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":823
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "i":
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 823, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile1D<double>  *)NULL))) __PYX_ERR(22, 823, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":822
 * 
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):
 *         if self._config == "d":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":824
 *         if self._config == "d":
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_i, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 824, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":825
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "s":
 *           return c.BP_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 825, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile1D<int>  *)NULL))) __PYX_ERR(22, 825, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 825, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":824
 *         if self._config == "d":
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 *         elif self._config == "i":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":826
 *         elif self._config == "i":
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_s, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 826, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile1D.pyx":827
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":
 *           return c.BP_ne_s(self.binned_s_ptr(), other.binned_s_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 827, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile1D<std::string>  *)NULL))) __PYX_ERR(22, 827, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile1D.pyx":826
 *         elif self._config == "i":
 *           return c.BP_ne_i(self.binned_i_ptr(), other.binned_i_ptr())
 *         elif self._config == "s":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile1D.pyx":828
 *         elif self._config == "s":
 *           return c.BP_ne_s(self.binned_s_ptr(), other.binned_s_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(22, 828, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":821
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedProfile1D self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return c.BP_ne_d(self.binned_d_ptr(), other.binned_d_ptr())
 */

  /* 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.BinnedProfile1D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile1D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(22, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile1D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedProfile1D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedProfile1D[double]* binned_d_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile1D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_15BinnedProfile1D_159__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_15BinnedProfile1D_158__reduce_cython__, "BinnedProfile1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_159__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_159__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_158__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_159__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile1D_158__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_158__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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__", 1);

  /* "(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(1, 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.BinnedProfile1D.__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_15BinnedProfile1D_161__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_15BinnedProfile1D_160__setstate_cython__, "BinnedProfile1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile1D_161__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_161__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_160__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile1D_161__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile1D_160__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile1D_160__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile1D *__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__", 1);

  /* "(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(1, 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.BinnedProfile1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedProfile2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<double,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<double,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":31
 * 
 *     cdef inline c.BinnedProfile2D[double,double]* binned_dd_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[double,double]*> 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(23, 31, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":30
 *       object _binning
 * 
 *     cdef inline c.BinnedProfile2D[double,double]* binned_dd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedProfile2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<double,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<double,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":35
 * 
 *     cdef inline c.BinnedProfile2D[double,int]* binned_di_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[double,int]*> 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(23, 35, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":34
 * 
 * 
 *     cdef inline c.BinnedProfile2D[double,int]* binned_di_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedProfile2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<double,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<double,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":39
 * 
 *     cdef inline c.BinnedProfile2D[double,string]* binned_ds_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[double,string]*> 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(23, 39, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":38
 * 
 * 
 *     cdef inline c.BinnedProfile2D[double,string]* binned_ds_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[double,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<int,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<int,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":43
 * 
 *     cdef inline c.BinnedProfile2D[int,double]* binned_id_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[int,double]*> 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(23, 43, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":42
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,double]* binned_id_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<int,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<int,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":47
 * 
 *     cdef inline c.BinnedProfile2D[int,int]* binned_ii_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[int,int]*> 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(23, 47, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":46
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,int]* binned_ii_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<int,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<int,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":51
 * 
 *     cdef inline c.BinnedProfile2D[int,string]* binned_is_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[int,string]*> 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(23, 51, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":50
 * 
 * 
 *     cdef inline c.BinnedProfile2D[int,string]* binned_is_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[int,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,double]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<std::string,double>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<std::string,double>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":55
 * 
 *     cdef inline c.BinnedProfile2D[string,double]* binned_sd_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[string,double]*> 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(23, 55, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":54
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,double]* binned_sd_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,double]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,int]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<std::string,int>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<std::string,int>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":59
 * 
 *     cdef inline c.BinnedProfile2D[string,int]* binned_si_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[string,int]*> 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(23, 59, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":58
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,int]* binned_si_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,int]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,string]*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::BinnedProfile2D<std::string,std::string>  *__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/BinnedProfile2D.pyx":63
 * 
 *     cdef inline c.BinnedProfile2D[string,string]* binned_ss_ptr(self) except NULL:
 *         return <c.BinnedProfile2D[string,string]*> 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(23, 63, __pyx_L1_error)
  __pyx_r = ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":62
 * 
 * 
 *     cdef inline c.BinnedProfile2D[string,string]* binned_ss_ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.BinnedProfile2D[string,string]*> self.ptr()
 * 
 */

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

/* "include/generated/BinnedProfile2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D___init__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D___init__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/BinnedProfile2D.pyx":68
 * 
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''             # <<<<<<<<<<<<<<
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 */
  __Pyx_INCREF(__pyx_kp_s__2);
  __Pyx_GIVEREF(__pyx_kp_s__2);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = __pyx_kp_s__2;

  /* "include/generated/BinnedProfile2D.pyx":69
 *     def __init__(self, *args, **kwargs):
 *         self._config = ''
 *         self._binning = None             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":70
 *         self._config = ''
 *         self._binning = None
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 70, __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(23, 70, __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_BinnedProfile2D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile2D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile2D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile2D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(23, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(23, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(23, 70, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(23, 70, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(23, 70, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile2D.pyx":67
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         self._config = ''
 *         self._binning = None
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double]())
 *         #self._set_config()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_2__init1, "BinnedProfile2D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1 = {"_BinnedProfile2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_BinnedProfile2D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_2__init1(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_2__init1(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::BinnedProfile2D<double,double>  *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init1", 1);

  /* "include/generated/BinnedProfile2D.pyx":73
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double]())             # <<<<<<<<<<<<<<
 *         #self._set_config()
 * 
 */
  try {
    __pyx_t_1 = new YODA::BinnedProfile2D<double,double> ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 73, __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(23, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double]())
 *         #self._set_config()
 */

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

/* "include/generated/BinnedProfile2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__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_15BinnedProfile2D_4__init2, "BinnedProfile2D.__init2(self, edgesA1, edgesA2, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__init2 = {"_BinnedProfile2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__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_edgesA1 = 0;
  PyObject *__pyx_v_edgesA2 = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edgesA1,&__pyx_n_s_edgesA2,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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_edgesA1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 76, __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_edgesA2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 76, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init2", 0, 2, 4, 1); __PYX_ERR(23, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 76, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 76, __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, "_BinnedProfile2D__init2") < 0)) __PYX_ERR(23, 76, __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_edgesA1 = values[0];
    __pyx_v_edgesA2 = values[1];
    __pyx_v_path = ((PyObject*)values[2]);
    __pyx_v_title = ((PyObject*)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init2", 0, 2, 4, __pyx_nargs); __PYX_ERR(23, 76, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(23, 76, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(23, 76, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_4__init2(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_edgesA1, __pyx_v_edgesA2, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_2generator134(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_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_135_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_135_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 83, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_2generator134, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_2generator134(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_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(23, 83, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 83, __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(23, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 83, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 83, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 83, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 83, __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(23, 83, __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(23, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 83, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_5generator135(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_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_136_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_136_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 84, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_5generator135, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 84, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_5generator135(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_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(23, 84, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 84, __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(23, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 84, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 84, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 84, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 84, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 84, __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(23, 84, __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(23, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 84, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_8generator136(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_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_137_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_137_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 88, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_8generator136, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_8generator136(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_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(23, 88, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 88, __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(23, 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(23, 88, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 88, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 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(23, 88, __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(23, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 88, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_11generator137(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_9genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_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_138_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_138_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 89, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_11generator137, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_11generator137(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_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(23, 89, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 89, __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(23, 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(23, 89, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 89, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 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(23, 89, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 89, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_14generator138(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_12genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_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_139_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_139_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 93, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_14generator138, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_14generator138(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_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(23, 93, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 93, __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(23, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 93, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 93, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 93, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 93, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 93, __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(23, 93, __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(23, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 93, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_17generator139(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_15genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_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_140_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_140_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 94, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_17generator139, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_17generator139(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_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(23, 94, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 94, __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(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 94, __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(23, 94, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 94, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_20generator140(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_18genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_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_141_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_141_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 98, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_20generator140, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_20generator140(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_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(23, 98, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 98, __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(23, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 98, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 98, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 98, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 98, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 98, __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(23, 98, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 98, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_23generator141(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_21genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_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_142_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_142_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 99, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_23generator141, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_23generator141(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_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(23, 99, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 99, __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(23, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 99, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 99, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 99, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 99, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 99, __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(23, 99, __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(23, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 99, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_26generator142(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_24genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_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_143_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_143_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 103, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_26generator142, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_26generator142(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_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(23, 103, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 103, __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(23, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 103, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 103, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 103, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 103, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 103, __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(23, 103, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 103, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_29generator143(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_27genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_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_144_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_144_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 104, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_29generator143, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_29generator143(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_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(23, 104, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 104, __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(23, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 104, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 104, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 104, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 104, __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(23, 104, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 104, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_32generator144(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_30genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_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_145_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_145_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 108, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_32generator144, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_32generator144(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_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(23, 108, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 108, __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(23, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 108, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 108, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 108, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 108, __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(23, 108, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 108, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_35generator145(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_33genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_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_146_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_146_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 109, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_35generator145, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_35generator145(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_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(23, 109, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 109, __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(23, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 109, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 109, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 109, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 109, __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(23, 109, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 109, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_38generator146(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_36genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_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_147_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_147_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 113, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_38generator146, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_38generator146(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_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(23, 113, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 113, __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(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 113, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 113, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 113, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 113, __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(23, 113, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 113, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_41generator147(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_39genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_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_148_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_148_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 114, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_41generator147, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_41generator147(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_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(23, 114, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 114, __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(23, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 114, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 114, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 114, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 114, __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(23, 114, __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(23, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 114, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_44generator148(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_42genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_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_149_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_149_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 118, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_44generator148, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_44generator148(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_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(23, 118, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 118, __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(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 118, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 118, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 118, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 118, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 118, __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(23, 118, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 118, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_47generator149(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_45genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_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_150_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_150_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 119, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_47generator149, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_47generator149(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_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(23, 119, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 119, __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(23, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 119, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 119, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 119, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 119, __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(23, 119, __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_Int(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 119, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_50generator150(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_48genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_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_151_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_151_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 123, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_50generator150, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_50generator150(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_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(23, 123, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 123, __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(23, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 123, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 123, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 123, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 123, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 123, __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(23, 123, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 123, __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;
}
static PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_53generator151(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/BinnedProfile2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_51genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_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_152_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_152_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(23, 124, __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_15BinnedProfile2D_23_BinnedProfile2D__init2_53generator151, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(23, 124, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2.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_15BinnedProfile2D_23_BinnedProfile2D__init2_53generator151(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_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(23, 124, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(23, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(23, 124, __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(23, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 124, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 124, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(23, 124, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 124, __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(23, 124, __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_PyObject_Str(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 124, __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/generated/BinnedProfile2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_4__init2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edgesA1, PyObject *__pyx_v_edgesA2, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<std::vector<double> >  __pyx_v_edges_d;
  std::vector<std::vector<int> >  __pyx_v_edges_i;
  std::vector<std::vector<std::string> >  __pyx_v_edges_s;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_2generator134 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_5generator135 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_8generator136 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_11generator137 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_14generator138 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_17generator139 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_20generator140 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_23generator141 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_26generator142 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_29generator143 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_32generator144 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_35generator145 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_38generator146 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_41generator147 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_44generator148 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_47generator149 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_50generator150 = 0;
  PyObject *__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_53generator151 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  std::string __pyx_t_8;
  std::string __pyx_t_9;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  unsigned int __pyx_t_13;
  std::vector<std::vector<int> >  __pyx_t_14;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_15;
  std::vector<std::vector<std::string> >  __pyx_t_16;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_17;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_18;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_19;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_20;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_21;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_22;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init2", 1);

  /* "include/generated/BinnedProfile2D.pyx":77
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 *         cdef vector[vector[double]] edges_d
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 77, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L3_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(23, 77, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L3_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 77, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 77, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":78
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )             # <<<<<<<<<<<<<<
 *         cdef vector[vector[double]] edges_d
 *         cdef vector[vector[int]] edges_i
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_2 = __Pyx_HasAttr(__pyx_v_edgesA2, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 78, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyObject_Length(__pyx_v_edgesA2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(23, 78, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_3 != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 78, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 78, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":84
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_3genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":83
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):
 *           edges_d = [ list(float(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 83, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(23, 83, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":85
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 85, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 85, __pyx_L1_error)
    try {
      __pyx_t_10 = new YODA::BinnedProfile2D<double,double> ((__pyx_v_edges_d[0]), (__pyx_v_edges_d[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 85, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":86
 *                       list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":82
 *         cdef vector[vector[int]] edges_i
 *         cdef vector[vector[string]] edges_s
 *         if isinstance(edgesA1[0], float) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1),
 *                       list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":88
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_6genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 88, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 88, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":89
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_9genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 89, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":90
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 90, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 90, __pyx_L1_error)
    try {
      __pyx_t_15 = new YODA::BinnedProfile2D<double,int> ((__pyx_v_edges_d[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 90, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":91
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":87
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double](edges_d[0], edges_d[1], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_d[1])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L12_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":93
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_12genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 93, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":94
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_15genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 94, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":95
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 95, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 95, __pyx_L1_error)
    try {
      __pyx_t_17 = new YODA::BinnedProfile2D<double,std::string> ((__pyx_v_edges_d[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 95, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":96
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":92
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,int](edges_d[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_i[0])
 *         elif isinstance(edgesA1[0], float) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L14_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":98
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_18genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 98, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":99
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_21genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 99, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":100
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 100, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 100, __pyx_L1_error)
    try {
      __pyx_t_18 = new YODA::BinnedProfile2D<int,double> ((__pyx_v_edges_i[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 100, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":101
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_5 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":97
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,string](edges_d[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_d[0], edges_s[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_24genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":104
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_27genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":103
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):
 *           edges_i = [ list(int(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(23, 103, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(23, 103, __pyx_L1_error);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":105
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 105, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 105, __pyx_L1_error)
    try {
      __pyx_t_19 = new YODA::BinnedProfile2D<int,int> ((__pyx_v_edges_i[0]), (__pyx_v_edges_i[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 105, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":106
 *                       list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":102
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,double](edges_i[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_d[0])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1),
 *                       list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L18_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":108
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_30genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 108, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 108, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":109
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_33genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 109, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":110
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 110, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 110, __pyx_L1_error)
    try {
      __pyx_t_20 = new YODA::BinnedProfile2D<int,std::string> ((__pyx_v_edges_i[0]), (__pyx_v_edges_s[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 110, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":111
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":107
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,int](edges_i[0], edges_i[1], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_i[1])
 *         elif isinstance(edgesA1[0], int) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA1), ]
 *           edges_s = [ list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyFloat_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L20_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":113
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_36genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 113, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":114
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_39genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 114, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_d = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":115
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 115, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 115, __pyx_L1_error)
    try {
      __pyx_t_21 = new YODA::BinnedProfile2D<std::string,double> ((__pyx_v_edges_s[0]), (__pyx_v_edges_d[0]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 115, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":116
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __pyx_convert_vector_to_py_double((__pyx_v_edges_d[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":112
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[int,string](edges_i[0], edges_s[0], <string>path, <string>title))
 *           self._set_config(edges_i[0], edges_s[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], float):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_d = [ list(float(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyInt_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L22_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":118
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]             # <<<<<<<<<<<<<<
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_42genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 118, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":119
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_45genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 119, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_14 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_i = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":120
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 */
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 120, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 120, __pyx_L1_error)
    try {
      __pyx_t_22 = new YODA::BinnedProfile2D<std::string,int> ((__pyx_v_edges_s[0]), (__pyx_v_edges_i[0]), ((std::string)__pyx_t_9), ((std::string)__pyx_t_8));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 120, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":121
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])             # <<<<<<<<<<<<<<
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_6 = __pyx_convert_vector_to_py_int((__pyx_v_edges_i[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 121, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":117
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,double](edges_s[0], edges_d[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_d[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], int):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1), ]
 *           edges_i = [ list(int(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_edgesA2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyString_Check(__pyx_t_4); 
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L24_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "include/generated/BinnedProfile2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_48genexpr(NULL, __pyx_v_edgesA1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":124
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_51genexpr(NULL, __pyx_v_edgesA2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":123
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):
 *           edges_s = [ list(str(x) for x in edgesA1),             # <<<<<<<<<<<<<<
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 */
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(23, 123, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(23, 123, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_16 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_edges_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":125
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))             # <<<<<<<<<<<<<<
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 */
    __pyx_t_8 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 125, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 125, __pyx_L1_error)
    try {
      __pyx_t_23 = new YODA::BinnedProfile2D<std::string,std::string> ((__pyx_v_edges_s[0]), (__pyx_v_edges_s[1]), ((std::string)__pyx_t_8), ((std::string)__pyx_t_9));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 125, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_23); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":126
 *                       list(str(x) for x in edgesA2), ]
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,string](edges_s[0], edges_s[1], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_s[1])             # <<<<<<<<<<<<<<
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_string((__pyx_v_edges_s[1])); if (unlikely(!__pyx_t_11)) __PYX_ERR(23, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = NULL;
    __pyx_t_13 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_13 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":122
 *           cutil.set_owned_ptr(self, new c.BinnedProfile2D[string,int](edges_s[0], edges_i[0], <string>path, <string>title))
 *           self._set_config(edges_s[0], edges_i[0])
 *         elif isinstance(edgesA1[0], str) and isinstance(edgesA2[0], str):             # <<<<<<<<<<<<<<
 *           edges_s = [ list(str(x) for x in edgesA1),
 *                       list(str(x) for x in edgesA2), ]
 */
    goto __pyx_L7;
  }

  /* "include/generated/BinnedProfile2D.pyx":128
 *           self._set_config(edges_s[0], edges_s[1])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(23, 128, __pyx_L1_error)
  }
  __pyx_L7:;

  /* "include/generated/BinnedProfile2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */

  /* 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_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_2generator134);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_5generator135);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_8generator136);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_11generator137);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_14generator138);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_17generator139);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_20generator140);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_23generator141);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_26generator142);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_29generator143);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_32generator144);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_35generator145);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_38generator146);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_41generator147);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_44generator148);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_47generator149);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_50generator150);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_15BinnedProfile2D_23_BinnedProfile2D__init2_53generator151);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__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_15BinnedProfile2D_6__init3, "BinnedProfile2D.__init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path='', str title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__init3 = {"_BinnedProfile2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__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_nbinsX = 0;
  PyObject *__pyx_v_lowerX = 0;
  PyObject *__pyx_v_upperX = 0;
  PyObject *__pyx_v_nbinsY = 0;
  PyObject *__pyx_v_lowerY = 0;
  PyObject *__pyx_v_upperY = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbinsX,&__pyx_n_s_lowerX,&__pyx_n_s_upperX,&__pyx_n_s_nbinsY,&__pyx_n_s_lowerY,&__pyx_n_s_upperY,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[7] = __Pyx_Arg_NewRef_FASTCALL(((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_nbinsX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __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_lowerX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, 1); __PYX_ERR(23, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperX)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, 2); __PYX_ERR(23, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbinsY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, 3); __PYX_ERR(23, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lowerY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, 4); __PYX_ERR(23, 130, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upperY)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, 5); __PYX_ERR(23, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 130, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 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, "_BinnedProfile2D__init3") < 0)) __PYX_ERR(23, 130, __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_nbinsX = values[0];
    __pyx_v_lowerX = values[1];
    __pyx_v_upperX = values[2];
    __pyx_v_nbinsY = values[3];
    __pyx_v_lowerY = values[4];
    __pyx_v_upperY = values[5];
    __pyx_v_path = ((PyObject*)values[6]);
    __pyx_v_title = ((PyObject*)values[7]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init3", 0, 6, 8, __pyx_nargs); __PYX_ERR(23, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(23, 130, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_title), (&PyString_Type), 1, "title", 1))) __PYX_ERR(23, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_6__init3(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_6__init3(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_nbinsX, PyObject *__pyx_v_lowerX, PyObject *__pyx_v_upperX, PyObject *__pyx_v_nbinsY, PyObject *__pyx_v_lowerY, PyObject *__pyx_v_upperY, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned 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("_BinnedProfile2D__init3", 1);

  /* "include/generated/BinnedProfile2D.pyx":132
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),             # <<<<<<<<<<<<<<
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_nbinsX, __pyx_v_lowerX, __pyx_v_upperX};
    __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(23, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "include/generated/BinnedProfile2D.pyx":133
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),             # <<<<<<<<<<<<<<
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_nbinsY, __pyx_v_lowerY, __pyx_v_upperY};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/generated/BinnedProfile2D.pyx":131
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):
 *         edges = [             # <<<<<<<<<<<<<<
 *             linspace(nbinsX, lowerX, upperX),
 *             linspace(nbinsY, lowerY, upperY),
 */
  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(23, 131, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(23, 131, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_edges = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile2D.pyx":135
 *             linspace(nbinsY, lowerY, upperY),
 *         ]
 *         self.__init2(edges[0], edges[1], path, title)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, BinnedProfile2D other):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_BinnedProfile2D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_edges, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_edges, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_1, __pyx_t_5, __pyx_v_path, __pyx_v_title};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__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_15BinnedProfile2D_8__init4, "BinnedProfile2D.__init4(self, BinnedProfile2D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__init4 = {"_BinnedProfile2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__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
) {
  struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 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, "_BinnedProfile2D__init4") < 0)) __PYX_ERR(23, 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_other = ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_BinnedProfile2D__init4", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init4", __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_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 137, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_8__init4(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_8__init4(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  unsigned int __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_BinnedProfile2D__init4", 1);

  /* "include/generated/BinnedProfile2D.pyx":138
 * 
 *     def __init4(self, BinnedProfile2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":139
 *     def __init4(self, BinnedProfile2D other):
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 139, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 139, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":138
 * 
 *     def __init4(self, BinnedProfile2D other):
 *         if other._config == "dd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":141
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 141, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 141, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":140
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 *         elif other._config == "di":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":143
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 143, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 143, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":142
 *         elif other._config == "di":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,int]*> other.binned_di_ptr().newclone())
 *         elif other._config == "ds":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":145
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 145, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 145, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":144
 *         elif other._config == "ds":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,string]*> other.binned_ds_ptr().newclone())
 *         elif other._config == "id":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 146, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":147
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 147, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 147, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":146
 *         elif other._config == "id":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,double]*> other.binned_id_ptr().newclone())
 *         elif other._config == "ii":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":149
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 149, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 149, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":148
 *         elif other._config == "ii":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,int]*> other.binned_ii_ptr().newclone())
 *         elif other._config == "is":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":151
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 151, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 151, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":150
 *         elif other._config == "is":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[int,string]*> other.binned_is_ptr().newclone())
 *         elif other._config == "sd":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 152, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":153
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,string]*> other.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 153, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 153, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":152
 *         elif other._config == "sd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,double]*> other.binned_sd_ptr().newclone())
 *         elif other._config == "si":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_other->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 154, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":155
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,string]*> other.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         self._set_config(Binning(other._binning))
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 155, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 155, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":154
 *         elif other._config == "si":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,int]*> other.binned_si_ptr().newclone())
 *         elif other._config == "ss":             # <<<<<<<<<<<<<<
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":156
 *         elif other._config == "ss":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[string,string]*> other.binned_ss_ptr().newclone())
 *         self._set_config(Binning(other._binning))             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(23, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_Binning); if (unlikely(!__pyx_t_23)) __PYX_ERR(23, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_24 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_v_other->_binning};
    __pyx_t_22 = __Pyx_PyObject_FastCall(__pyx_t_23, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
    if (unlikely(!__pyx_t_22)) __PYX_ERR(23, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  }
  __pyx_t_23 = NULL;
  __pyx_t_25 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_25 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_t_22};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_25, 1+__pyx_t_25);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 */

  /* 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_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._BinnedProfile2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_11__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_11__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_10__iter__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_10__iter__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/BinnedProfile2D.pyx":159
 * 
 *     def __iter__(self):
 *         return iter(self.bins())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 159, __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/generated/BinnedProfile2D.pyx":158
 *         self._set_config(Binning(other._binning))
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.bins())
 * 
 */

  /* 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.BinnedProfile2D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

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

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_12__repr__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedProfile2D.pyx":162
 * 
 *     def __repr__(self):
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())             # <<<<<<<<<<<<<<
 * 
 *     def _set_config(self, *args):
 */
  __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(23, 162, __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(23, 162, __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(23, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(23, 162, __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_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(23, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(23, 162, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_config);
  __Pyx_GIVEREF(__pyx_v_self->_config);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_config)) __PYX_ERR(23, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(23, 162, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(23, 162, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_d_bins, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 162, __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/BinnedProfile2D.pyx":161
 *         return iter(self.bins())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 */

  /* 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.BinnedProfile2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_14_set_config, "BinnedProfile2D._set_config(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_15_set_config = {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_14_set_config};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_15_set_config(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_config (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_set_config", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_14_set_config(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_14_set_config(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_edges = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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;
  void *__pyx_t_9;
  std::string __pyx_t_10;
  std::vector<double>  __pyx_t_11;
  std::vector<double>  __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  std::vector<double>  __pyx_t_14;
  std::vector<int>  __pyx_t_15;
  std::vector<double>  __pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  std::vector<int>  __pyx_t_18;
  std::vector<double>  __pyx_t_19;
  std::vector<int>  __pyx_t_20;
  std::vector<int>  __pyx_t_21;
  std::vector<int>  __pyx_t_22;
  std::vector<std::string>  __pyx_t_23;
  std::vector<std::string>  __pyx_t_24;
  std::vector<double>  __pyx_t_25;
  std::vector<std::string>  __pyx_t_26;
  std::vector<int>  __pyx_t_27;
  std::vector<std::string>  __pyx_t_28;
  std::vector<std::string>  __pyx_t_29;
  unsigned int __pyx_t_30;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_config", 1);

  /* "include/generated/BinnedProfile2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(23, 165, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_IsInstance(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(23, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":166
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]             # <<<<<<<<<<<<<<
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":165
 * 
 *     def _set_config(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):             # <<<<<<<<<<<<<<
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(23, 167, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 2);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_t_5 == Py_None);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":168
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args             # <<<<<<<<<<<<<<
 *         elif len(args):
 *             self._binning = Binning(*args)
 */
    if (1) {
      PyObject* sequence = __pyx_v_args;
      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(23, 168, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(23, 168, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":167
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 *         if len(args) == 2 and args[0] is None:             # <<<<<<<<<<<<<<
 *             self._binning, self._config = args
 *         elif len(args):
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(23, 169, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":170
 *             self._binning, self._config = args
 *         elif len(args):
 *             self._binning = Binning(*args)             # <<<<<<<<<<<<<<
 *         else:
 *           edges = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Binning); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":169
 *         if len(args) == 2 and args[0] is None:
 *             self._binning, self._config = args
 *         elif len(args):             # <<<<<<<<<<<<<<
 *             self._binning = Binning(*args)
 *         else:
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":172
 *             self._binning = Binning(*args)
 *         else:
 *           edges = None             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_edges = ((PyObject*)Py_None);

    /* "include/generated/BinnedProfile2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 174, __pyx_L9_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 174, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 174, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_dd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 174, __pyx_L9_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":175
 *           try:
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 175, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(23, 175, __pyx_L9_error)

          /* "include/generated/BinnedProfile2D.pyx":174
 *           edges = None
 *           try:
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":177
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 177, __pyx_L9_error)
        try {
          __pyx_t_11 = ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 177, __pyx_L9_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 177, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":178
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "dd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 178, __pyx_L9_error)
        try {
          __pyx_t_12 = ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 178, __pyx_L9_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 178, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":176
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(23, 176, __pyx_L9_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(23, 176, __pyx_L9_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 176, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedProfile2D.pyx":180
 *               (<c.BinnedProfile2D[double,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "dd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_dd);
        __Pyx_GIVEREF(__pyx_n_s_dd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_dd;

        /* "include/generated/BinnedProfile2D.pyx":173
 *         else:
 *           edges = None
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,double]*> self.ptr())._config()) != "dd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L14_try_end;
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":181
 *             ])
 *             self._config = "dd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L14_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 183, __pyx_L16_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 183, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 183, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_di, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 183, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":184
 *           try:
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 184, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(23, 184, __pyx_L16_error)

          /* "include/generated/BinnedProfile2D.pyx":183
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":186
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 186, __pyx_L16_error)
        try {
          __pyx_t_14 = ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 186, __pyx_L16_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 186, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":187
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "di"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 187, __pyx_L16_error)
        try {
          __pyx_t_15 = ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 187, __pyx_L16_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 187, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":185
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(23, 185, __pyx_L16_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(23, 185, __pyx_L16_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 185, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedProfile2D.pyx":189
 *               (<c.BinnedProfile2D[double,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "di"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_di);
        __Pyx_GIVEREF(__pyx_n_s_di);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_di;

        /* "include/generated/BinnedProfile2D.pyx":182
 *             self._config = "dd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,int]*> self.ptr())._config()) != "di":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L21_try_end;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":190
 *             ])
 *             self._config = "di"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L17_exception_handled;
      }
      __pyx_L17_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L21_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 192, __pyx_L23_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 192, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 192, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ds, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 192, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":193
 *           try:
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 193, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(23, 193, __pyx_L23_error)

          /* "include/generated/BinnedProfile2D.pyx":192
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":195
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 195, __pyx_L23_error)
        try {
          __pyx_t_16 = ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 195, __pyx_L23_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_double(__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 195, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":196
 *             edges = tuple([
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ds"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 196, __pyx_L23_error)
        try {
          __pyx_t_17 = ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 196, __pyx_L23_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 196, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":194
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(23, 194, __pyx_L23_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(23, 194, __pyx_L23_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 194, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile2D.pyx":198
 *               (<c.BinnedProfile2D[double,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ds"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ds);
        __Pyx_GIVEREF(__pyx_n_s_ds);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ds;

        /* "include/generated/BinnedProfile2D.pyx":191
 *             self._config = "di"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[double,string]*> self.ptr())._config()) != "ds":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L28_try_end;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":199
 *             ])
 *             self._config = "ds"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L24_exception_handled;
      }
      __pyx_L24_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L28_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 201, __pyx_L30_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 201, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 201, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_id, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 201, __pyx_L30_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":202
 *           try:
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 202, __pyx_L30_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(23, 202, __pyx_L30_error)

          /* "include/generated/BinnedProfile2D.pyx":201
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":204
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 204, __pyx_L30_error)
        try {
          __pyx_t_18 = ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 204, __pyx_L30_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 204, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":205
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "id"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 205, __pyx_L30_error)
        try {
          __pyx_t_19 = ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 205, __pyx_L30_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 205, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":203
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(23, 203, __pyx_L30_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(23, 203, __pyx_L30_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 203, __pyx_L30_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedProfile2D.pyx":207
 *               (<c.BinnedProfile2D[int,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "id"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_id);
        __Pyx_GIVEREF(__pyx_n_s_id);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_id;

        /* "include/generated/BinnedProfile2D.pyx":200
 *             self._config = "ds"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,double]*> self.ptr())._config()) != "id":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L35_try_end;
      __pyx_L30_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":208
 *             ])
 *             self._config = "id"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L31_exception_handled;
      }
      __pyx_L31_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L35_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 210, __pyx_L37_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 210, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 210, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_ii, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 210, __pyx_L37_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":211
 *           try:
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 211, __pyx_L37_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(23, 211, __pyx_L37_error)

          /* "include/generated/BinnedProfile2D.pyx":210
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":213
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 213, __pyx_L37_error)
        try {
          __pyx_t_20 = ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 213, __pyx_L37_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_int(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 213, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":214
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ii"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 214, __pyx_L37_error)
        try {
          __pyx_t_21 = ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 214, __pyx_L37_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_21); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 214, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":212
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(23, 212, __pyx_L37_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(23, 212, __pyx_L37_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 212, __pyx_L37_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedProfile2D.pyx":216
 *               (<c.BinnedProfile2D[int,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ii"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_ii);
        __Pyx_GIVEREF(__pyx_n_s_ii);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ii;

        /* "include/generated/BinnedProfile2D.pyx":209
 *             self._config = "id"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,int]*> self.ptr())._config()) != "ii":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L42_try_end;
      __pyx_L37_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":217
 *             ])
 *             self._config = "ii"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L38_exception_handled;
      }
      __pyx_L38_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L42_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 219, __pyx_L44_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 219, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 219, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_is, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 219, __pyx_L44_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":220
 *           try:
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 220, __pyx_L44_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(23, 220, __pyx_L44_error)

          /* "include/generated/BinnedProfile2D.pyx":219
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":222
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 222, __pyx_L44_error)
        try {
          __pyx_t_22 = ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 222, __pyx_L44_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 222, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":223
 *             edges = tuple([
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "is"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 223, __pyx_L44_error)
        try {
          __pyx_t_23 = ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 223, __pyx_L44_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 223, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":221
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(23, 221, __pyx_L44_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(23, 221, __pyx_L44_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 221, __pyx_L44_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile2D.pyx":225
 *               (<c.BinnedProfile2D[int,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "is"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_is);
        __Pyx_GIVEREF(__pyx_n_s_is);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_is;

        /* "include/generated/BinnedProfile2D.pyx":218
 *             self._config = "ii"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[int,string]*> self.ptr())._config()) != "is":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L49_try_end;
      __pyx_L44_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":226
 *             ])
 *             self._config = "is"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L45_exception_handled;
      }
      __pyx_L45_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L49_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 228, __pyx_L51_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 228, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 228, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_sd, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 228, __pyx_L51_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":229
 *           try:
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).xEdges(False),
 */
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 229, __pyx_L51_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(23, 229, __pyx_L51_error)

          /* "include/generated/BinnedProfile2D.pyx":228
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":231
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 231, __pyx_L51_error)
        try {
          __pyx_t_24 = ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 231, __pyx_L51_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 231, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":232
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "sd"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 232, __pyx_L51_error)
        try {
          __pyx_t_25 = ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 232, __pyx_L51_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 232, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":230
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).yEdges(False),
 */
        __pyx_t_13 = PyList_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_t_5)) __PYX_ERR(23, 230, __pyx_L51_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 1, __pyx_t_4)) __PYX_ERR(23, 230, __pyx_L51_error);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 230, __pyx_L51_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_4));
        __pyx_t_4 = 0;

        /* "include/generated/BinnedProfile2D.pyx":234
 *               (<c.BinnedProfile2D[string,double]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "sd"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_sd);
        __Pyx_GIVEREF(__pyx_n_s_sd);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_sd;

        /* "include/generated/BinnedProfile2D.pyx":227
 *             self._config = "is"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,double]*> self.ptr())._config()) != "sd":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L56_try_end;
      __pyx_L51_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":235
 *             ])
 *             self._config = "sd"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L52_exception_handled;
      }
      __pyx_L52_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L56_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 237, __pyx_L58_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 237, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 237, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_si, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 237, __pyx_L58_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":238
 *           try:
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).xEdges(False),
 */
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 238, __pyx_L58_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_Raise(__pyx_t_4, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __PYX_ERR(23, 238, __pyx_L58_error)

          /* "include/generated/BinnedProfile2D.pyx":237
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":240
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 240, __pyx_L58_error)
        try {
          __pyx_t_26 = ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 240, __pyx_L58_error)
        }
        __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 240, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_4);

        /* "include/generated/BinnedProfile2D.pyx":241
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "si"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 241, __pyx_L58_error)
        try {
          __pyx_t_27 = ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 241, __pyx_L58_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_int(__pyx_t_27); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 241, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":239
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).yEdges(False),
 */
        __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(23, 239, __pyx_L58_error);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(23, 239, __pyx_L58_error);
        __pyx_t_4 = 0;
        __pyx_t_13 = 0;
        __pyx_t_13 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 239, __pyx_L58_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/BinnedProfile2D.pyx":243
 *               (<c.BinnedProfile2D[string,int]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "si"             # <<<<<<<<<<<<<<
 *           except: pass
 *           try:
 */
        __Pyx_INCREF(__pyx_n_s_si);
        __Pyx_GIVEREF(__pyx_n_s_si);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_si;

        /* "include/generated/BinnedProfile2D.pyx":236
 *             self._config = "sd"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,int]*> self.ptr())._config()) != "si":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L63_try_end;
      __pyx_L58_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":244
 *             ])
 *             self._config = "si"
 *           except: pass             # <<<<<<<<<<<<<<
 *           try:
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L59_exception_handled;
      }
      __pyx_L59_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
      __pyx_L63_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "include/generated/BinnedProfile2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 246, __pyx_L65_error)
        try {
          __pyx_t_10 = ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_9)->_config();
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 246, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 246, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_13, __pyx_n_s_ss, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 246, __pyx_L65_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "include/generated/BinnedProfile2D.pyx":247
 *           try:
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).xEdges(False),
 */
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 247, __pyx_L65_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_Raise(__pyx_t_13, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __PYX_ERR(23, 247, __pyx_L65_error)

          /* "include/generated/BinnedProfile2D.pyx":246
 *           except: pass
 *           try:
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 */
        }

        /* "include/generated/BinnedProfile2D.pyx":249
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).xEdges(False),             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 249, __pyx_L65_error)
        try {
          __pyx_t_28 = ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_9)->xEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 249, __pyx_L65_error)
        }
        __pyx_t_13 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_28); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 249, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "include/generated/BinnedProfile2D.pyx":250
 *             edges = tuple([
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).yEdges(False),             # <<<<<<<<<<<<<<
 *             ])
 *             self._config = "ss"
 */
        __pyx_t_9 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((void *)NULL))) __PYX_ERR(23, 250, __pyx_L65_error)
        try {
          __pyx_t_29 = ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_9)->yEdges(0);
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(23, 250, __pyx_L65_error)
        }
        __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_29); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 250, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);

        /* "include/generated/BinnedProfile2D.pyx":248
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 *             edges = tuple([             # <<<<<<<<<<<<<<
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).xEdges(False),
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).yEdges(False),
 */
        __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_13);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_13)) __PYX_ERR(23, 248, __pyx_L65_error);
        __Pyx_GIVEREF(__pyx_t_5);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(23, 248, __pyx_L65_error);
        __pyx_t_13 = 0;
        __pyx_t_5 = 0;
        __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 248, __pyx_L65_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_edges, ((PyObject*)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "include/generated/BinnedProfile2D.pyx":252
 *               (<c.BinnedProfile2D[string,string]*> self.ptr()).yEdges(False),
 *             ])
 *             self._config = "ss"             # <<<<<<<<<<<<<<
 *           except: pass
 *           self._binning = Binning(*edges)
 */
        __Pyx_INCREF(__pyx_n_s_ss);
        __Pyx_GIVEREF(__pyx_n_s_ss);
        __Pyx_GOTREF(__pyx_v_self->_config);
        __Pyx_DECREF(__pyx_v_self->_config);
        __pyx_v_self->_config = __pyx_n_s_ss;

        /* "include/generated/BinnedProfile2D.pyx":245
 *             self._config = "si"
 *           except: pass
 *           try:             # <<<<<<<<<<<<<<
 *             if str((<c.BinnedProfile2D[string,string]*> self.ptr())._config()) != "ss":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")
 */
      }
      __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;
      goto __pyx_L70_try_end;
      __pyx_L65_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/generated/BinnedProfile2D.pyx":253
 *             ])
 *             self._config = "ss"
 *           except: pass             # <<<<<<<<<<<<<<
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L66_exception_handled;
      }
      __pyx_L66_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_L70_try_end:;
    }

    /* "include/generated/BinnedProfile2D.pyx":254
 *             self._config = "ss"
 *           except: pass
 *           self._binning = Binning(*edges)             # <<<<<<<<<<<<<<
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()
 */
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Binning); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_v_edges == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(23, 254, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_v_edges, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_binning);
    __Pyx_DECREF(__pyx_v_self->_binning);
    __pyx_v_self->_binning = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_binning); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(23, 255, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_13 = NULL;
  __pyx_t_30 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_13)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_13);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_30 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(23, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L73_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":256
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():
 *             self._config = self._binning.config()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_binning, __pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = NULL;
    __pyx_t_30 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_13)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_13);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_30 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_30, 0+__pyx_t_30);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(23, 256, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_config);
    __Pyx_DECREF(__pyx_v_self->_config);
    __pyx_v_self->_config = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":255
 *           except: pass
 *           self._binning = Binning(*edges)
 *         if self._binning and self._binning.config():             # <<<<<<<<<<<<<<
 *             self._config = self._binning.config()
 * 
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */

  /* 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_13);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._set_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile2D.
 *         Clone this BinnedProfile2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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_15BinnedProfile2D_16clone, "BinnedProfile2D.clone(self)\n() -> BinnedProfile2D.\n        Clone this BinnedProfile2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_16clone};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_16clone(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_16clone(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/BinnedProfile2D.pyx":261
 *         """() -> BinnedProfile2D.
 *         Clone this BinnedProfile2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":262
 *         Clone this BinnedProfile2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":263
 *         rtn = None
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 263, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 263, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<double,double>  *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":262
 *         Clone this BinnedProfile2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":265
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 265, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 265, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<double,int>  *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":264
 *         if self._config == "dd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,double]*> self.binned_dd_ptr().newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 266, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":267
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 267, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 267, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<double,std::string>  *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":266
 *         elif self._config == "di":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,int]*> self.binned_di_ptr().newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":269
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 269, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 269, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<int,double>  *)__pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":268
 *         elif self._config == "ds":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[double,string]*> self.binned_ds_ptr().newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 270, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":271
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 271, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 271, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<int,int>  *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":270
 *         elif self._config == "id":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,double]*> self.binned_id_ptr().newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 272, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":273
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 273, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 273, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<int,std::string>  *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":272
 *         elif self._config == "ii":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,int]*> self.binned_ii_ptr().newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 274, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":275
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 275, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 275, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<std::string,double>  *)__pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":274
 *         elif self._config == "is":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[int,string]*> self.binned_is_ptr().newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 276, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":277
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 277, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 277, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<std::string,int>  *)__pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":276
 *         elif self._config == "sd":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,double]*> self.binned_sd_ptr().newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 278, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":279
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())             # <<<<<<<<<<<<<<
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 279, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 279, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), ((YODA::BinnedProfile2D<std::string,std::string>  *)__pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":278
 *         elif self._config == "si":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,int]*> self.binned_si_ptr().newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":281
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:
 *             rtn._set_config(self._binning, self._config)             # <<<<<<<<<<<<<<
 *         else:
 *             rtn._set_config(self._binning)
 */
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(23, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_22, __pyx_v_self->_binning, __pyx_v_self->_config};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 2+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":280
 *         elif self._config == "ss":
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, <c.BinnedProfile2D[string,string]*> self.binned_ss_ptr().newclone())
 *         if self._binning is None:             # <<<<<<<<<<<<<<
 *             rtn._set_config(self._binning, self._config)
 *         else:
 */
    goto __pyx_L4;
  }

  /* "include/generated/BinnedProfile2D.pyx":283
 *             rtn._set_config(self._binning, self._config)
 *         else:
 *             rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  /*else*/ {
    __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(23, 283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_21);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_21))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_21, function);
        __pyx_t_23 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
      __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "include/generated/BinnedProfile2D.pyx":284
 *         else:
 *             rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile2D.
 *         Clone this BinnedProfile2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.clone", __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/generated/BinnedProfile2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex, "BinnedProfile2D.localToGlobalIndex(self, *indices)\nConvert local indices to internal global index.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex = {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("localToGlobalIndex (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "localToGlobalIndex", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  std::vector<size_t>  __pyx_v_localIndices;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_7;
  size_t __pyx_t_8;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("localToGlobalIndex", 1);

  /* "include/generated/BinnedProfile2D.pyx":289
 *     def localToGlobalIndex(self, *indices):
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!             # <<<<<<<<<<<<<<
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(23, 289, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 289, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 289, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":291
 *         assert(len(indices) == 2) # Check dimensions match!
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 291, __pyx_L1_error)
      #endif
      if (__pyx_t_1 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(23, 291, __pyx_L1_error)
    #else
    __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(23, 291, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_size_t(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_localIndices = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 292, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":293
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 293, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 293, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":292
 *         cdef vector[size_t] localIndices
 *         localIndices = [ int(i) for i in indices ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 294, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":295
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 295, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_9->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 295, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":294
 *         if self._config == "dd":
 *           return self.binned_dd_ptr()._local2global(localIndices)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 296, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":297
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 297, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_10->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 297, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":296
 *         if self._config == "di":
 *           return self.binned_di_ptr()._local2global(localIndices)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 298, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":299
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 299, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 299, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":298
 *         if self._config == "ds":
 *           return self.binned_ds_ptr()._local2global(localIndices)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 300, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":301
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 301, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 301, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":300
 *         if self._config == "id":
 *           return self.binned_id_ptr()._local2global(localIndices)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 302, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":303
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 303, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 303, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":302
 *         if self._config == "ii":
 *           return self.binned_ii_ptr()._local2global(localIndices)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 304, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":305
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 305, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 305, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":304
 *         if self._config == "is":
 *           return self.binned_is_ptr()._local2global(localIndices)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 306, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":307
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 307, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 307, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":306
 *         if self._config == "sd":
 *           return self.binned_sd_ptr()._local2global(localIndices)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 308, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":309
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 309, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->_local2global(__pyx_v_localIndices);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 309, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":308
 *         if self._config == "si":
 *           return self.binned_si_ptr()._local2global(localIndices)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":310
 *         if self._config == "ss":
 *           return self.binned_ss_ptr()._local2global(localIndices)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 310, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */

  /* 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.BinnedProfile2D.localToGlobalIndex", __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/generated/BinnedProfile2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_21_global_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_20_global_set, "BinnedProfile2D._global_set(self, size_t idx, Dbn3D cont)\nint, Dbn3D -> void.\n        Set a Dbn3D at bin position idx.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_21_global_set = {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_20_global_set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_21_global_set(PyObject *__pyx_v_self, 
#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_idx;
  struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_global_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_cont,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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 313, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 313, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, 1); __PYX_ERR(23, 313, __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, "_global_set") < 0)) __PYX_ERR(23, 313, __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_idx = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_idx == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 313, __pyx_L3_error)
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn3D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_global_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn3D, 1, "cont", 0))) __PYX_ERR(23, 313, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_20_global_set(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_20_global_set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, size_t __pyx_v_idx, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::Dbn3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_global_set", 1);

  /* "include/generated/BinnedProfile2D.pyx":316
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":317
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 317, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 317, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 317, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":316
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":319
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 319, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 319, __pyx_L1_error)
    try {
      __pyx_t_5->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 319, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":318
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":321
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 321, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 321, __pyx_L1_error)
    try {
      __pyx_t_6->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 321, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":320
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 322, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":323
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 323, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 323, __pyx_L1_error)
    try {
      __pyx_t_7->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 323, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":322
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 324, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":325
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 325, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 325, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 325, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 325, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":324
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":327
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 327, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 327, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 327, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":326
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":329
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 329, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 329, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 329, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":328
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":331
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 331, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 331, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 331, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":330
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":333
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 333, __pyx_L1_error)
    __pyx_t_3 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_3 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 333, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_v_idx, (__pyx_t_3[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 333, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":332
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(idx, cont.d3ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":334
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(idx, cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 334, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */

  /* 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.BinnedProfile2D._global_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_22_local_set, "BinnedProfile2D._local_set(self, indices, Dbn3D cont)\nvector[int], Dbn3D -> void.\n        Set a Dbn3D at bin with local indices.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_23_local_set = {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_22_local_set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_23_local_set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_local_set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_indices_2,&__pyx_n_s_cont,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_indices_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 338, __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_cont)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 338, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, 1); __PYX_ERR(23, 338, __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, "_local_set") < 0)) __PYX_ERR(23, 338, __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_indices = values[0];
    __pyx_v_cont = ((struct __pyx_obj_4yoda_4core_Dbn3D *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_local_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cont), __pyx_ptype_4yoda_4core_Dbn3D, 1, "cont", 0))) __PYX_ERR(23, 338, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_22_local_set(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_indices, __pyx_v_cont);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_22_local_set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_cont) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  YODA::Dbn3D *__pyx_t_7;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_local_set", 1);

  /* "include/generated/BinnedProfile2D.pyx":341
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 341, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":342
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 342, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 342, __pyx_L1_error)
    try {
      __pyx_t_2->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 342, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":341
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 343, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":344
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 344, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 344, __pyx_L1_error)
    try {
      __pyx_t_8->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 344, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":343
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 345, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":346
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 346, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 346, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 346, __pyx_L1_error)
    try {
      __pyx_t_9->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 346, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":345
 *         if self._config == "di":
 *           return self.binned_di_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 347, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":348
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 348, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 348, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 348, __pyx_L1_error)
    try {
      __pyx_t_10->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 348, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":347
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":350
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 350, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 350, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 350, __pyx_L1_error)
    try {
      __pyx_t_11->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 350, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":349
 *         if self._config == "id":
 *           return self.binned_id_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":352
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 352, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 352, __pyx_L1_error)
    try {
      __pyx_t_12->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 352, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":351
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":354
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 354, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 354, __pyx_L1_error)
    try {
      __pyx_t_13->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 354, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":353
 *         if self._config == "is":
 *           return self.binned_is_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":356
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 356, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 356, __pyx_L1_error)
    try {
      __pyx_t_14->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 356, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":355
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":358
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 358, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 358, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_cont->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_cont); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(23, 358, __pyx_L1_error)
    try {
      __pyx_t_15->set(__pyx_t_6, (__pyx_t_7[0]));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 358, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":357
 *         if self._config == "si":
 *           return self.binned_si_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":359
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().set(self.localToGlobalIndex(*indices), cont.d3ptr()[0])
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 359, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */

  /* 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.BinnedProfile2D._local_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_24set, "BinnedProfile2D.set(self, *args)\nSet bin with Dbn3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_25set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_24set};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_25set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_24set(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_args);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_24set(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  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("set", 1);

  /* "include/generated/BinnedProfile2D.pyx":364
 *     def set(self, *args):
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content             # <<<<<<<<<<<<<<
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(23, 364, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 == 2);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 364, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 364, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":365
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
  __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "include/generated/BinnedProfile2D.pyx":366
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):
 *             self._local_set(*args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._global_set(*args)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_local_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 366, __pyx_L1_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/generated/BinnedProfile2D.pyx":365
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 *         if hasattr(args[0], "__iter__"):             # <<<<<<<<<<<<<<
 *             self._local_set(*args)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":368
 *             self._local_set(*args)
 *         else:
 *             self._global_set(*args)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_global_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 368, __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;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */

  /* 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_AddTraceback("yoda.core.BinnedProfile2D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_26reset, "BinnedProfile2D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_27reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_26reset};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_27reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_26reset(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_26reset(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_4;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_5;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/BinnedProfile2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":373
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 373, __pyx_L1_error)
    try {
      __pyx_t_2->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 373, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":372
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":375
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 375, __pyx_L1_error)
    try {
      __pyx_t_4->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 375, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().reset()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":377
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 377, __pyx_L1_error)
    try {
      __pyx_t_5->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 377, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":376
 *         if self._config == "di":
 *           return self.binned_di_ptr().reset()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 378, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":379
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 379, __pyx_L1_error)
    try {
      __pyx_t_6->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 379, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().reset()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 380, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":381
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 381, __pyx_L1_error)
    try {
      __pyx_t_7->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 381, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":380
 *         if self._config == "id":
 *           return self.binned_id_ptr().reset()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 382, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":383
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 383, __pyx_L1_error)
    try {
      __pyx_t_8->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 383, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":382
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().reset()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 384, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":385
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 385, __pyx_L1_error)
    try {
      __pyx_t_9->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 385, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":384
 *         if self._config == "is":
 *           return self.binned_is_ptr().reset()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":387
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 387, __pyx_L1_error)
    try {
      __pyx_t_10->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 387, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":386
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().reset()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 388, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":389
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 389, __pyx_L1_error)
    try {
      __pyx_t_11->reset();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 389, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":388
 *         if self._config == "si":
 *           return self.binned_si_ptr().reset()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":390
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().reset()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 390, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_28numBins, "BinnedProfile2D.numBins(self, includeOverflows=False, includeMaskedBins=False)\n() -> int\n        Number of bins in this BinnedProfile.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_29numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_28numBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_29numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 394, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 394, __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, "numBins") < 0)) __PYX_ERR(23, 394, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBins", 0, 0, 2, __pyx_nargs); __PYX_ERR(23, 394, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_28numBins(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_28numBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 1);

  /* "include/generated/BinnedProfile2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 397, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":398
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 398, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 398, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 398, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 398, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":397
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":400
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 400, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 400, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 400, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 400, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":399
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 401, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":402
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 402, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 402, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 402, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 402, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":401
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":404
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 404, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 404, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 404, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 404, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":403
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":406
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 406, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 406, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 406, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":405
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":408
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 408, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 408, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 408, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":407
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":410
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 410, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 410, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 410, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":409
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 411, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":412
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 412, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 412, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 412, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->numBins(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 412, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":411
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":414
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 414, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 414, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 414, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->numBins(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 414, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":413
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBins(includeOverflows, includeMaskedBins)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":415
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBins(includeOverflows, includeMaskedBins)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 415, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */

  /* 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.BinnedProfile2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_30isMasked, "BinnedProfile2D.isMasked(self, index)\nCheck if bin with index is masked.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_31isMasked = {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_30isMasked};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_31isMasked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isMasked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 418, __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, "isMasked") < 0)) __PYX_ERR(23, 418, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isMasked", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.isMasked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_30isMasked(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_30isMasked(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isMasked", 1);

  /* "include/generated/BinnedProfile2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":421
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 421, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 421, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 421, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":420
 *     def isMasked(self, index):
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 422, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":423
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 423, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 423, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 423, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":422
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isMasked(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 424, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":425
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 425, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 425, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 425, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":424
 *         if self._config == "di":
 *           return self.binned_di_ptr().isMasked(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":427
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 427, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 427, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 427, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":426
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isMasked(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 428, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":429
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 429, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 429, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 429, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":428
 *         if self._config == "id":
 *           return self.binned_id_ptr().isMasked(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 430, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":431
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 431, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 431, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 431, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":430
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isMasked(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":433
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 433, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 433, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 433, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":432
 *         if self._config == "is":
 *           return self.binned_is_ptr().isMasked(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 434, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":435
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 435, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 435, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 435, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":434
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isMasked(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 436, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":437
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 437, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 437, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isMasked(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 437, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":436
 *         if self._config == "si":
 *           return self.binned_si_ptr().isMasked(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":438
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isMasked(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 438, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_32isVisible, "BinnedProfile2D.isVisible(self, index)\nCheck if bin with index is visible.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_33isVisible = {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_32isVisible};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_33isVisible(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVisible (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,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_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 441, __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, "isVisible") < 0)) __PYX_ERR(23, 441, __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_index = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVisible", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 441, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.isVisible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_32isVisible(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_index);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_32isVisible(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVisible", 1);

  /* "include/generated/BinnedProfile2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 443, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":444
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 444, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 444, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 444, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":443
 *     def isVisible(self, index):
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 445, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":446
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 446, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 446, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 446, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":445
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().isVisible(index)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 447, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":448
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 448, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 448, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 448, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":447
 *         if self._config == "di":
 *           return self.binned_di_ptr().isVisible(index)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 449, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":450
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 450, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 450, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 450, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":449
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().isVisible(index)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":452
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 452, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":451
 *         if self._config == "id":
 *           return self.binned_id_ptr().isVisible(index)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":454
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 454, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":453
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().isVisible(index)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 455, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":456
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 456, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 456, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 456, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":455
 *         if self._config == "is":
 *           return self.binned_is_ptr().isVisible(index)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 457, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":458
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 458, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 458, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":457
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().isVisible(index)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 459, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":460
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 460, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 460, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->isVisible(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 460, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":459
 *         if self._config == "si":
 *           return self.binned_si_ptr().isVisible(index)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":461
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().isVisible(index)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 461, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_34binDim, "BinnedProfile2D.binDim(self)\nReturn binning dimension.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_35binDim = {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_34binDim};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_35binDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("binDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "binDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_34binDim(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_34binDim(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binDim", 1);

  /* "include/generated/BinnedProfile2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 466, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":467
 *         """Return binning dimension."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 467, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 467, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":466
 *     def binDim(self):
 *         """Return binning dimension."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 468, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":469
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 469, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 469, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":468
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().binDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":471
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 471, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 471, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":470
 *         if self._config == "di":
 *           return self.binned_di_ptr().binDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 472, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":473
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 473, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 473, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":472
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().binDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 474, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":475
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 475, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 475, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":474
 *         if self._config == "id":
 *           return self.binned_id_ptr().binDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 476, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":477
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 477, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 477, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":476
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().binDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 478, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":479
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 479, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 479, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":478
 *         if self._config == "is":
 *           return self.binned_is_ptr().binDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 480, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":481
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 481, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 481, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":480
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().binDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 482, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":483
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 483, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->binDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 483, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":482
 *         if self._config == "si":
 *           return self.binned_si_ptr().binDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":484
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().binDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 484, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.binDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_36__len__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_4yoda_4core_15BinnedProfile2D_36__len__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  unsigned 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__", 1);

  /* "include/generated/BinnedProfile2D.pyx":488
 * 
 *     def __len__(self):
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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, 488, __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(23, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":487
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         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.BinnedProfile2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_38bins, "BinnedProfile2D.bins(self, includeOverflows=False, includeMaskedBins=False)\nAccess the list of bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_39bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_38bins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_39bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 490, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 490, __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, "bins") < 0)) __PYX_ERR(23, 490, __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_includeOverflows = values[0];
    __pyx_v_includeMaskedBins = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bins", 0, 0, 2, __pyx_nargs); __PYX_ERR(23, 490, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_38bins(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_38bins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  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;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 1);

  /* "include/generated/BinnedProfile2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __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(23, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 492, __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_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(23, 492, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(23, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 492, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(23, 492, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_7(__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(23, 492, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(23, 493, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      goto __pyx_L7_next_and;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isVisible); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(23, 493, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_L7_next_and:;

    /* "include/generated/BinnedProfile2D.pyx":494
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])             # <<<<<<<<<<<<<<
 * 
 *     def _bin(self, size_t i):
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(23, 494, __pyx_L1_error)
    if (!__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(23, 494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = (!__pyx_t_9);
    __pyx_t_8 = __pyx_t_13;
    __pyx_L6_bool_binop_done:;

    /* "include/generated/BinnedProfile2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    if (__pyx_t_8) {

      /* "include/generated/BinnedProfile2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 492, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_i};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(23, 492, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":493
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 *                                        if (includeOverflows or self.isVisible(i)) \             # <<<<<<<<<<<<<<
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 */
    }

    /* "include/generated/BinnedProfile2D.pyx":492
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_12 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_12 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
    __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(23, 492, __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/generated/BinnedProfile2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */

  /* 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_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.bins", __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/generated/BinnedProfile2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_41_bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_40_bin, "BinnedProfile2D._bin(self, size_t i)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_41_bin = {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_40_bin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_41_bin(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 496, __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(23, 496, __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(23, 496, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 496, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_40_bin(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_40_bin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_st = 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;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_7;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_8;
  std::vector<size_t>  __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_11;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_12;
  std::vector<size_t>  __pyx_t_13;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_14;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_17;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_18;
  std::vector<size_t>  __pyx_t_19;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_20;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_21;
  std::vector<size_t>  __pyx_t_22;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_23;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_24;
  std::vector<size_t>  __pyx_t_25;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_26;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_27;
  std::vector<size_t>  __pyx_t_28;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_29;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_30;
  std::vector<size_t>  __pyx_t_31;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_32;
  __Pyx_FakeReference<YODA::Dbn3D> __pyx_t_33;
  std::vector<size_t>  __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bin", 1);

  /* "include/generated/BinnedProfile2D.pyx":498
 *     def _bin(self, size_t i):
 *         """Access the i'th bin."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn3D)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":499
 *         """Access the i'th bin."""
 *         rtn = None
 *         st = self.isMasked(i)             # <<<<<<<<<<<<<<
 *         b = Bin2D(Dbn3D)
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isMasked); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(23, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_st = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedProfile2D.pyx":500
 *         rtn = None
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn3D)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_Bin2D(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_b = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/BinnedProfile2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn3D)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 501, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":502
 *         b = Bin2D(Dbn3D)
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 502, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 502, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_8), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":503
 *         if self._config == "dd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 503, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_7->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 503, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(23, 503, __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/generated/BinnedProfile2D.pyx":501
 *         st = self.isMasked(i)
 *         b = Bin2D(Dbn3D)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 504, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":505
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 505, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 505, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_12), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":506
 *         elif self._config == "di":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 506, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_11->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 506, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 506, __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/generated/BinnedProfile2D.pyx":504
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_dd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_dd_ptr()._global2local(i), st)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 507, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":508
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 508, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 508, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_15), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":509
 *         elif self._config == "ds":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 509, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_14->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 509, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(23, 509, __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/generated/BinnedProfile2D.pyx":507
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_di_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_di_ptr()._global2local(i), st)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 510, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":511
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 511, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 511, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_18), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":512
 *         elif self._config == "id":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 512, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_17->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 512, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_19); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 512, __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/generated/BinnedProfile2D.pyx":510
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ds_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ds_ptr()._global2local(i), st)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 513, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":514
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 514, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 514, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_21), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":515
 *         elif self._config == "ii":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 515, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_20->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 515, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_22); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(23, 515, __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/generated/BinnedProfile2D.pyx":513
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_id_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_id_ptr()._global2local(i), st)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 516, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":517
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 */
    __pyx_t_23 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 517, __pyx_L1_error)
    try {
      __pyx_t_24 = __pyx_t_23->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 517, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_24), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":518
 *         elif self._config == "is":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_23 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_23 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 518, __pyx_L1_error)
    try {
      __pyx_t_25 = __pyx_t_23->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 518, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_25); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 518, __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/generated/BinnedProfile2D.pyx":516
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ii_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ii_ptr()._global2local(i), st)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 519, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":520
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 */
    __pyx_t_26 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 520, __pyx_L1_error)
    try {
      __pyx_t_27 = __pyx_t_26->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 520, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_27), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":521
 *         elif self._config == "sd":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_26 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_26 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 521, __pyx_L1_error)
    try {
      __pyx_t_28 = __pyx_t_26->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 521, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_28); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(23, 521, __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/generated/BinnedProfile2D.pyx":519
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_is_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_is_ptr()._global2local(i), st)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 522, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":523
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 */
    __pyx_t_29 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 523, __pyx_L1_error)
    try {
      __pyx_t_30 = __pyx_t_29->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 523, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_30), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":524
 *         elif self._config == "si":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_29 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_29 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 524, __pyx_L1_error)
    try {
      __pyx_t_31 = __pyx_t_29->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 524, __pyx_L1_error)
    }
    __pyx_t_3 = __pyx_convert_vector_to_py_size_t(__pyx_t_31); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_4, __pyx_t_3, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 524, __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/generated/BinnedProfile2D.pyx":522
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_sd_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_sd_ptr()._global2local(i), st)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 525, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "include/generated/BinnedProfile2D.pyx":526
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)             # <<<<<<<<<<<<<<
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 */
    __pyx_t_32 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 526, __pyx_L1_error)
    try {
      __pyx_t_33 = __pyx_t_32->bin(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 526, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_f_4yoda_4util_new_borrowed_cls(__pyx_v_b, (&__pyx_t_33), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/BinnedProfile2D.pyx":527
 *         elif self._config == "ss":
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)             # <<<<<<<<<<<<<<
 *         rtn.setBinning(self._binning)
 *         return rtn
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setIndices); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_32 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_32 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 527, __pyx_L1_error)
    try {
      __pyx_t_34 = __pyx_t_32->_global2local(__pyx_v_i);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 527, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_34); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_v_st};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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(23, 527, __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/generated/BinnedProfile2D.pyx":525
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_si_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_si_ptr()._global2local(i), st)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":528
 *           rtn = cutil.new_borrowed_cls(b, &self.binned_ss_ptr().bin(i), self)
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setBinning); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->_binning};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 528, __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/generated/BinnedProfile2D.pyx":529
 *           rtn.setIndices(i, self.binned_ss_ptr()._global2local(i), st)
 *         rtn.setBinning(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, *indices):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */

  /* 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_10);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_st);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_42bin, "BinnedProfile2D.bin(self, *indices)\nAccess the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_43bin = {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_42bin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_43bin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_indices = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bin", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_indices = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_42bin(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_indices);

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_42bin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_indices) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 1);

  /* "include/generated/BinnedProfile2D.pyx":533
 *     def bin(self, *indices):
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(23, 533, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 533, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 533, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":534
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)             # <<<<<<<<<<<<<<
 *         return self._bin(idx)
 * 
 */
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(23, 534, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 == 1);
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_indices, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_indices, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_v_idx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile2D.pyx":535
 *         assert(len(indices)) # Gotta at least provide one index
 *         idx = indices[0] if len(indices) == 1 else self.localToGlobalIndex(*indices)
 *         return self._bin(idx)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_idx};
    __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(23, 535, __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/generated/BinnedProfile2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */

  /* 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.BinnedProfile2D.bin", __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;
}

/* "include/generated/BinnedProfile2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_44binAt, "BinnedProfile2D.binAt(self, x, y)\nAccess the coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_45binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_44binAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_45binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 537, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 537, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, 1); __PYX_ERR(23, 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, "binAt") < 0)) __PYX_ERR(23, 537, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 537, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_44binAt(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_44binAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 1);

  /* "include/generated/BinnedProfile2D.pyx":539
 *     def binAt(self, x, y):
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )             # <<<<<<<<<<<<<<
 * 
 *     def maskBin(self, idx, status = True):
 */
  __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(23, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(23, 539, __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
  if (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;
    }
  }
  #endif
  {
    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(23, 539, __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/generated/BinnedProfile2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_46maskBin, "BinnedProfile2D.maskBin(self, idx, status=True)\nMask/Unmask bin the i'th bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_47maskBin = {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_46maskBin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_47maskBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 541, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 541, __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, "maskBin") < 0)) __PYX_ERR(23, 541, __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_idx = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBin", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maskBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_46maskBin(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_46maskBin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  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::BinnedProfile2D<double,double>  *__pyx_t_5;
  size_t __pyx_t_6;
  bool __pyx_t_7;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBin", 0);
  __Pyx_INCREF(__pyx_v_idx);

  /* "include/generated/BinnedProfile2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  __pyx_t_1 = PyList_Check(__pyx_v_idx); 
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":544
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_localToGlobalIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 544, __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_idx, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":543
 *     def maskBin(self, idx, status = True):
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):             # <<<<<<<<<<<<<<
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":546
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 546, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 546, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 546, __pyx_L1_error)
    try {
      __pyx_t_5->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 546, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":545
 *         if isinstance(idx, list):
 *             idx = self.localToGlobalIndex(*idx)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 547, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":548
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 548, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 548, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 548, __pyx_L1_error)
    try {
      __pyx_t_8->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 548, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskBin(idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 549, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":550
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 550, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 550, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 550, __pyx_L1_error)
    try {
      __pyx_t_9->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 550, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":549
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskBin(idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 551, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":552
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 552, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 552, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 552, __pyx_L1_error)
    try {
      __pyx_t_10->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 552, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":551
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskBin(idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 553, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":554
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 554, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 554, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 554, __pyx_L1_error)
    try {
      __pyx_t_11->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 554, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":553
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskBin(idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 555, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":556
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 556, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 556, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 556, __pyx_L1_error)
    try {
      __pyx_t_12->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 556, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":555
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskBin(idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 557, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":558
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 558, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 558, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 558, __pyx_L1_error)
    try {
      __pyx_t_13->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 558, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":557
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskBin(idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 559, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":560
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 560, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 560, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 560, __pyx_L1_error)
    try {
      __pyx_t_14->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 560, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":559
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskBin(idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 561, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":562
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBins(self, index_list, status = True):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 562, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 562, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 562, __pyx_L1_error)
    try {
      __pyx_t_15->maskBin(__pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 562, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":561
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskBin(idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */

  /* 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.BinnedProfile2D.maskBin", __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;
}

/* "include/generated/BinnedProfile2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_48maskBins, "BinnedProfile2D.maskBins(self, index_list, status=True)\nMask/Unmask serval bins..");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_49maskBins = {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_48maskBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_49maskBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index_list = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_list,&__pyx_n_s_status,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_index_list)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 564, __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_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 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, "maskBins") < 0)) __PYX_ERR(23, 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);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_index_list = values[0];
    __pyx_v_status = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBins", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maskBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_48maskBins(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_index_list, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_48maskBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_index_list, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBins", 1);

  /* "include/generated/BinnedProfile2D.pyx":566
 *     def maskBins(self, index_list, status = True):
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index             # <<<<<<<<<<<<<<
 *         for idx in index_list:
 *             self.maskBin(idx, status)
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = PyObject_Length(__pyx_v_index_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(23, 566, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_1 != 0);
    if (unlikely(!__pyx_t_2)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 566, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 566, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_index_list)) || PyTuple_CheckExact(__pyx_v_index_list)) {
    __pyx_t_3 = __pyx_v_index_list; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 567, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(23, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 567, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(23, 567, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(23, 567, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":568
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:
 *             self.maskBin(idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def maskBinAt(self, x, y, status = True):
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_idx, __pyx_v_status};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":567
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 *         for idx in index_list:             # <<<<<<<<<<<<<<
 *             self.maskBin(idx, status)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/BinnedProfile2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maskBins", __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;
}

/* "include/generated/BinnedProfile2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_50maskBinAt, "BinnedProfile2D.maskBinAt(self, x, y, status=True)\nMask/Unmask bin at the set of coords.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_51maskBinAt = {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_50maskBinAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_51maskBinAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskBinAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 570, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 570, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, 1); __PYX_ERR(23, 570, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 570, __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, "maskBinAt") < 0)) __PYX_ERR(23, 570, __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_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskBinAt", 0, 2, 3, __pyx_nargs); __PYX_ERR(23, 570, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_50maskBinAt(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_50maskBinAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_status) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskBinAt", 1);

  /* "include/generated/BinnedProfile2D.pyx":572
 *     def maskBinAt(self, x, y, status = True):
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )             # <<<<<<<<<<<<<<
 * 
 *     def maskSlice(self, dim, idx, status = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maskBin); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(23, 572, __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
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_status};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__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(23, 572, __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/generated/BinnedProfile2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */

  /* 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.BinnedProfile2D.maskBinAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_52maskSlice, "BinnedProfile2D.maskSlice(self, dim, idx, status=True)\nMask/Unmask a slice at idx along axis dim.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_53maskSlice = {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_52maskSlice};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_53maskSlice(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskSlice (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_idx,&__pyx_n_s_status,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 574, __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_idx)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 574, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, 1); __PYX_ERR(23, 574, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 574, __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, "maskSlice") < 0)) __PYX_ERR(23, 574, __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_dim = values[0];
    __pyx_v_idx = values[1];
    __pyx_v_status = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maskSlice", 0, 2, 3, __pyx_nargs); __PYX_ERR(23, 574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_52maskSlice(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_idx, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_52maskSlice(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_idx, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskSlice", 1);

  /* "include/generated/BinnedProfile2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 576, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":577
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 577, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 577, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 577, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 577, __pyx_L1_error)
    try {
      __pyx_t_2->maskSlice(__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(23, 577, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":576
 *     def maskSlice(self, dim, idx, status = True):
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":579
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 579, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 579, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 579, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 579, __pyx_L1_error)
    try {
      __pyx_t_7->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 579, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":578
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":581
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 581, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 581, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 581, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 581, __pyx_L1_error)
    try {
      __pyx_t_8->maskSlice(__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(23, 581, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":580
 *         elif self._config == "di":
 *           return self.binned_di_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 582, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":583
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 583, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 583, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 583, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 583, __pyx_L1_error)
    try {
      __pyx_t_9->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 583, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":582
 *         elif self._config == "ds":
 *           return self.binned_ds_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 584, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":585
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 585, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 585, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 585, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 585, __pyx_L1_error)
    try {
      __pyx_t_10->maskSlice(__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(23, 585, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":584
 *         elif self._config == "id":
 *           return self.binned_id_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 586, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":587
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 587, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 587, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 587, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 587, __pyx_L1_error)
    try {
      __pyx_t_11->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 587, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":586
 *         elif self._config == "ii":
 *           return self.binned_ii_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 588, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":589
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 589, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 589, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 589, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 589, __pyx_L1_error)
    try {
      __pyx_t_12->maskSlice(__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(23, 589, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":588
 *         elif self._config == "is":
 *           return self.binned_is_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 590, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":591
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 591, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 591, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 591, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 591, __pyx_L1_error)
    try {
      __pyx_t_13->maskSlice(__pyx_t_4, __pyx_t_3, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 591, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":590
 *         elif self._config == "sd":
 *           return self.binned_sd_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 592, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":593
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 593, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 593, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 593, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_status); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 593, __pyx_L1_error)
    try {
      __pyx_t_14->maskSlice(__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(23, 593, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":592
 *         elif self._config == "si":
 *           return self.binned_si_ptr().maskSlice(dim, idx, status)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.maskSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_55__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_54__getitem__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_54__getitem__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/BinnedProfile2D.pyx":596
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return self.bin(i)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 596, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(23, 596, __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(23, 596, __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(23, 596, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/BinnedProfile2D.pyx":597
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)             # <<<<<<<<<<<<<<
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 597, __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/generated/BinnedProfile2D.pyx":595
 *           return self.binned_ss_ptr().maskSlice(dim, idx, status)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return self.bin(i)
 */

  /* 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_8);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_56mkEstimate, "BinnedProfile2D.mkEstimate(self, str path='', str source='', divbyvol=True)\nNone -> Estimate.\n\n        Convert this BinnedProfile2D to an BinnedEstimate2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_57mkEstimate = {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_56mkEstimate};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_57mkEstimate(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_source = 0;
  PyObject *__pyx_v_divbyvol = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkEstimate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_source,&__pyx_n_s_divbyvol,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 599, __pyx_L3_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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 599, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_divbyvol);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 599, __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, "mkEstimate") < 0)) __PYX_ERR(23, 599, __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_path = ((PyObject*)values[0]);
    __pyx_v_source = ((PyObject*)values[1]);
    __pyx_v_divbyvol = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkEstimate", 0, 0, 3, __pyx_nargs); __PYX_ERR(23, 599, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.mkEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(23, 599, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), (&PyString_Type), 1, "source", 1))) __PYX_ERR(23, 599, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_56mkEstimate(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_path, __pyx_v_source, __pyx_v_divbyvol);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_56mkEstimate(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_source, PyObject *__pyx_v_divbyvol) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  bool __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  unsigned int __pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkEstimate", 1);

  /* "include/generated/BinnedProfile2D.pyx":603
 * 
 *         Convert this BinnedProfile2D to an BinnedEstimate2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":604
 *         Convert this BinnedProfile2D to an BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":605
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 605, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 605, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 605, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 605, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":606
 *         if self._config == "dd":
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":604
 *         Convert this BinnedProfile2D to an BinnedEstimate2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":607
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 607, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":608
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 608, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 608, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 608, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 608, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_7, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":609
 *         elif self._config == "di":
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":607
 *           tmp = c.BP_est_dd(self.binned_dd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":610
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 610, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":611
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 611, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 611, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 611, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 611, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":612
 *         elif self._config == "ds":
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":610
 *           tmp = c.BP_est_di(self.binned_di_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":613
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":614
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 614, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 614, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 614, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 614, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_9, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":615
 *         elif self._config == "id":
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":613
 *           tmp = c.BP_est_ds(self.binned_ds_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":616
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 616, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":617
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 617, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 617, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 617, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 617, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_10, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":618
 *         elif self._config == "ii":
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":616
 *           tmp = c.BP_est_id(self.binned_id_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":619
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 619, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":620
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 620, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 620, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 620, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 620, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_11, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":621
 *         elif self._config == "is":
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":619
 *           tmp = c.BP_est_ii(self.binned_ii_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":622
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":623
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 623, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 623, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 623, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 623, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_12, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":624
 *         elif self._config == "sd":
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":622
 *           tmp = c.BP_est_is(self.binned_is_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":625
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 625, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":626
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 626, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 626, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 626, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 626, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_13, __pyx_t_4, __pyx_t_3, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":627
 *         elif self._config == "si":
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":625
 *           tmp = c.BP_est_sd(self.binned_sd_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":628
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 628, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":629
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 629, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 629, __pyx_L1_error)
    __pyx_t_4 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 629, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_divbyvol); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 629, __pyx_L1_error)
    __pyx_v_tmp = cython_est(__pyx_t_14, __pyx_t_3, __pyx_t_4, __pyx_t_5);

    /* "include/generated/BinnedProfile2D.pyx":630
 *         elif self._config == "ss":
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/generated/BinnedProfile2D.pyx":628
 *           tmp = c.BP_est_si(self.binned_si_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":631
 *           tmp = c.BP_est_ss(self.binned_ss_ptr(), path, source, divbyvol)
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_15)) __PYX_ERR(23, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_16 = NULL;
  __pyx_t_17 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_15))) {
    __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15);
    if (likely(__pyx_t_16)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_16);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_15, function);
      __pyx_t_17 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_v_self->_binning};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_17, 1+__pyx_t_17);
    __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/BinnedProfile2D.pyx":632
 *           rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkHisto(self, str path = ""):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.mkEstimate", __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/generated/BinnedProfile2D.pyx":634
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto2D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_59mkHisto(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_58mkHisto, "BinnedProfile2D.mkHisto(self, str path='')\nNone -> BinnedHisto2D.\n\n        Convert this BinnedProfile2D to a BinnedHisto2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_59mkHisto = {"mkHisto", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_59mkHisto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_58mkHisto};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_59mkHisto(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkHisto (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__2));
    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_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 634, __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, "mkHisto") < 0)) __PYX_ERR(23, 634, __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_path = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkHisto", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 634, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.mkHisto", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(23, 634, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_58mkHisto(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_58mkHisto(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  unsigned int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkHisto", 1);

  /* "include/generated/BinnedProfile2D.pyx":638
 * 
 *         Convert this BinnedProfile2D to a BinnedHisto2D."""
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":639
 *         Convert this BinnedProfile2D to a BinnedHisto2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 639, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":640
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 640, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 640, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_2, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":641
 *         if self._config == "dd":
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 641, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":639
 *         Convert this BinnedProfile2D to a BinnedHisto2D."""
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":642
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 642, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":643
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 643, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 643, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_5, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":644
 *         elif self._config == "di":
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":642
 *           tmp = c.BP_hist_dd(self.binned_dd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":645
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 645, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":646
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 646, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 646, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_6, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":647
 *         elif self._config == "ds":
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":645
 *           tmp = c.BP_hist_di(self.binned_di_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":648
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 648, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":649
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 649, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 649, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_7, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":650
 *         elif self._config == "id":
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":648
 *           tmp = c.BP_hist_ds(self.binned_ds_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":651
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 651, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":652
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 652, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 652, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_8, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":653
 *         elif self._config == "ii":
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":651
 *           tmp = c.BP_hist_id(self.binned_id_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":654
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 654, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":655
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 655, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 655, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_9, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":656
 *         elif self._config == "is":
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":654
 *           tmp = c.BP_hist_ii(self.binned_ii_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":657
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 657, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":658
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 658, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 658, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_10, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":659
 *         elif self._config == "sd":
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 659, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":657
 *           tmp = c.BP_hist_is(self.binned_is_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":660
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 660, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":661
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 661, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 661, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_11, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":662
 *         elif self._config == "si":
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":660
 *           tmp = c.BP_hist_sd(self.binned_sd_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":663
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 663, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":664
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 664, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 664, __pyx_L1_error)
    __pyx_v_tmp = cython_hist(__pyx_t_12, __pyx_t_3);

    /* "include/generated/BinnedProfile2D.pyx":665
 *         elif self._config == "ss":
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 665, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/BinnedProfile2D.pyx":663
 *           tmp = c.BP_hist_si(self.binned_si_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 */
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":666
 *           tmp = c.BP_hist_ss(self.binned_ss_ptr(), path)
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = NULL;
  __pyx_t_15 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_13))) {
    __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
    if (likely(__pyx_t_14)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
      __Pyx_INCREF(__pyx_t_14);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_13, function);
      __pyx_t_15 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15);
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile2D.pyx":667
 *           rtn = cutil.new_owned_cls(BinnedHisto2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":634
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto2D.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.mkHisto", __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/generated/BinnedProfile2D.pyx":669
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_61mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_60mkScatter, "BinnedProfile2D.mkScatter(self, path='', binwidthdiv=True, useFocus=False, includeOverflows=False, includeMaskedBins=False)\nNone -> Scatter3D.\n\n        Make a new Scatter3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_61mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_61mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_60mkScatter};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_61mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_binwidthdiv = 0;
  PyObject *__pyx_v_useFocus = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_binwidthdiv,&__pyx_n_s_useFocus,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 669, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 669, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_useFocus);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 669, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeOverflows);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 669, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 669, __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(23, 669, __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);
        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_path = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_useFocus = values[2];
    __pyx_v_includeOverflows = values[3];
    __pyx_v_includeMaskedBins = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 5, __pyx_nargs); __PYX_ERR(23, 669, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_60mkScatter(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_path, __pyx_v_binwidthdiv, __pyx_v_useFocus, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_60mkScatter(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_useFocus, PyObject *__pyx_v_includeOverflows, PyObject *__pyx_v_includeMaskedBins) {
  YODA::Scatter3D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::string __pyx_t_3;
  bool __pyx_t_4;
  bool __pyx_t_5;
  bool __pyx_t_6;
  bool __pyx_t_7;
  YODA::Scatter3D __pyx_t_8;
  YODA::Scatter3D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_14;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/BinnedProfile2D.pyx":673
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 673, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":674
 *         Make a new Scatter3D."""
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 */
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 674, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 674, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 674, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 674, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 674, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 674, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 674, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":675
 *         if self._config == "dd":
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 675, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 675, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":673
 * 
 *         Make a new Scatter3D."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":676
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 676, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":677
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 677, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 677, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 677, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 677, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 677, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 677, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_11->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 677, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":678
 *         elif self._config == "di":
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 678, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 678, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":676
 *           s = <c.Scatter3D> self.binned_dd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":679
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 679, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":680
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 680, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 680, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 680, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 680, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 680, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 680, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_12->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 680, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":681
 *         elif self._config == "ds":
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 681, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":679
 *           s = <c.Scatter3D> self.binned_di_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":682
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 682, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":683
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 683, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 683, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 683, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 683, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 683, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 683, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_13->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 683, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":684
 *         elif self._config == "id":
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 684, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":682
 *           s = <c.Scatter3D> self.binned_ds_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":685
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 685, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":686
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 686, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 686, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 686, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 686, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 686, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 686, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 686, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":687
 *         elif self._config == "ii":
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 687, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":685
 *           s = <c.Scatter3D> self.binned_id_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":688
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 688, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":689
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 689, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 689, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 689, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 689, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 689, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 689, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_15->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 689, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":690
 *         elif self._config == "is":
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 690, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 690, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":688
 *           s = <c.Scatter3D> self.binned_ii_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":691
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 691, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":692
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 692, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 692, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 692, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 692, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 692, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 692, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_16->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 692, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":693
 *         elif self._config == "sd":
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 693, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":691
 *           s = <c.Scatter3D> self.binned_is_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":694
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 694, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":695
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 695, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 695, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 695, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 695, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 695, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 695, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_17->mkScatter(__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 695, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":696
 *         elif self._config == "si":
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 696, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 696, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":694
 *           s = <c.Scatter3D> self.binned_sd_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":697
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 697, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":698
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)             # <<<<<<<<<<<<<<
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 698, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 698, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 698, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_useFocus); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 698, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 698, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_includeMaskedBins); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 698, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_18->mkScatter(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 698, __pyx_L1_error)
    }
    __pyx_v_s = ((YODA::Scatter3D)__pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":699
 *         elif self._config == "ss":
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(BinnedProfile2D self, BinnedProfile2D other, efficiency=False):
 */
    __Pyx_XDECREF(__pyx_r);
    try {
      __pyx_t_9 = __pyx_v_s.newclone();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 699, __pyx_L1_error)
    }
    __pyx_t_10 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":697
 *           s = <c.Scatter3D> self.binned_si_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           s = <c.Scatter3D> self.binned_ss_ptr().mkScatter(path,binwidthdiv,useFocus,includeOverflows,includeMaskedBins)
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":669
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */

  /* 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.BinnedProfile2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":701
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedProfile2D self, BinnedProfile2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile2D -> BinnedEstimate2D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_63divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_62divideBy, "BinnedProfile2D.divideBy(self, BinnedProfile2D other, efficiency=False)\nBinnedProfile2D -> BinnedEstimate2D\n\n        Divide this BinnedProfile2D by other,\n        returning a BinnedEstimate2D.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_63divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_63divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_62divideBy};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_63divideBy(PyObject *__pyx_v_self, 
#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_BinnedProfile2D *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 701, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 701, __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(23, 701, __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_BinnedProfile2D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 701, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.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_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 701, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_62divideBy(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_62divideBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  PyObject *__pyx_v_rtn = NULL;
  YODA::AnalysisObject *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  unsigned int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 1);

  /* "include/generated/BinnedProfile2D.pyx":707
 *         returning a BinnedEstimate2D.
 *         """
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if efficiency:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 707, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 707, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 707, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":708
 *         """
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if efficiency:
 *           if self._config == "dd":
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":709
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 709, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":710
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 710, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":711
 *         if efficiency:
 *           if self._config == "dd":
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 711, __pyx_L1_error)
      __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 711, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_2, __pyx_t_3);

      /* "include/generated/BinnedProfile2D.pyx":712
 *           if self._config == "dd":
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 712, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":710
 *         rtn = None
 *         if efficiency:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":713
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 713, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":714
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 714, __pyx_L1_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 714, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_5, __pyx_t_6);

      /* "include/generated/BinnedProfile2D.pyx":715
 *           elif self._config == "di":
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":713
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":716
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 716, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":717
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 717, __pyx_L1_error)
      __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 717, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_7, __pyx_t_8);

      /* "include/generated/BinnedProfile2D.pyx":718
 *           elif self._config == "ds":
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 718, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":716
 *             tmp = c.BP_eff_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":719
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 719, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":720
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 720, __pyx_L1_error)
      __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 720, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_9, __pyx_t_10);

      /* "include/generated/BinnedProfile2D.pyx":721
 *           elif self._config == "id":
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 721, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":719
 *             tmp = c.BP_eff_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":722
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 722, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":723
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 723, __pyx_L1_error)
      __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 723, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_11, __pyx_t_12);

      /* "include/generated/BinnedProfile2D.pyx":724
 *           elif self._config == "ii":
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 724, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":722
 *             tmp = c.BP_eff_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":725
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 725, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":726
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 726, __pyx_L1_error)
      __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 726, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_13, __pyx_t_14);

      /* "include/generated/BinnedProfile2D.pyx":727
 *           elif self._config == "is":
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 727, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":725
 *             tmp = c.BP_eff_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":728
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 728, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":729
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 729, __pyx_L1_error)
      __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 729, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_15, __pyx_t_16);

      /* "include/generated/BinnedProfile2D.pyx":730
 *           elif self._config == "sd":
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 730, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":728
 *             tmp = c.BP_eff_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":731
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 731, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":732
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 732, __pyx_L1_error)
      __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 732, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_17, __pyx_t_18);

      /* "include/generated/BinnedProfile2D.pyx":733
 *           elif self._config == "si":
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BP_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 733, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":731
 *             tmp = c.BP_eff_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L4;
    }

    /* "include/generated/BinnedProfile2D.pyx":734
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 734, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":735
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BP_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 */
      __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 735, __pyx_L1_error)
      __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 735, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_19, __pyx_t_20);

      /* "include/generated/BinnedProfile2D.pyx":736
 *           elif self._config == "ss":
 *             tmp = c.BP_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         else:
 *           if self._config == "dd":
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":734
 *             tmp = c.BP_eff_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_eff_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L4:;

    /* "include/generated/BinnedProfile2D.pyx":709
 *         assert(self._config == other._config)
 *         rtn = None
 *         if efficiency:             # <<<<<<<<<<<<<<
 *           if self._config == "dd":
 *             tmp = c.BP_eff_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":738
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
  /*else*/ {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 738, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":739
 *         else:
 *           if self._config == "dd":
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 */
      __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 739, __pyx_L1_error)
      __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 739, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_3, __pyx_t_2);

      /* "include/generated/BinnedProfile2D.pyx":740
 *           if self._config == "dd":
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "di":
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":738
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         else:
 *           if self._config == "dd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":741
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 741, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":742
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 */
      __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 742, __pyx_L1_error)
      __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 742, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_6, __pyx_t_5);

      /* "include/generated/BinnedProfile2D.pyx":743
 *           elif self._config == "di":
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ds":
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 743, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":741
 *             tmp = c.BP_div_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "di":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":744
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 744, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":745
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 */
      __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 745, __pyx_L1_error)
      __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 745, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_8, __pyx_t_7);

      /* "include/generated/BinnedProfile2D.pyx":746
 *           elif self._config == "ds":
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "id":
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 746, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":744
 *             tmp = c.BP_div_di(self.binned_di_ptr(), other.binned_di_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ds":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":747
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 747, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":748
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 */
      __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 748, __pyx_L1_error)
      __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 748, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_10, __pyx_t_9);

      /* "include/generated/BinnedProfile2D.pyx":749
 *           elif self._config == "id":
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ii":
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 749, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":747
 *             tmp = c.BP_div_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "id":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":750
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 750, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":751
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 */
      __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 751, __pyx_L1_error)
      __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 751, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_12, __pyx_t_11);

      /* "include/generated/BinnedProfile2D.pyx":752
 *           elif self._config == "ii":
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "is":
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":750
 *             tmp = c.BP_div_id(self.binned_id_ptr(), other.binned_id_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ii":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":753
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 753, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":754
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 */
      __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 754, __pyx_L1_error)
      __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 754, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_14, __pyx_t_13);

      /* "include/generated/BinnedProfile2D.pyx":755
 *           elif self._config == "is":
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "sd":
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 755, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":753
 *             tmp = c.BP_div_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "is":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":756
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 756, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":757
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 */
      __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 757, __pyx_L1_error)
      __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 757, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_16, __pyx_t_15);

      /* "include/generated/BinnedProfile2D.pyx":758
 *           elif self._config == "sd":
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "si":
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 758, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":756
 *             tmp = c.BP_div_is(self.binned_is_ptr(), other.binned_is_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "sd":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":759
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 759, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":760
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 */
      __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 760, __pyx_L1_error)
      __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 760, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_18, __pyx_t_17);

      /* "include/generated/BinnedProfile2D.pyx":761
 *           elif self._config == "si":
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *           elif self._config == "ss":
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 761, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":759
 *             tmp = c.BP_div_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "si":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
      goto __pyx_L5;
    }

    /* "include/generated/BinnedProfile2D.pyx":762
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 762, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "include/generated/BinnedProfile2D.pyx":763
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 */
      __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 763, __pyx_L1_error)
      __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 763, __pyx_L1_error)
      __pyx_v_tmp = cython_div(__pyx_t_20, __pyx_t_19);

      /* "include/generated/BinnedProfile2D.pyx":764
 *           elif self._config == "ss":
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
      __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D), __pyx_v_tmp); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 764, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":762
 *             tmp = c.BP_div_si(self.binned_si_ptr(), other.binned_si_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *           elif self._config == "ss":             # <<<<<<<<<<<<<<
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 */
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":765
 *             tmp = c.BP_div_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_21)) __PYX_ERR(23, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_22 = NULL;
  __pyx_t_23 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_21))) {
    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_21);
    if (likely(__pyx_t_22)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
      __Pyx_INCREF(__pyx_t_22);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_21, function);
      __pyx_t_23 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_self->_binning};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_23, 1+__pyx_t_23);
    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/BinnedProfile2D.pyx":766
 *             rtn = cutil.new_owned_cls(BinnedEstimate2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __div__(BinnedProfile2D self, BinnedProfile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":701
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedProfile2D self, BinnedProfile2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile2D -> BinnedEstimate2D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.divideBy", __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/generated/BinnedProfile2D.pyx":768
 *         return rtn
 * 
 *     def __div__(BinnedProfile2D self, BinnedProfile2D 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_15BinnedProfile2D_65__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_65__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 768, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_64__div__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_64__div__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 1);

  /* "include/generated/BinnedProfile2D.pyx":769
 * 
 *     def __div__(BinnedProfile2D self, BinnedProfile2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(BinnedProfile2D self, BinnedProfile2D 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(23, 769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(23, 769, __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/generated/BinnedProfile2D.pyx":768
 *         return rtn
 * 
 *     def __div__(BinnedProfile2D self, BinnedProfile2D 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.BinnedProfile2D.__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/generated/BinnedProfile2D.pyx":771
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_67__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_67__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 771, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_66__truediv__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_66__truediv__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 1);

  /* "include/generated/BinnedProfile2D.pyx":772
 * 
 *     def __truediv__(BinnedProfile2D self, BinnedProfile2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __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(23, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(23, 772, __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/generated/BinnedProfile2D.pyx":771
 *         return self.divideBy(other)
 * 
 *     def __truediv__(BinnedProfile2D self, BinnedProfile2D 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.BinnedProfile2D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":774
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_69_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_15BinnedProfile2D_68_mknp, "BinnedProfile2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_69_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_69_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_68_mknp};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_69_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 774, __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(23, 774, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 774, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_68_mknp(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_68_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/BinnedProfile2D.pyx":775
 * 
 *     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/generated/BinnedProfile2D.pyx":776
 *     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(23, 776, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/BinnedProfile2D.pyx":777
 *         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(23, 777, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(23, 777, __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/generated/BinnedProfile2D.pyx":775
 * 
 *     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/generated/BinnedProfile2D.pyx":778
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.BinnedProfile2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(23, 778, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/BinnedProfile2D.pyx":779
 *             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/generated/BinnedProfile2D.pyx":775
 * 
 *     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/generated/BinnedProfile2D.pyx":774
 *         return self.divideBy(other)
 * 
 *     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.BinnedProfile2D._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/generated/BinnedProfile2D.pyx":782
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_71lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_70lengthContent, "BinnedProfile2D.lengthContent(self, fixed_length=False)\nLength of serialisation data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_71lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_71lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_70lengthContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_71lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 782, __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, "lengthContent") < 0)) __PYX_ERR(23, 782, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 782, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_70lengthContent(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_70lengthContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/BinnedProfile2D.pyx":784
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 784, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":785
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 785, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 785, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 785, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":784
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":786
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 786, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":787
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 787, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 787, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 787, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":786
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":788
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 788, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":789
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 789, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 789, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 789, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 789, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":788
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":790
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 790, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":791
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 791, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 791, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 791, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":790
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":792
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 792, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":793
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 793, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 793, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 793, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":792
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":794
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 794, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":795
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 795, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 795, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 795, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":794
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":796
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 796, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":797
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 797, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 797, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 797, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":796
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":798
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 798, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":799
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 799, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 799, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 799, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":798
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":800
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 800, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":801
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 801, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 801, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->lengthContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 801, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":800
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":802
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 802, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":782
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_73serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_72serializeContent, "BinnedProfile2D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_73serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_73serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_72serializeContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_73serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 804, __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, "serializeContent") < 0)) __PYX_ERR(23, 804, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 804, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_72serializeContent(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_72serializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/BinnedProfile2D.pyx":806
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 806, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":807
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 807, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 807, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 807, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":806
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":808
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 808, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":809
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 809, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 809, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 809, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":808
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeContent(fixed_length)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":810
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 810, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":811
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 811, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 811, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 811, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":810
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeContent(fixed_length)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":812
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 812, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":813
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 813, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 813, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 813, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":812
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeContent(fixed_length)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":814
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 814, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":815
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 815, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 815, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 815, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":814
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeContent(fixed_length)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":816
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 816, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":817
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 817, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 817, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 817, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":816
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeContent(fixed_length)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":818
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 818, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":819
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 819, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 819, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 819, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 819, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":818
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeContent(fixed_length)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":820
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 820, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":821
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 821, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 821, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 821, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 821, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":820
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeContent(fixed_length)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":822
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 822, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":823
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 823, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 823, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->serializeContent(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 823, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":822
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeContent(fixed_length)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":824
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeContent(fixed_length)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 824, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":826
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_75deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_74deserializeContent, "BinnedProfile2D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_75deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_75deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_74deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_75deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 826, __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, "deserializeContent") < 0)) __PYX_ERR(23, 826, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 826, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_74deserializeContent(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_74deserializeContent(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_data) {
  CYTHON_UNUSED std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_12;
  std::vector<double>  __pyx_t_13;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_14;
  std::vector<double>  __pyx_t_15;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_18;
  std::vector<double>  __pyx_t_19;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_20;
  std::vector<double>  __pyx_t_21;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_22;
  std::vector<double>  __pyx_t_23;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_24;
  std::vector<double>  __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/BinnedProfile2D.pyx":829
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 829, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 829, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(23, 829, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 829, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 829, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(23, 829, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 829, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(23, 829, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(23, 829, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 829, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile2D.pyx":830
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 830, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":831
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 831, __pyx_L1_error)
    __pyx_t_9 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 831, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeContent(__pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 831, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":830
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":832
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 832, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":833
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 833, __pyx_L1_error)
    __pyx_t_11 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 833, __pyx_L1_error)
    try {
      __pyx_t_10->deserializeContent(__pyx_t_11);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 833, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":832
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeContent(data)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":834
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 834, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":835
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 835, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 835, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeContent(__pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 835, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":834
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeContent(data)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":836
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 836, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":837
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 837, __pyx_L1_error)
    __pyx_t_15 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 837, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeContent(__pyx_t_15);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 837, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":836
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeContent(data)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":838
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 838, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":839
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 839, __pyx_L1_error)
    __pyx_t_17 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 839, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeContent(__pyx_t_17);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 839, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":838
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeContent(data)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":840
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 840, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":841
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 841, __pyx_L1_error)
    __pyx_t_19 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 841, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeContent(__pyx_t_19);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 841, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":840
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeContent(data)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":842
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 842, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":843
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 843, __pyx_L1_error)
    __pyx_t_21 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 843, __pyx_L1_error)
    try {
      __pyx_t_20->deserializeContent(__pyx_t_21);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 843, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 843, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":842
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeContent(data)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":844
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 844, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":845
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_22 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_22 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 845, __pyx_L1_error)
    __pyx_t_23 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 845, __pyx_L1_error)
    try {
      __pyx_t_22->deserializeContent(__pyx_t_23);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 845, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 845, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":844
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeContent(data)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":846
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 846, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":847
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_24 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_24 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 847, __pyx_L1_error)
    __pyx_t_25 = __pyx_convert_vector_from_py_double(__pyx_v_data); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 847, __pyx_L1_error)
    try {
      __pyx_t_24->deserializeContent(__pyx_t_25);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 847, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 847, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":846
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeContent(data)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":848
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeContent(data)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 848, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":826
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":850
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_77lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_76lengthMeta, "BinnedProfile2D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisation meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_77lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_77lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_76lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_77lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 850, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 850, __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, "lengthMeta") < 0)) __PYX_ERR(23, 850, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(23, 850, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_76lengthMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_76lengthMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/BinnedProfile2D.pyx":852
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 852, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":853
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 853, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 853, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 853, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 853, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 853, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":852
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":854
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 854, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":855
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 855, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 855, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 855, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 855, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 855, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":854
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":856
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 856, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":857
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 857, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 857, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 857, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 857, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":856
 *         if self._config == "di":
 *           return self.binned_di_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":858
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 858, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":859
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 859, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 859, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 859, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 859, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":858
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":860
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 860, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":861
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 861, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 861, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 861, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 861, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":860
 *         if self._config == "id":
 *           return self.binned_id_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":862
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 862, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":863
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 863, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 863, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 863, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 863, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 863, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":862
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":864
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 864, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":865
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 865, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 865, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 865, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 865, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":864
 *         if self._config == "is":
 *           return self.binned_is_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":866
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 866, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":867
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 867, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 867, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 867, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->lengthMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 867, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 867, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":866
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":868
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 868, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":869
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 869, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 869, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 869, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->lengthMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 869, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 869, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":868
 *         if self._config == "si":
 *           return self.binned_si_ptr().lengthMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":870
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().lengthMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 870, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":850
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":872
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_79serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_78serializeMeta, "BinnedProfile2D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_79serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_79serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_78serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_79serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 872, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 872, __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, "serializeMeta") < 0)) __PYX_ERR(23, 872, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(23, 872, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_78serializeMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_78serializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  std::vector<std::string>  __pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  std::vector<std::string>  __pyx_t_10;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_11;
  std::vector<std::string>  __pyx_t_12;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_13;
  std::vector<std::string>  __pyx_t_14;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_15;
  std::vector<std::string>  __pyx_t_16;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_17;
  std::vector<std::string>  __pyx_t_18;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_19;
  std::vector<std::string>  __pyx_t_20;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_21;
  std::vector<std::string>  __pyx_t_22;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/BinnedProfile2D.pyx":874
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 874, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":875
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 875, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 875, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 875, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 875, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":874
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":876
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 876, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":877
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 877, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 877, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 877, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 877, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 877, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":876
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":878
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 878, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":879
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 879, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 879, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 879, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 879, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 879, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":878
 *         if self._config == "di":
 *           return self.binned_di_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":880
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 880, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":881
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 881, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 881, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 881, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 881, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 881, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":880
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":882
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 882, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":883
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 883, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 883, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 883, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 883, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 883, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":882
 *         if self._config == "id":
 *           return self.binned_id_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":884
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 884, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":885
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 885, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 885, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 885, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 885, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":884
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":886
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 886, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":887
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 887, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 887, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 887, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 887, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 887, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":886
 *         if self._config == "is":
 *           return self.binned_is_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":888
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 888, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":889
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 889, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 889, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 889, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->serializeMeta(__pyx_t_4, __pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 889, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_20); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 889, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":888
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":890
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 890, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":891
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_21 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_21 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 891, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 891, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 891, __pyx_L1_error)
    try {
      __pyx_t_22 = __pyx_t_21->serializeMeta(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 891, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_22); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 891, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":890
 *         if self._config == "si":
 *           return self.binned_si_ptr().serializeMeta(skipPath, skipTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":892
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().serializeMeta(skipPath, skipTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 892, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":872
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":894
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_81deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_80deserializeMeta, "BinnedProfile2D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_81deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_81deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_80deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_81deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 894, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 894, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 894, __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, "deserializeMeta") < 0)) __PYX_ERR(23, 894, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(23, 894, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_80deserializeMeta(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_80deserializeMeta(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  int __pyx_t_7;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_8;
  bool __pyx_t_9;
  bool __pyx_t_10;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_14;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/BinnedProfile2D.pyx":897
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 897, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 897, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(23, 897, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 897, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(23, 897, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(23, 897, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 897, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(23, 897, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(23, 897, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/BinnedProfile2D.pyx":898
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 898, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":899
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 899, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 899, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 899, __pyx_L1_error)
    try {
      __pyx_t_8->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 899, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":898
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":900
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 900, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":901
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 901, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 901, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 901, __pyx_L1_error)
    try {
      __pyx_t_11->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 901, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 901, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":900
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":902
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 902, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":903
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 903, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 903, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 903, __pyx_L1_error)
    try {
      __pyx_t_12->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 903, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":902
 *         if self._config == "di":
 *           return self.binned_di_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":904
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 904, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":905
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 905, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 905, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 905, __pyx_L1_error)
    try {
      __pyx_t_13->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 905, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":904
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":906
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 906, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":907
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 907, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 907, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 907, __pyx_L1_error)
    try {
      __pyx_t_14->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 907, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":906
 *         if self._config == "id":
 *           return self.binned_id_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":908
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 908, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":909
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 909, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 909, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 909, __pyx_L1_error)
    try {
      __pyx_t_15->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 909, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":908
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":910
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 910, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":911
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 911, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 911, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 911, __pyx_L1_error)
    try {
      __pyx_t_16->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 911, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":910
 *         if self._config == "is":
 *           return self.binned_is_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":912
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 912, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":913
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 913, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 913, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 913, __pyx_L1_error)
    try {
      __pyx_t_17->deserializeMeta(__pyx_v_cdata, __pyx_t_10, __pyx_t_9);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 913, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":912
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":914
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(23, 914, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "include/generated/BinnedProfile2D.pyx":915
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 915, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 915, __pyx_L1_error)
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 915, __pyx_L1_error)
    try {
      __pyx_t_18->deserializeMeta(__pyx_v_cdata, __pyx_t_9, __pyx_t_10);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 915, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":914
 *         if self._config == "si":
 *           return self.binned_si_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":916
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().deserializeMeta(cdata, resetPath, resetTitle)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 916, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":894
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":919
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_83fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_82fill, "BinnedProfile2D.fill(self, x, y, z, weight=1.0, fraction=1.0)\n\n        ([coords], float weight=1.0, float fraction=1.0) -> int\n\n        Fills the distribution with the given weight at given [coords].\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_83fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_83fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_82fill};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_83fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 919, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 919, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 1); __PYX_ERR(23, 919, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 919, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 2); __PYX_ERR(23, 919, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 919, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 919, __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(23, 919, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, __pyx_nargs); __PYX_ERR(23, 919, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_82fill(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_82fill(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  double __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_10;
  int __pyx_t_11;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_12;
  std::string __pyx_t_13;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_14;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_15;
  int __pyx_t_16;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  std::string __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 1);

  /* "include/generated/BinnedProfile2D.pyx":925
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 925, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":926
 *         """
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 926, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 926, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 926, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 926, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 926, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 926, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_2->fill(__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 926, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":925
 *         Fills the distribution with the given weight at given [coords].
 *         """
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":927
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 927, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":928
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 928, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 928, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 928, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 928, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 928, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 928, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->fill(__pyx_t_7, __pyx_t_8, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 928, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 928, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":927
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":929
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 929, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":930
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 930, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 930, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 930, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 930, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 930, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 930, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_12->fill(__pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13), __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 930, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":929
 *         if self._config == "di":
 *           return self.binned_di_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":931
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 931, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":932
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 932, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 932, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 932, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 932, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 932, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 932, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_14->fill(__pyx_t_11, __pyx_t_7, __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 932, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 932, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":931
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":933
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 933, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":934
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 934, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 934, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 934, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 934, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 934, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 934, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->fill(__pyx_t_8, __pyx_t_11, __pyx_t_4, __pyx_t_5, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 934, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":933
 *         if self._config == "id":
 *           return self.binned_id_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":935
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 935, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":936
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 936, __pyx_L1_error)
    __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 936, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 936, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 936, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 936, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 936, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_17->fill(__pyx_t_16, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13), __pyx_t_6, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 936, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 936, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":935
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":937
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 937, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":938
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 938, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 938, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 938, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 938, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 938, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 938, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_18->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13), __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 938, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":937
 *         if self._config == "is":
 *           return self.binned_is_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":939
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 939, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":940
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, z, weight, fraction)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 940, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 940, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 940, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 940, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 940, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 940, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_19->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13), __pyx_t_11, __pyx_t_7, __pyx_t_6, __pyx_t_5);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 940, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":939
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":941
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 941, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":942
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 942, __pyx_L1_error)
    __pyx_t_13 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 942, __pyx_L1_error)
    __pyx_t_21 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 942, __pyx_L1_error)
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 942, __pyx_L1_error)
    __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 942, __pyx_L1_error)
    __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 942, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_20->fill(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_13), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_21), __pyx_t_5, __pyx_t_6, __pyx_t_7);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 942, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_16); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":941
 *         if self._config == "si":
 *           return self.binned_si_ptr().fill(x, y, z, weight, fraction)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":943
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fill(x, y, z, weight, fraction)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 943, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":919
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */

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

/* "include/generated/BinnedProfile2D.pyx":946
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_84indexAt, "BinnedProfile2D.indexAt(self, x, y)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_85indexAt = {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_84indexAt};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_85indexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("indexAt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 946, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 946, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, 1); __PYX_ERR(23, 946, __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, "indexAt") < 0)) __PYX_ERR(23, 946, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("indexAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 946, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_84indexAt(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_84indexAt(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  int __pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  std::string __pyx_t_10;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  int __pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_17;
  std::string __pyx_t_18;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("indexAt", 1);

  /* "include/generated/BinnedProfile2D.pyx":947
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 947, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":948
 *     def indexAt(self, x, y):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 948, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 948, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 948, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->indexAt(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 948, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":947
 * 
 *     def indexAt(self, x, y):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":949
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 949, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":950
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 950, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 950, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 950, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->indexAt(__pyx_t_4, __pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 950, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":949
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":951
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 951, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":952
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 952, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 952, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 952, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->indexAt(__pyx_t_4, __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(23, 952, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":951
 *         if self._config == "di":
 *           return self.binned_di_ptr().indexAt(x, y)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":953
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 953, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":954
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 954, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 954, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 954, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->indexAt(__pyx_t_8, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 954, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":953
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().indexAt(x, y)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":955
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 955, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":956
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 956, __pyx_L1_error)
    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 956, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 956, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->indexAt(__pyx_t_8, __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 956, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":955
 *         if self._config == "id":
 *           return self.binned_id_ptr().indexAt(x, y)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":957
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 957, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":958
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 958, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 958, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 958, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->indexAt(__pyx_t_13, __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(23, 958, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":957
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().indexAt(x, y)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":959
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 959, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":960
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 960, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 960, __pyx_L1_error)
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 960, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_15->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 960, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":959
 *         if self._config == "is":
 *           return self.binned_is_ptr().indexAt(x, y)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":961
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 961, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":962
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 962, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 962, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 962, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_16->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __pyx_t_13);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 962, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":961
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().indexAt(x, y)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":963
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 963, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":964
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 964, __pyx_L1_error)
    __pyx_t_10 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_x); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 964, __pyx_L1_error)
    __pyx_t_18 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_y); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 964, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_17->indexAt(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_18));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 964, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":963
 *         if self._config == "si":
 *           return self.binned_si_ptr().indexAt(x, y)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":965
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().indexAt(x, y)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def fillDim(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 965, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":946
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */

  /* 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.BinnedProfile2D.indexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":967
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_87fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_86fillDim, "BinnedProfile2D.fillDim(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_87fillDim = {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_87fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_86fillDim};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_87fillDim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillDim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("fillDim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fillDim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_86fillDim(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_86fillDim(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillDim", 1);

  /* "include/generated/BinnedProfile2D.pyx":968
 * 
 *     def fillDim(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 968, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":969
 *     def fillDim(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 969, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 969, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 969, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":968
 * 
 *     def fillDim(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":970
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 970, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":971
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 971, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 971, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":970
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":972
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 972, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":973
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 973, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 973, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":972
 *         if self._config == "di":
 *           return self.binned_di_ptr().fillDim()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":974
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 974, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":975
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 975, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_7->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 975, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 975, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":974
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().fillDim()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":976
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 976, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":977
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 977, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_8->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 977, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":976
 *         if self._config == "id":
 *           return self.binned_id_ptr().fillDim()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":978
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 978, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":979
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 979, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_9->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 979, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 979, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":978
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().fillDim()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":980
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 980, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":981
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 981, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_10->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 981, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":980
 *         if self._config == "is":
 *           return self.binned_is_ptr().fillDim()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":982
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 982, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":983
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 983, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_11->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 983, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 983, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":982
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().fillDim()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":984
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 984, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":985
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 985, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_12->fillDim();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 985, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 985, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":984
 *         if self._config == "si":
 *           return self.binned_si_ptr().fillDim()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":986
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().fillDim()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 986, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":967
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */

  /* 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.BinnedProfile2D.fillDim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":988
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_89normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_88normalize, "BinnedProfile2D.normalize(self, normto=1.0, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_89normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_89normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_88normalize};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_89normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 988, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 988, __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(23, 988, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(23, 988, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_88normalize(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_88normalize(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  bool __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 1);

  /* "include/generated/BinnedProfile2D.pyx":989
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 989, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":990
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 990, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 990, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 990, __pyx_L1_error)
    try {
      __pyx_t_2->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 990, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":989
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":991
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 991, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":992
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 992, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 992, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 992, __pyx_L1_error)
    try {
      __pyx_t_6->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 992, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 992, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":991
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":993
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 993, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":994
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 994, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 994, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 994, __pyx_L1_error)
    try {
      __pyx_t_7->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 994, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 994, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":993
 *         if self._config == "di":
 *           return self.binned_di_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":995
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 995, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":996
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 996, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 996, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 996, __pyx_L1_error)
    try {
      __pyx_t_8->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 996, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":995
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().normalize(normto,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":997
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 997, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":998
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 998, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 998, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 998, __pyx_L1_error)
    try {
      __pyx_t_9->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 998, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":997
 *         if self._config == "id":
 *           return self.binned_id_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":999
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 999, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1000
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1000, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1000, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1000, __pyx_L1_error)
    try {
      __pyx_t_10->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1000, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1000, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":999
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().normalize(normto,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1001
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1001, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1002
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1002, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1002, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1002, __pyx_L1_error)
    try {
      __pyx_t_11->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1002, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1002, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1001
 *         if self._config == "is":
 *           return self.binned_is_ptr().normalize(normto,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1003
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1003, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1004
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1004, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1004, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1004, __pyx_L1_error)
    try {
      __pyx_t_12->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1004, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1003
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().normalize(normto,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1005
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1005, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1006
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1006, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1006, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1006, __pyx_L1_error)
    try {
      __pyx_t_13->normalize(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1006, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1005
 *         if self._config == "si":
 *           return self.binned_si_ptr().normalize(normto,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1007
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().normalize(normto,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, factor):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1007, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":988
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1009
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_91scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_90scaleW, "BinnedProfile2D.scaleW(self, factor)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_91scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_91scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_90scaleW};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_91scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_factor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_factor,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_factor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1009, __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(23, 1009, __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_factor = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 1009, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_90scaleW(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_factor);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_90scaleW(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_factor) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 1);

  /* "include/generated/BinnedProfile2D.pyx":1010
 * 
 *     def scaleW(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1010, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1011
 *     def scaleW(self, factor):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1011, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1011, __pyx_L1_error)
    try {
      __pyx_t_2->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1011, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1010
 * 
 *     def scaleW(self, factor):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1012
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1012, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1013
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1013, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1013, __pyx_L1_error)
    try {
      __pyx_t_5->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1013, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1013, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1012
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1014
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1014, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1015
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1015, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1015, __pyx_L1_error)
    try {
      __pyx_t_6->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1015, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1015, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1014
 *         if self._config == "di":
 *           return self.binned_di_ptr().scaleW(factor)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1016
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1016, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1017
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1017, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1017, __pyx_L1_error)
    try {
      __pyx_t_7->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1017, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1016
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().scaleW(factor)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1018
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1018, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1019
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1019, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1019, __pyx_L1_error)
    try {
      __pyx_t_8->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1019, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1019, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1018
 *         if self._config == "id":
 *           return self.binned_id_ptr().scaleW(factor)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1020
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1020, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1021
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1021, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1021, __pyx_L1_error)
    try {
      __pyx_t_9->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1021, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1021, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1020
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().scaleW(factor)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1022
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1022, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1023
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1023, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1023, __pyx_L1_error)
    try {
      __pyx_t_10->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1023, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1022
 *         if self._config == "is":
 *           return self.binned_is_ptr().scaleW(factor)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1024
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1024, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1025
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1025, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1025, __pyx_L1_error)
    try {
      __pyx_t_11->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1025, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1025, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1024
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().scaleW(factor)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1026
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1026, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1027
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1027, __pyx_L1_error)
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 1027, __pyx_L1_error)
    try {
      __pyx_t_12->scaleW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1027, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1027, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1026
 *         if self._config == "si":
 *           return self.binned_si_ptr().scaleW(factor)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1028
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().scaleW(factor)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1028, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1009
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */

  /* 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.BinnedProfile2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1030
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_93sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_92sumW, "BinnedProfile2D.sumW(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_93sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_93sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_92sumW};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_93sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1030, __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(23, 1030, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1030, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_92sumW(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_92sumW(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 1);

  /* "include/generated/BinnedProfile2D.pyx":1031
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1031, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1032
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1032, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1032, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1032, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1032, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1031
 * 
 *     def sumW(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1033
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1033, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1034
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1034, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1034, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1034, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1033
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1035
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1035, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1036
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1036, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1036, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1036, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1035
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1037
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1037, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1038
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1038, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1038, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1038, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1037
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1039
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1039, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1040
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1040, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1040, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1040, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1040, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1039
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1041
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1041, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1042
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1042, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1042, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1042, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1041
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1043
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1043, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1044
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1044, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1044, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1044, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1043
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1045
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1045, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1046
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1046, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1046, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1046, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1045
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1047
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1047, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1048
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1048, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1048, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->sumW(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1048, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1048, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1047
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1049
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1049, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1030
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1051
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_95sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_94sumW2, "BinnedProfile2D.sumW2(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_95sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_95sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_94sumW2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_95sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1051, __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(23, 1051, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1051, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_94sumW2(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_94sumW2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 1);

  /* "include/generated/BinnedProfile2D.pyx":1052
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1052, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1053
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1053, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1053, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1053, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1052
 * 
 *     def sumW2(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1054
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1054, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1055
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1055, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1055, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1055, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1054
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1056
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1056, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1057
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1057, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1057, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1057, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1056
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumW2(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1058
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1058, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1059
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1059, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1059, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1059, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1059, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1058
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumW2(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1060
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1060, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1061
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1061, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1061, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1061, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1060
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumW2(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1062
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1062, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1063
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1063, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1063, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1063, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1063, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1062
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumW2(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1064
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1064, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1065
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1065, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1065, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1065, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1064
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumW2(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1066
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1066, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1067
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1067, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1067, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1067, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1066
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumW2(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1068
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1068, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1069
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1069, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1069, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->sumW2(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1069, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1069, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1068
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumW2(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1070
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumW2(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1070, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1051
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1072
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_97sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_96sumWA, "BinnedProfile2D.sumWA(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_97sumWA = {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_97sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_96sumWA};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_97sumWA(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1072, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1072, __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, "sumWA") < 0)) __PYX_ERR(23, 1072, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 1072, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_96sumWA(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_96sumWA(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA", 1);

  /* "include/generated/BinnedProfile2D.pyx":1073
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1073, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1074
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1074, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1074, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1074, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1074, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1073
 * 
 *     def sumWA(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1075
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1075, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1076
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1076, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1076, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1076, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1076, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1076, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1075
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1077
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1077, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1078
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1078, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1078, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1078, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1078, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1077
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1079
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1079, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1080
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1080, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1080, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1080, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1080, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1079
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1081
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1081, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1082
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1082, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1082, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1082, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1082, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1081
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1083
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1083, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1084
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1084, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1084, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1084, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1084, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1084, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1083
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1085
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1085, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1086
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1086, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1086, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1086, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1086, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1086, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1085
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1087
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1087, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1088
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1088, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1088, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1088, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1088, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1087
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1089
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1089, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1090
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1090, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1090, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1090, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->sumWA(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1090, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1089
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1091
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1091, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1072
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */

  /* 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.BinnedProfile2D.sumWA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1093
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_99sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_98sumWA2, "BinnedProfile2D.sumWA2(self, dim, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_99sumWA2 = {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_99sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_98sumWA2};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_99sumWA2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_includeOverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWA2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,&__pyx_n_s_includeOverflows,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_dim)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1093, __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_includeOverflows);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1093, __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, "sumWA2") < 0)) __PYX_ERR(23, 1093, __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_dim = values[0];
    __pyx_v_includeOverflows = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWA2", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 1093, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_98sumWA2(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_dim, __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_98sumWA2(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_dim, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  size_t __pyx_t_3;
  bool __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWA2", 1);

  /* "include/generated/BinnedProfile2D.pyx":1094
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1094, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1095
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1095, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1095, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1095, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_2->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1095, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1094
 * 
 *     def sumWA2(self, dim, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1096
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1096, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1097
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1097, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1097, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1097, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_7->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1097, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1097, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1096
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1098
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1098, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1099
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1099, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1099, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1099, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_8->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1099, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1098
 *         if self._config == "di":
 *           return self.binned_di_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1100
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1100, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1101
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1101, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1101, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1101, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_9->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1101, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1100
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1102
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1102, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1103
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1103, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1103, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1103, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_10->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1103, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1102
 *         if self._config == "id":
 *           return self.binned_id_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1104
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1104, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1105
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1105, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1105, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1105, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_11->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1105, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1104
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1106
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1106, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1107
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1107, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1107, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1107, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_12->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1107, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1106
 *         if self._config == "is":
 *           return self.binned_is_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1108
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1108, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1109
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1109, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1109, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1109, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_13->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1109, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1108
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1110
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1110, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1111
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1111, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1111, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1111, __pyx_L1_error)
    try {
      __pyx_t_5 = __pyx_t_14->sumWA2(__pyx_t_3, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1111, __pyx_L1_error)
    }
    __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1110
 *         if self._config == "si":
 *           return self.binned_si_ptr().sumWA2(dim,includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1112
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().sumWA2(dim,includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1112, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1093
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */

  /* 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.BinnedProfile2D.sumWA2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1114
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_101numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_100numEntries, "BinnedProfile2D.numEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_101numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_101numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_100numEntries};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_101numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1114, __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(23, 1114, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_100numEntries(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_100numEntries(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 1);

  /* "include/generated/BinnedProfile2D.pyx":1115
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1115, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1116
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1116, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1116, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1116, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1115
 * 
 *     def numEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1117
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1117, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1118
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1118, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1118, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1118, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1117
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1119
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1119, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1120
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1120, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1120, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1120, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1119
 *         if self._config == "di":
 *           return self.binned_di_ptr().numEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1121
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1121, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1122
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1122, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1122, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1122, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1121
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1123
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1123, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1124
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1124, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1124, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1124, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1123
 *         if self._config == "id":
 *           return self.binned_id_ptr().numEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1125
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1125, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1126
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1126, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1126, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1126, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1125
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1127
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1127, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1128
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1128, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1128, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1128, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1127
 *         if self._config == "is":
 *           return self.binned_is_ptr().numEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1129
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1129, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1130
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1130, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1130, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1130, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1129
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1131
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1131, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1132
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1132, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1132, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1132, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1131
 *         if self._config == "si":
 *           return self.binned_si_ptr().numEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1133
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1133, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1114
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1135
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_103effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_102effNumEntries, "BinnedProfile2D.effNumEntries(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_103effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_103effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_102effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_103effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1135, __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(23, 1135, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1135, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_102effNumEntries(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_102effNumEntries(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 1);

  /* "include/generated/BinnedProfile2D.pyx":1136
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1136, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1137
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1137, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1137, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1137, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1136
 * 
 *     def effNumEntries(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1138
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1138, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1139
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1139, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1139, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1139, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1138
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1140
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1140, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1141
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1141, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1141, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1141, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1140
 *         if self._config == "di":
 *           return self.binned_di_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1142
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1142, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1143
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1143, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1143, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1143, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1142
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().effNumEntries(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1144
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1144, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1145
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1145, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1145, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1145, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1144
 *         if self._config == "id":
 *           return self.binned_id_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1146
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1146, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1147
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1147, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1147, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1147, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1146
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().effNumEntries(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1148
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1148, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1149
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1149, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1149, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1149, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1148
 *         if self._config == "is":
 *           return self.binned_is_ptr().effNumEntries(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1150
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1150, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1151
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1151, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1151, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1151, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1150
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().effNumEntries(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1152
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1152, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1153
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1153, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1153, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->effNumEntries(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1153, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1152
 *         if self._config == "si":
 *           return self.binned_si_ptr().effNumEntries(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1154
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().effNumEntries(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integral(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1154, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1135
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1156
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_105integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_104integral, "BinnedProfile2D.integral(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_105integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_105integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_104integral};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_105integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1156, __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(23, 1156, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1156, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_104integral(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_104integral(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 1);

  /* "include/generated/BinnedProfile2D.pyx":1157
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1157, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1158
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1158, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1158, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1158, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1157
 * 
 *     def integral(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1159
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1159, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1160
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1160, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1160, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1160, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1159
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1161
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1161, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1162
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1162, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1162, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1162, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1161
 *         if self._config == "di":
 *           return self.binned_di_ptr().integral(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1163
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1163, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1164
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1164, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1164, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1164, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1163
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integral(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1165
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1165, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1166
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1166, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1166, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1166, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1165
 *         if self._config == "id":
 *           return self.binned_id_ptr().integral(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1167
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1167, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1168
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1168, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1168, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1168, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1167
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integral(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1169
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1169, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1170
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1170, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1170, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1170, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1169
 *         if self._config == "is":
 *           return self.binned_is_ptr().integral(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1171
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1171, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1172
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1172, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1172, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1172, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1171
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integral(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1173
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1173, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1174
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1174, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1174, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->integral(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1174, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1173
 *         if self._config == "si":
 *           return self.binned_si_ptr().integral(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1175
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integral(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def integralError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1175, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1156
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1177
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_107integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_106integralError, "BinnedProfile2D.integralError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_107integralError = {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_107integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_106integralError};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_107integralError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1177, __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, "integralError") < 0)) __PYX_ERR(23, 1177, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralError", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.integralError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_106integralError(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_106integralError(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralError", 1);

  /* "include/generated/BinnedProfile2D.pyx":1178
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1178, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1179
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1179, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1179, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1179, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1178
 * 
 *     def integralError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1180
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1180, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1181
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1181, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1181, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1181, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1180
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1182
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1182, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1183
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1183, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1183, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1183, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1182
 *         if self._config == "di":
 *           return self.binned_di_ptr().integralError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1184
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1184, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1185
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1185, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1185, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1185, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1184
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().integralError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1186
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1186, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1187
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1187, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1187, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1187, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1186
 *         if self._config == "id":
 *           return self.binned_id_ptr().integralError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1188
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1188, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1189
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1189, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1189, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1189, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1188
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().integralError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1190
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1190, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1191
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1191, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1191, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1191, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1190
 *         if self._config == "is":
 *           return self.binned_is_ptr().integralError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1192
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1192, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1193
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1193, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1193, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1193, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1192
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().integralError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1194
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1194, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1195
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1195, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1195, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->integralError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1195, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1194
 *         if self._config == "si":
 *           return self.binned_si_ptr().integralError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1196
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().integralError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def dVol(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1196, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1177
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1198
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_109dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_108dVol, "BinnedProfile2D.dVol(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_109dVol = {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_109dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_108dVol};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_109dVol(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dVol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1198, __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, "dVol") < 0)) __PYX_ERR(23, 1198, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dVol", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1198, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.dVol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_108dVol(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_108dVol(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dVol", 1);

  /* "include/generated/BinnedProfile2D.pyx":1199
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1199, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1200
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1200, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1200, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1200, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1199
 * 
 *     def dVol(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1201
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1201, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1202
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1202, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1202, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1202, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1201
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1203
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1203, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1204
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1204, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1204, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1204, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1203
 *         if self._config == "di":
 *           return self.binned_di_ptr().dVol(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1205
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1205, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1206
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1206, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1206, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1206, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1205
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().dVol(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1207
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1207, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1208
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1208, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1208, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1208, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1207
 *         if self._config == "id":
 *           return self.binned_id_ptr().dVol(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1209
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1209, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1210
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1210, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1210, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1210, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1209
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().dVol(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1211
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1211, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1212
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1212, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1212, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1212, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1211
 *         if self._config == "is":
 *           return self.binned_is_ptr().dVol(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1213
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1213, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1214
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1214, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1214, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1214, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1213
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().dVol(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1215
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1215, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1216
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1216, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1216, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->dVol(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1216, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1215
 *         if self._config == "si":
 *           return self.binned_si_ptr().dVol(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1217
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().dVol(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def density(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1217, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1198
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1219
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_111density(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_110density, "BinnedProfile2D.density(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_111density = {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_111density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_110density};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_111density(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("density (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1219, __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, "density") < 0)) __PYX_ERR(23, 1219, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("density", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1219, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.density", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_110density(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_110density(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("density", 1);

  /* "include/generated/BinnedProfile2D.pyx":1220
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1220, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1221
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1221, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1221, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1221, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1220
 * 
 *     def density(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1222
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1222, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1223
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1223, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1223, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1223, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1222
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1224
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1224, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1225
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1225, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1225, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1225, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1224
 *         if self._config == "di":
 *           return self.binned_di_ptr().density(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1226
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1226, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1227
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1227, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1227, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1227, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1226
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().density(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1228
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1228, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1229
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1229, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1229, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1229, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1228
 *         if self._config == "id":
 *           return self.binned_id_ptr().density(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1230
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1230, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1231
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1231, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1231, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1231, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1230
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().density(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1232
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1232, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1233
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1233, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1233, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1233, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1232
 *         if self._config == "is":
 *           return self.binned_is_ptr().density(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1234
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1234, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1235
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1235, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1235, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1235, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1234
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().density(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1236
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1236, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1237
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1237, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1237, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->density(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1237, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1236
 *         if self._config == "si":
 *           return self.binned_si_ptr().density(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1238
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().density(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densityError(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1238, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1219
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1240
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_113densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_112densityError, "BinnedProfile2D.densityError(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_113densityError = {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_113densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_112densityError};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_113densityError(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densityError (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1240, __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, "densityError") < 0)) __PYX_ERR(23, 1240, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densityError", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1240, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.densityError", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_112densityError(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_112densityError(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densityError", 1);

  /* "include/generated/BinnedProfile2D.pyx":1241
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1241, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1242
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1242, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1242, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1242, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1241
 * 
 *     def densityError(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1243
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1243, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1244
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1244, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1244, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1244, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1243
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1245
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1245, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1246
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1246, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1246, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1246, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1245
 *         if self._config == "di":
 *           return self.binned_di_ptr().densityError(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1247
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1247, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1248
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1248, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1248, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1248, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1247
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densityError(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1249
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1249, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1250
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1250, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1250, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1250, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1249
 *         if self._config == "id":
 *           return self.binned_id_ptr().densityError(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1251
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1251, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1252
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1252, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1252, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1252, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1251
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densityError(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1253
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1253, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1254
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1254, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1254, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1254, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1253
 *         if self._config == "is":
 *           return self.binned_is_ptr().densityError(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1255
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1255, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1256
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1256, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1256, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1256, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1255
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densityError(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1257
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1257, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1258
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1258, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1258, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->densityError(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1258, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1258, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1257
 *         if self._config == "si":
 *           return self.binned_si_ptr().densityError(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1259
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densityError(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def densitySum(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1259, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1240
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1261
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_115densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_114densitySum, "BinnedProfile2D.densitySum(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_115densitySum = {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_115densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_114densitySum};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_115densitySum(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("densitySum (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1261, __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, "densitySum") < 0)) __PYX_ERR(23, 1261, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("densitySum", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1261, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.densitySum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_114densitySum(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_114densitySum(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("densitySum", 1);

  /* "include/generated/BinnedProfile2D.pyx":1262
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1262, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1263
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1263, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1263, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1263, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1262
 * 
 *     def densitySum(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1264
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1264, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1265
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1265, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1265, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1265, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1264
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1266
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1266, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1267
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1267, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1267, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1267, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1266
 *         if self._config == "di":
 *           return self.binned_di_ptr().densitySum(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1268
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1268, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1269
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1269, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1269, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1269, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1268
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().densitySum(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1270
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1270, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1271
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1271, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1271, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1271, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1270
 *         if self._config == "id":
 *           return self.binned_id_ptr().densitySum(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1272
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1272, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1273
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1273, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1273, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1273, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1272
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().densitySum(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1274
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1274, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1275
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1275, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1275, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1275, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1274
 *         if self._config == "is":
 *           return self.binned_is_ptr().densitySum(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1276
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1276, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1277
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1277, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1277, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1277, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1276
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().densitySum(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1278
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1278, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1279
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1279, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1279, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->densitySum(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1279, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1278
 *         if self._config == "si":
 *           return self.binned_si_ptr().densitySum(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1280
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().densitySum(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maxDensity(self, includeOverflows=True):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1280, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1261
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1282
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_117maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_116maxDensity, "BinnedProfile2D.maxDensity(self, includeOverflows=True)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_117maxDensity = {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_117maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_116maxDensity};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_117maxDensity(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxDensity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1282, __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, "maxDensity") < 0)) __PYX_ERR(23, 1282, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxDensity", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1282, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.maxDensity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_116maxDensity(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_116maxDensity(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxDensity", 1);

  /* "include/generated/BinnedProfile2D.pyx":1283
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1283, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1284
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1284, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1284, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1284, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1283
 * 
 *     def maxDensity(self, includeOverflows=True):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1285
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1285, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1286
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1286, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1286, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1286, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1285
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1287
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1287, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1288
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1288, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1288, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1288, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1287
 *         if self._config == "di":
 *           return self.binned_di_ptr().maxDensity(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1289
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1289, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1290
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1290, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1290, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1290, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1289
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maxDensity(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1291
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1291, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1292
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1292, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1292, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1292, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1291
 *         if self._config == "id":
 *           return self.binned_id_ptr().maxDensity(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1293
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1294
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1294, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1294, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1294, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1293
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maxDensity(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1295
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1295, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1296
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1296, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1296, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1296, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1295
 *         if self._config == "is":
 *           return self.binned_is_ptr().maxDensity(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1297
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1297, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1298
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1298, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1298, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1298, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1297
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maxDensity(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1299
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1299, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1300
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1300, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1300, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->maxDensity(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1300, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1299
 *         if self._config == "si":
 *           return self.binned_si_ptr().maxDensity(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1301
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maxDensity(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def maskedBins(self):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1301, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1282
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */

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

/* "include/generated/BinnedProfile2D.pyx":1303
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_119maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_118maskedBins, "BinnedProfile2D.maskedBins(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_119maskedBins = {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_119maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_118maskedBins};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_119maskedBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maskedBins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("maskedBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "maskedBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_118maskedBins(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_118maskedBins(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::vector<size_t>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  std::vector<size_t>  __pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  std::vector<size_t>  __pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  std::vector<size_t>  __pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  std::vector<size_t>  __pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  std::vector<size_t>  __pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  std::vector<size_t>  __pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  std::vector<size_t>  __pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  std::vector<size_t>  __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maskedBins", 1);

  /* "include/generated/BinnedProfile2D.pyx":1304
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1304, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1305
 *     def maskedBins(self):
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1305, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1305, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1304
 * 
 *     def maskedBins(self):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1306
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1306, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1307
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1307, __pyx_L1_error)
    try {
      __pyx_t_6 = __pyx_t_5->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1307, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1306
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1308
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1308, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1309
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1309, __pyx_L1_error)
    try {
      __pyx_t_8 = __pyx_t_7->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1309, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1308
 *         if self._config == "di":
 *           return self.binned_di_ptr().maskedBins()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1310
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1310, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1311
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1311, __pyx_L1_error)
    try {
      __pyx_t_10 = __pyx_t_9->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1311, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1310
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().maskedBins()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1312
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1312, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1313
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1313, __pyx_L1_error)
    try {
      __pyx_t_12 = __pyx_t_11->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1313, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1312
 *         if self._config == "id":
 *           return self.binned_id_ptr().maskedBins()
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1314
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1314, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1315
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1315, __pyx_L1_error)
    try {
      __pyx_t_14 = __pyx_t_13->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1315, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1314
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().maskedBins()
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1316
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1316, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1317
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1317, __pyx_L1_error)
    try {
      __pyx_t_16 = __pyx_t_15->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1317, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1316
 *         if self._config == "is":
 *           return self.binned_is_ptr().maskedBins()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1318
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1318, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1319
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1319, __pyx_L1_error)
    try {
      __pyx_t_18 = __pyx_t_17->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1319, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1318
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().maskedBins()
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1320
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1320, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1321
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1321, __pyx_L1_error)
    try {
      __pyx_t_20 = __pyx_t_19->maskedBins();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1321, __pyx_L1_error)
    }
    __pyx_t_4 = __pyx_convert_vector_to_py_size_t(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1320
 *         if self._config == "si":
 *           return self.binned_si_ptr().maskedBins()
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1322
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().maskedBins()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self, includeOverflows=False):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1322, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1303
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */

  /* 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.BinnedProfile2D.maskedBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1324
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_121numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_120numBinsX, "BinnedProfile2D.numBinsX(self, includeOverflows=False)\nnumBinsX on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_121numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_121numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_120numBinsX};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_121numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1324, __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, "numBinsX") < 0)) __PYX_ERR(23, 1324, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsX", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1324, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_120numBinsX(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_120numBinsX(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 1);

  /* "include/generated/BinnedProfile2D.pyx":1326
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1326, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1327
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1327, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1327, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1327, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1326
 *     def numBinsX(self, includeOverflows=False):
 *         """numBinsX on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1328
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1328, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1329
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1329, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1329, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1329, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1328
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsX(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1330
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1330, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1331
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1331, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1331, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1331, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1330
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsX(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1332
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1332, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1333
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1333, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1333, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1333, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1332
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsX(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1334
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1334, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1335
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1335, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1335, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1335, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1334
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsX(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1336
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1336, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1337
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1337, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1337, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1337, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1336
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsX(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1338
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1338, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1339
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1339, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1339, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1339, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1338
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsX(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1340
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1340, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1341
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1341, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1341, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1341, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1340
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsX(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1342
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1342, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1343
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1343, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1343, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsX(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1343, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1342
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsX(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1344
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsX(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1344, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1324
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1347
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_123xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_122xEdges, "BinnedProfile2D.xEdges(self, includeOverflows=False)\nxEdges on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_123xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_123xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_122xEdges};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_123xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1347, __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, "xEdges") < 0)) __PYX_ERR(23, 1347, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1347, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_122xEdges(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_122xEdges(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  std::vector<int>  __pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  std::vector<int>  __pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  std::vector<std::string>  __pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  std::vector<std::string>  __pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 1);

  /* "include/generated/BinnedProfile2D.pyx":1349
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1349, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1350
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1350, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1350, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1350, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1349
 *     def xEdges(self, includeOverflows=False):
 *         """xEdges on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1351
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1351, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1352
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1352, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1352, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1352, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1351
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1353
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1353, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1354
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1354, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1354, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1354, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1353
 *         if self._config == "di":
 *           return self.binned_di_ptr().xEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1355
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1355, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1356
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1356, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1356, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1356, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1355
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1357
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1357, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1358
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1358, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1358, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1358, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1357
 *         if self._config == "id":
 *           return self.binned_id_ptr().xEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1359
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1360
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1360, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1360, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1360, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1359
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().xEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1361
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1361, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1362
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1362, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1362, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1362, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1361
 *         if self._config == "is":
 *           return self.binned_is_ptr().xEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1363
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1363, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1364
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1364, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1364, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1364, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1363
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().xEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1365
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1365, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1366
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1366, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1366, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->xEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1366, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1365
 *         if self._config == "si":
 *           return self.binned_si_ptr().xEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1367
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().xEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1367, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1347
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1370
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_125xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_124xWidths, "BinnedProfile2D.xWidths(self, includeOverflows=True)\nxWidths on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_125xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_125xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_124xWidths};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_125xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1370, __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, "xWidths") < 0)) __PYX_ERR(23, 1370, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1370, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_124xWidths(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_124xWidths(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 1);

  /* "include/generated/BinnedProfile2D.pyx":1372
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1372, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1373
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1373, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1373, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1373, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1372
 *     def xWidths(self, includeOverflows=True):
 *         """xWidths on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1374, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1375
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1375, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1375, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1375, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1374
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xWidths(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1376
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1376, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1377
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1377, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1377, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->xWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1377, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1376
 *         if self._config == "di":
 *           return self.binned_di_ptr().xWidths(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1378
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1378, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1370
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1381
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_127xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_126xMin, "BinnedProfile2D.xMin(self)\nxMin on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_127xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_127xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_126xMin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_127xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_126xMin(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_126xMin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/BinnedProfile2D.pyx":1383
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1383, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1384
 *         """xMin on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1384, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1384, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1383
 *     def xMin(self):
 *         """xMin on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1385
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1385, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1386
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1386, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1386, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1385
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMin()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1387
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1387, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1388
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1388, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1388, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1387
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMin()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1389
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1389, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1381
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1392
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_129xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_128xMax, "BinnedProfile2D.xMax(self)\nxMax on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_129xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_129xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_128xMax};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_129xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_128xMax(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_128xMax(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/BinnedProfile2D.pyx":1394
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1394, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1395
 *         """xMax on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1395, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1395, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1394
 *     def xMax(self):
 *         """xMax on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1396
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1396, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1397
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1397, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1397, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1396
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMax()
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1398
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1398, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1399
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1399, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->xMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1399, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1398
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMax()
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1400
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1400, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1392
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1403
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_131rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_130rebinXBy, "BinnedProfile2D.rebinXBy(self, n, begin=1, end=sys.maxsize)\nrebinXBy on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_131rebinXBy = {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_131rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_130rebinXBy};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_131rebinXBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__105);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1403, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1403, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1403, __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, "rebinXBy") < 0)) __PYX_ERR(23, 1403, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(23, 1403, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_130rebinXBy(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_130rebinXBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXBy", 1);

  /* "include/generated/BinnedProfile2D.pyx":1405
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1405, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1406
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1406, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1406, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1406, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1406, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXBy(__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(23, 1406, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1405
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1407
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1407, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1408
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1408, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1408, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1408, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1408, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1408, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1407
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXBy(n,begin,end)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1409
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1410
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1410, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1410, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1410, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1410, __pyx_L1_error)
    try {
      __pyx_t_8->rebinXBy(__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(23, 1410, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1409
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXBy(n,begin,end)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1411
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1411, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1403
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.rebinXBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1414
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_133rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_132rebinXTo, "BinnedProfile2D.rebinXTo(self, edges)\nrebinXTo on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_133rebinXTo = {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_133rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_132rebinXTo};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_133rebinXTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinXTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1414, __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, "rebinXTo") < 0)) __PYX_ERR(23, 1414, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinXTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 1414, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_132rebinXTo(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_132rebinXTo(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinXTo", 1);

  /* "include/generated/BinnedProfile2D.pyx":1416
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1416, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1417
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1417, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1417, __pyx_L1_error)
    try {
      __pyx_t_2->rebinXTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1417, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1416
 *     def rebinXTo(self, edges):
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1418
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1418, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1419
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1419, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1419, __pyx_L1_error)
    try {
      __pyx_t_5->rebinXTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1419, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1418
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinXTo(edges)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1420
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1420, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1421
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1421, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1421, __pyx_L1_error)
    try {
      __pyx_t_7->rebinXTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1421, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1420
 *         if self._config == "di":
 *           return self.binned_di_ptr().rebinXTo(edges)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1422
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().rebinXTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1422, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1414
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.rebinXTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1425
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_135xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_134xMean, "BinnedProfile2D.xMean(self, includeOverflows=True)\nxMean on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_135xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_135xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_134xMean};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_135xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1425, __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(23, 1425, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1425, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_134xMean(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_134xMean(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 1);

  /* "include/generated/BinnedProfile2D.pyx":1427
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1427, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1428
 *         """xMean on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1428, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1428, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1428, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1427
 *     def xMean(self, includeOverflows=True):
 *         """xMean on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1429
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1429, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1430
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1430, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1430, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1430, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1429
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xMean(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1431
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1431, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1432
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1432, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1432, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1432, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1431
 *         if self._config == "di":
 *           return self.binned_di_ptr().xMean(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1433
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1433, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1425
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1436
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_137xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_136xVariance, "BinnedProfile2D.xVariance(self, includeOverflows=True)\nxVariance on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_137xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_137xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_136xVariance};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_137xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1436, __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(23, 1436, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1436, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_136xVariance(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_136xVariance(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 1);

  /* "include/generated/BinnedProfile2D.pyx":1438
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1438, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1439
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1439, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1439, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1439, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1438
 *     def xVariance(self, includeOverflows=True):
 *         """xVariance on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1440
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1440, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1441
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1441, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1441, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1441, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1440
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xVariance(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1442
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1442, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1443
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1443, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1443, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1443, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1442
 *         if self._config == "di":
 *           return self.binned_di_ptr().xVariance(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1444
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1444, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1436
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1447
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_139xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_138xStdDev, "BinnedProfile2D.xStdDev(self, includeOverflows=True)\nxStdDev on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_139xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_139xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_138xStdDev};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_139xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1447, __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(23, 1447, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1447, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_138xStdDev(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_138xStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 1);

  /* "include/generated/BinnedProfile2D.pyx":1449
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1449, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1450
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1450, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1450, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1450, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1450, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1449
 *     def xStdDev(self, includeOverflows=True):
 *         """xStdDev on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1451
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1452
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1452, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1452, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1452, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1451
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdDev(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1453
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1453, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1454
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1454, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1454, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1454, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1453
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdDev(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1455
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1455, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1447
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1458
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_141xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_140xStdErr, "BinnedProfile2D.xStdErr(self, includeOverflows=True)\nxStdErr on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_141xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_141xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_140xStdErr};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_141xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1458, __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(23, 1458, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1458, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_140xStdErr(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_140xStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 1);

  /* "include/generated/BinnedProfile2D.pyx":1460
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1460, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1461
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1461, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1461, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1461, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1460
 *     def xStdErr(self, includeOverflows=True):
 *         """xStdErr on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1462
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1462, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1463
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1463, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1463, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1463, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1462
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xStdErr(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1464
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1464, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1465
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1465, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1465, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1465, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1465, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1464
 *         if self._config == "di":
 *           return self.binned_di_ptr().xStdErr(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1466
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1466, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1458
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1469
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_143xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_142xRMS, "BinnedProfile2D.xRMS(self, includeOverflows=True)\nxRMS on x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_143xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_143xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_142xRMS};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_143xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1469, __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(23, 1469, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1469, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_142xRMS(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_142xRMS(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 1);

  /* "include/generated/BinnedProfile2D.pyx":1471
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1471, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1472
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1472, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1472, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1472, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1471
 *     def xRMS(self, includeOverflows=True):
 *         """xRMS on x axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1473
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1473, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1474
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1474, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1474, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1474, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1473
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().xRMS(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1475
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1475, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1476
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1476, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1476, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->xRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1476, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1475
 *         if self._config == "di":
 *           return self.binned_di_ptr().xRMS(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1477
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().xRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1477, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1469
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1480
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_145rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_144rebinX, "BinnedProfile2D.rebinX(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_145rebinX = {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_145rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_144rebinX};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_145rebinX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1480, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinX") < 0)) __PYX_ERR(23, 1480, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinX", 0, 1, 1, __pyx_nargs); __PYX_ERR(23, 1480, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_144rebinX(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_144rebinX(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinX", 1);

  /* "include/generated/BinnedProfile2D.pyx":1481
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 1481, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1482
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(23, 1482, __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/generated/BinnedProfile2D.pyx":1481
 * 
 *     def rebinX(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinXTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":1484
 *             self.rebinXTo(arg)
 *         else:
 *             self.rebinXBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self, includeOverflows=False):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinXBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(23, 1484, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1484, __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(23, 1484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":1480
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1486
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_147numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_146numBinsY, "BinnedProfile2D.numBinsY(self, includeOverflows=False)\nnumBinsY on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_147numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_147numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_146numBinsY};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_147numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1486, __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, "numBinsY") < 0)) __PYX_ERR(23, 1486, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numBinsY", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1486, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_146numBinsY(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_146numBinsY(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_10;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 1);

  /* "include/generated/BinnedProfile2D.pyx":1488
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1488, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1489
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1489, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1489, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1489, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1488
 *     def numBinsY(self, includeOverflows=False):
 *         """numBinsY on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1490
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1490, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1491
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1491, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1491, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1491, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1490
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numBinsY(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1492
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1492, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1493
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1493, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1493, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1493, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1492
 *         if self._config == "di":
 *           return self.binned_di_ptr().numBinsY(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1494
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1494, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1495
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1495, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1495, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_8->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1495, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1494
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().numBinsY(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1496
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1496, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1497
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1497, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1497, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_9->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1497, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1496
 *         if self._config == "id":
 *           return self.binned_id_ptr().numBinsY(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1498
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1498, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1499
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1499, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1499, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_10->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1499, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1498
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().numBinsY(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1500
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1500, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1501
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1501, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1501, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_11->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1501, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1500
 *         if self._config == "is":
 *           return self.binned_is_ptr().numBinsY(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1502
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1502, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1503
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1503, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1503, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_12->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1503, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1502
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().numBinsY(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1504
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1504, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1505
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1505, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1505, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_13->numBinsY(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1505, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1504
 *         if self._config == "si":
 *           return self.binned_si_ptr().numBinsY(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1506
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().numBinsY(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1506, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1486
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1509
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_149yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_148yEdges, "BinnedProfile2D.yEdges(self, includeOverflows=False)\nyEdges on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_149yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_149yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_148yEdges};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_149yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_includeOverflows);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1509, __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, "yEdges") < 0)) __PYX_ERR(23, 1509, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yEdges", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1509, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_148yEdges(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_148yEdges(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  std::vector<int>  __pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  std::vector<std::string>  __pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  std::vector<double>  __pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  std::vector<int>  __pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  std::vector<std::string>  __pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  std::vector<double>  __pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  std::vector<int>  __pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  std::vector<std::string>  __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 1);

  /* "include/generated/BinnedProfile2D.pyx":1511
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1511, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1512
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1512, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1512, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1512, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1511
 *     def yEdges(self, includeOverflows=False):
 *         """yEdges on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1513
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1513, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1514
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1514, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1514, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1514, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1513
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yEdges(includeOverflows)
 *         if self._config == "di":             # <<<<<<<<<<<<<<
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1515
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1515, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1516
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1516, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1516, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1516, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1515
 *         if self._config == "di":
 *           return self.binned_di_ptr().yEdges(includeOverflows)
 *         if self._config == "ds":             # <<<<<<<<<<<<<<
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1517
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1517, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1518
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1518, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1518, __pyx_L1_error)
    try {
      __pyx_t_11 = __pyx_t_10->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1518, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1517
 *         if self._config == "ds":
 *           return self.binned_ds_ptr().yEdges(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1519
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1519, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1520
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1520, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1520, __pyx_L1_error)
    try {
      __pyx_t_13 = __pyx_t_12->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1520, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1519
 *         if self._config == "id":
 *           return self.binned_id_ptr().yEdges(includeOverflows)
 *         if self._config == "ii":             # <<<<<<<<<<<<<<
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1521
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1521, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1522
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1522, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1522, __pyx_L1_error)
    try {
      __pyx_t_15 = __pyx_t_14->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1522, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1521
 *         if self._config == "ii":
 *           return self.binned_ii_ptr().yEdges(includeOverflows)
 *         if self._config == "is":             # <<<<<<<<<<<<<<
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1523
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1523, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1524
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1524, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1524, __pyx_L1_error)
    try {
      __pyx_t_17 = __pyx_t_16->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1524, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1523
 *         if self._config == "is":
 *           return self.binned_is_ptr().yEdges(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1525
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1525, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1526
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1526, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1526, __pyx_L1_error)
    try {
      __pyx_t_19 = __pyx_t_18->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1526, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_int(__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1525
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yEdges(includeOverflows)
 *         if self._config == "si":             # <<<<<<<<<<<<<<
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1527
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1527, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1528
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1528, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1528, __pyx_L1_error)
    try {
      __pyx_t_21 = __pyx_t_20->yEdges(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1528, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_21); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1527
 *         if self._config == "si":
 *           return self.binned_si_ptr().yEdges(includeOverflows)
 *         if self._config == "ss":             # <<<<<<<<<<<<<<
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1529
 *         if self._config == "ss":
 *           return self.binned_ss_ptr().yEdges(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1529, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1509
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1532
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_151yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_150yWidths, "BinnedProfile2D.yWidths(self, includeOverflows=True)\nyWidths on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_151yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_151yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_150yWidths};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_151yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1532, __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, "yWidths") < 0)) __PYX_ERR(23, 1532, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yWidths", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1532, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_150yWidths(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_150yWidths(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  std::vector<double>  __pyx_t_7;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_8;
  std::vector<double>  __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 1);

  /* "include/generated/BinnedProfile2D.pyx":1534
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1534, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1535
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1535, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1535, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1535, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1534
 *     def yWidths(self, includeOverflows=True):
 *         """yWidths on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1536
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1536, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1537
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1537, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1537, __pyx_L1_error)
    try {
      __pyx_t_7 = __pyx_t_6->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1537, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1536
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yWidths(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1538
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1538, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1539
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1539, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1539, __pyx_L1_error)
    try {
      __pyx_t_9 = __pyx_t_8->yWidths(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1539, __pyx_L1_error)
    }
    __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1538
 *         if self._config == "id":
 *           return self.binned_id_ptr().yWidths(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1540
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yWidths(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1540, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1532
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1543
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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_15BinnedProfile2D_152yMin, "BinnedProfile2D.yMin(self)\nyMin on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_153yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_153yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_152yMin};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_152yMin(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_152yMin(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_5;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/BinnedProfile2D.pyx":1545
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1545, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1546
 *         """yMin on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1546, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1546, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1545
 *     def yMin(self):
 *         """yMin on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1547, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1548
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1548, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1548, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1547
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMin()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1549
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1549, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1550
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1550, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMin();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1550, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1549
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMin()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1551
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMin()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1551, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1543
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1554
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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_15BinnedProfile2D_154yMax, "BinnedProfile2D.yMax(self)\nyMax on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_155yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_155yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_154yMax};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_154yMax(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_154yMax(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_5;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/BinnedProfile2D.pyx":1556
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1556, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1557
 *         """yMax on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1557, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_2->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1557, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1557, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1556
 *     def yMax(self):
 *         """yMax on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1558
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1558, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1559
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1559, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_5->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1559, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1558
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMax()
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1560
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1560, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1561
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1561, __pyx_L1_error)
    try {
      __pyx_t_3 = __pyx_t_6->yMax();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1561, __pyx_L1_error)
    }
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1560
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMax()
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1562
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMax()
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1562, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1554
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1565
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_157rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_156rebinYBy, "BinnedProfile2D.rebinYBy(self, n, begin=1, end=sys.maxsize)\nrebinYBy on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_157rebinYBy = {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_157rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_156rebinYBy};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_157rebinYBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYBy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__106);
    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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1565, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1565, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1565, __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, "rebinYBy") < 0)) __PYX_ERR(23, 1565, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(23, 1565, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_156rebinYBy(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_156rebinYBy(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  unsigned int __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_7;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYBy", 1);

  /* "include/generated/BinnedProfile2D.pyx":1567
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1567, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1568
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1568, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1568, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1568, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1568, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYBy(__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(23, 1568, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1567
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1569
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1569, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1570
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1570, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1570, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1570, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1570, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYBy(__pyx_t_3, __pyx_t_5, __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1570, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1569
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYBy(n,begin,end)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1571
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1571, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1572
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1572, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_v_n); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(23, 1572, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1572, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 1572, __pyx_L1_error)
    try {
      __pyx_t_8->rebinYBy(__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(23, 1572, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1571
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYBy(n,begin,end)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1573
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYBy(n,begin,end)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1573, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1565
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.rebinYBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1576
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_159rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_158rebinYTo, "BinnedProfile2D.rebinYTo(self, edges)\nrebinYTo on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_159rebinYTo = {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_159rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_158rebinYTo};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_159rebinYTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinYTo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1576, __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, "rebinYTo") < 0)) __PYX_ERR(23, 1576, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinYTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 1576, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_158rebinYTo(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_158rebinYTo(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_5;
  std::vector<double>  __pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  std::vector<double>  __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinYTo", 1);

  /* "include/generated/BinnedProfile2D.pyx":1578
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1578, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1579
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1579, __pyx_L1_error)
    __pyx_t_3 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1579, __pyx_L1_error)
    try {
      __pyx_t_2->rebinYTo(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1579, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1578
 *     def rebinYTo(self, edges):
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1580
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1580, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1581
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1581, __pyx_L1_error)
    __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1581, __pyx_L1_error)
    try {
      __pyx_t_5->rebinYTo(__pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1581, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1580
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().rebinYTo(edges)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1582
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1582, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1583
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1583, __pyx_L1_error)
    __pyx_t_8 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1583, __pyx_L1_error)
    try {
      __pyx_t_7->rebinYTo(__pyx_t_8);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1583, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1582
 *         if self._config == "id":
 *           return self.binned_id_ptr().rebinYTo(edges)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1584
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().rebinYTo(edges)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1584, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1576
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */

  /* 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.BinnedProfile2D.rebinYTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1587
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_161yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_160yMean, "BinnedProfile2D.yMean(self, includeOverflows=True)\nyMean on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_161yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_161yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_160yMean};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_161yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1587, __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(23, 1587, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1587, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_160yMean(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_160yMean(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 1);

  /* "include/generated/BinnedProfile2D.pyx":1589
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1589, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1590
 *         """yMean on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1590, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1590, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1590, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1590, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1589
 *     def yMean(self, includeOverflows=True):
 *         """yMean on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1591
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1591, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1592
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1592, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1592, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1592, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1592, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1591
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yMean(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1593
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1593, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1594
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1594, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1594, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yMean(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1594, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1593
 *         if self._config == "id":
 *           return self.binned_id_ptr().yMean(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1595
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yMean(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1595, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1587
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1598
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_163yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_162yVariance, "BinnedProfile2D.yVariance(self, includeOverflows=True)\nyVariance on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_163yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_163yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_162yVariance};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_163yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1598, __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(23, 1598, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1598, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_162yVariance(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_162yVariance(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 1);

  /* "include/generated/BinnedProfile2D.pyx":1600
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1600, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1601
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1601, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1601, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1601, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1600
 *     def yVariance(self, includeOverflows=True):
 *         """yVariance on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1602
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1602, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1603
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1603, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1603, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1603, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1602
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yVariance(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1604
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1604, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1605
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1605, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1605, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yVariance(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1605, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1604
 *         if self._config == "id":
 *           return self.binned_id_ptr().yVariance(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1606
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yVariance(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1606, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1598
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1609
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_165yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_164yStdDev, "BinnedProfile2D.yStdDev(self, includeOverflows=True)\nyStdDev on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_165yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_165yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_164yStdDev};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_165yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1609, __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(23, 1609, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1609, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_164yStdDev(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_164yStdDev(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 1);

  /* "include/generated/BinnedProfile2D.pyx":1611
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1611, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1612
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1612, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1612, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1612, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1611
 *     def yStdDev(self, includeOverflows=True):
 *         """yStdDev on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1613
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1614
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1614, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1614, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1614, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1613
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdDev(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1615
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1615, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1616
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1616, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1616, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yStdDev(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1616, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1615
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdDev(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1617
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdDev(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1617, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1609
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1620
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_167yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_166yStdErr, "BinnedProfile2D.yStdErr(self, includeOverflows=True)\nyStdErr on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_167yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_167yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_166yStdErr};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_167yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1620, __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(23, 1620, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1620, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_166yStdErr(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_166yStdErr(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 1);

  /* "include/generated/BinnedProfile2D.pyx":1622
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1622, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1623
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1623, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1623, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1623, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1622
 *     def yStdErr(self, includeOverflows=True):
 *         """yStdErr on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1624
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1624, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1625
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1625, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1625, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1625, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1624
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yStdErr(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1626
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1626, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1627
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1627, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1627, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yStdErr(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1627, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1626
 *         if self._config == "id":
 *           return self.binned_id_ptr().yStdErr(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1628
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yStdErr(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1628, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1620
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1631
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_169yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_168yRMS, "BinnedProfile2D.yRMS(self, includeOverflows=True)\nyRMS on y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_169yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_169yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_168yRMS};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_169yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeOverflows,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1631, __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(23, 1631, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 1631, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_168yRMS(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_includeOverflows);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_168yRMS(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_includeOverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_6;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 1);

  /* "include/generated/BinnedProfile2D.pyx":1633
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1633, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1634
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1634, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1634, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_2->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1634, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1633
 *     def yRMS(self, includeOverflows=True):
 *         """yRMS on y axis."""
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1635
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1635, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1636
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1636, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1636, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_6->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1636, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1636, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1635
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().yRMS(includeOverflows)
 *         if self._config == "id":             # <<<<<<<<<<<<<<
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1637
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1637, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1638
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1638, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeOverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(23, 1638, __pyx_L1_error)
    try {
      __pyx_t_4 = __pyx_t_7->yRMS(__pyx_t_3);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(23, 1638, __pyx_L1_error)
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1637
 *         if self._config == "id":
 *           return self.binned_id_ptr().yRMS(includeOverflows)
 *         if self._config == "sd":             # <<<<<<<<<<<<<<
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1639
 *         if self._config == "sd":
 *           return self.binned_sd_ptr().yRMS(includeOverflows)
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1639, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1631
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */

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

/* "include/generated/BinnedProfile2D.pyx":1642
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_171rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_15BinnedProfile2D_170rebinY, "BinnedProfile2D.rebinY(self, arg, *args, **kwargs)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_171rebinY = {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_171rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_170rebinY};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_171rebinY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __pyx_v_args = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_args)) {
    __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_args);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,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_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 1642, __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, __pyx_v_kwargs, values + 0, used_pos_args, "rebinY") < 0)) __PYX_ERR(23, 1642, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinY", 0, 1, 1, __pyx_nargs); __PYX_ERR(23, 1642, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_170rebinY(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v_arg, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_170rebinY(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_args, 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;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinY", 1);

  /* "include/generated/BinnedProfile2D.pyx":1643
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 1643, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1644
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYTo); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_arg};
      __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(23, 1644, __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/generated/BinnedProfile2D.pyx":1643
 * 
 *     def rebinY(self, arg, *args, **kwargs):
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinYTo(arg)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/generated/BinnedProfile2D.pyx":1646
 *             self.rebinYTo(arg)
 *         else:
 *             self.rebinYBy(arg, *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinYBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg)) __PYX_ERR(23, 1646, __pyx_L1_error);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1646, __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(23, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 1646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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_6); __pyx_t_6 = 0;
  }
  __pyx_L3:;

  /* "include/generated/BinnedProfile2D.pyx":1642
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */

  /* 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_6);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.rebinY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1648
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_173__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_173__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1648, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_172__add__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_172__add__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1649
 * 
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1650
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1649
 * 
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1651
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1651, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 1651, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 1651, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":1652
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":1653
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1653, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1654
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1654, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1654, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile2D.pyx":1655
 *         if self._config == "dd":
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1653
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1656
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1656, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1657
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1657, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1657, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":1658
 *         elif self._config == "di":
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1656
 *           tmp = c.BP_add_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1659
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1659, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1660
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1660, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1660, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedProfile2D.pyx":1661
 *         elif self._config == "ds":
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1659
 *           tmp = c.BP_add_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1662
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1662, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1663
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1663, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1663, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedProfile2D.pyx":1664
 *         elif self._config == "id":
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1662
 *           tmp = c.BP_add_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1665
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1665, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1666
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1666, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1666, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedProfile2D.pyx":1667
 *         elif self._config == "ii":
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1665
 *           tmp = c.BP_add_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1668
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1668, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1669
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1669, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1669, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedProfile2D.pyx":1670
 *         elif self._config == "is":
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1668
 *           tmp = c.BP_add_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1671
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1671, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1672
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1672, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1672, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedProfile2D.pyx":1673
 *         elif self._config == "sd":
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1671
 *           tmp = c.BP_add_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1674
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1674, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1675
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1675, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1675, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedProfile2D.pyx":1676
 *         elif self._config == "si":
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1674
 *           tmp = c.BP_add_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1677
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1677, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1678
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1678, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1678, __pyx_L1_error)
    __pyx_v_tmp = cython_add(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedProfile2D.pyx":1679
 *         elif self._config == "ss":
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1677
 *           tmp = c.BP_add_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile2D.pyx":1680
 *           tmp = c.BP_add_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(23, 1680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1680, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedProfile2D.pyx":1681
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":1648
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def __add__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.__add__", __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/generated/BinnedProfile2D.pyx":1683
 *         return rtn
 * 
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_175__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_175__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1683, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_174__iadd__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_174__iadd__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_4;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1684
 * 
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1685
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1684
 * 
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1686
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1686, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 1686, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 1686, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":1687
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1687, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1688
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1688, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1688, __pyx_L1_error)
    cython_iadd(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile2D.pyx":1687
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1689
 *         if self._config == "dd":
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1689, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1690
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1690, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1690, __pyx_L1_error)
    cython_iadd(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedProfile2D.pyx":1689
 *         if self._config == "dd":
 *           c.BP_iadd_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1691
 *         elif self._config == "di":
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1691, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1692
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1692, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1692, __pyx_L1_error)
    cython_iadd(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":1691
 *         elif self._config == "di":
 *           c.BP_iadd_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1693
 *         elif self._config == "ds":
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1693, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1694
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1694, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1694, __pyx_L1_error)
    cython_iadd(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedProfile2D.pyx":1693
 *         elif self._config == "ds":
 *           c.BP_iadd_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1695
 *         elif self._config == "id":
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1695, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1696
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1696, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1696, __pyx_L1_error)
    cython_iadd(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedProfile2D.pyx":1695
 *         elif self._config == "id":
 *           c.BP_iadd_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1697
 *         elif self._config == "ii":
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1697, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1698
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1698, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1698, __pyx_L1_error)
    cython_iadd(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":1697
 *         elif self._config == "ii":
 *           c.BP_iadd_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1699
 *         elif self._config == "is":
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1699, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1700
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1700, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1700, __pyx_L1_error)
    cython_iadd(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":1699
 *         elif self._config == "is":
 *           c.BP_iadd_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1701
 *         elif self._config == "sd":
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1701, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1702
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BP_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1702, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1702, __pyx_L1_error)
    cython_iadd(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedProfile2D.pyx":1701
 *         elif self._config == "sd":
 *           c.BP_iadd_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1703
 *         elif self._config == "si":
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1703, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1704
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BP_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1704, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1704, __pyx_L1_error)
    cython_iadd(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedProfile2D.pyx":1703
 *         elif self._config == "si":
 *           c.BP_iadd_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BP_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile2D.pyx":1705
 *         elif self._config == "ss":
 *           c.BP_iadd_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":1683
 *         return rtn
 * 
 *     def __iadd__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedProfile2D.pyx":1707
 *         return self
 * 
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_177__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_177__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1707, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_176__sub__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_176__sub__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_v_rtn = NULL;
  void *__pyx_v_tmp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1708
 * 
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1709
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         rtn = None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1708
 * 
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1710
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         rtn = None
 *         if self._config == "dd":
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1710, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 1710, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 1710, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":1711
 *             return self
 *         assert(self._config == other._config)
 *         rtn = None             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rtn = Py_None;

  /* "include/generated/BinnedProfile2D.pyx":1712
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1712, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1713
 *         rtn = None
 *         if self._config == "dd":
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1713, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1713, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile2D.pyx":1714
 *         if self._config == "dd":
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1714, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1712
 *         assert(self._config == other._config)
 *         rtn = None
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1715
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1715, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1716
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":
 */
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1716, __pyx_L1_error)
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1716, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_6, __pyx_t_7);

    /* "include/generated/BinnedProfile2D.pyx":1717
 *         elif self._config == "di":
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1715
 *           tmp = c.BP_sub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1718
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1718, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1719
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":
 */
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1719, __pyx_L1_error)
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1719, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_8, __pyx_t_9);

    /* "include/generated/BinnedProfile2D.pyx":1720
 *         elif self._config == "ds":
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1718
 *           tmp = c.BP_sub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1721
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1721, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1722
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1722, __pyx_L1_error)
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1722, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_10, __pyx_t_11);

    /* "include/generated/BinnedProfile2D.pyx":1723
 *         elif self._config == "id":
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1721
 *           tmp = c.BP_sub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1724
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1724, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1725
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":
 */
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1725, __pyx_L1_error)
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1725, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_12, __pyx_t_13);

    /* "include/generated/BinnedProfile2D.pyx":1726
 *         elif self._config == "ii":
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1724
 *           tmp = c.BP_sub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1727
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1727, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1728
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":
 */
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1728, __pyx_L1_error)
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1728, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_14, __pyx_t_15);

    /* "include/generated/BinnedProfile2D.pyx":1729
 *         elif self._config == "is":
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1727
 *           tmp = c.BP_sub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1730
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1730, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1731
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":
 */
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1731, __pyx_L1_error)
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1731, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_16, __pyx_t_17);

    /* "include/generated/BinnedProfile2D.pyx":1732
 *         elif self._config == "sd":
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1730
 *           tmp = c.BP_sub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1733
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1733, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1734
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":
 */
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1734, __pyx_L1_error)
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1734, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_18, __pyx_t_19);

    /* "include/generated/BinnedProfile2D.pyx":1735
 *         elif self._config == "si":
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1733
 *           tmp = c.BP_sub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1736
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1736, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1737
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)
 */
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1737, __pyx_L1_error)
    __pyx_t_21 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_21 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1737, __pyx_L1_error)
    __pyx_v_tmp = cython_sub(__pyx_t_20, __pyx_t_21);

    /* "include/generated/BinnedProfile2D.pyx":1738
 *         elif self._config == "ss":
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)             # <<<<<<<<<<<<<<
 *         rtn._set_config(self._binning)
 *         return rtn
 */
    __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D), __pyx_v_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1738, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "include/generated/BinnedProfile2D.pyx":1736
 *           tmp = c.BP_sub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile2D.pyx":1739
 *           tmp = c.BP_sub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_set_config); if (unlikely(!__pyx_t_22)) __PYX_ERR(23, 1739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_23 = NULL;
  __pyx_t_24 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_22))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_22, function);
      __pyx_t_24 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_self->_binning};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_24, 1+__pyx_t_24);
    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 1739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/BinnedProfile2D.pyx":1740
 *           rtn = cutil.new_owned_cls(BinnedProfile2D, tmp)
 *         rtn._set_config(self._binning)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":1707
 *         return self
 * 
 *     def __sub__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.__sub__", __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/generated/BinnedProfile2D.pyx":1742
 *         return rtn
 * 
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_179__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_179__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1742, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_178__isub__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_178__isub__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_4;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1743
 * 
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  __pyx_t_2 = (__pyx_v_self->_binning == Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_other->_binning == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1744
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:
 *             return self             # <<<<<<<<<<<<<<
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __pyx_r = ((PyObject *)__pyx_v_self);
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1743
 * 
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._binning is None and other._binning is None:             # <<<<<<<<<<<<<<
 *             return self
 *         assert(self._config == other._config)
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1745
 *         if self._binning is None and other._binning is None:
 *             return self
 *         assert(self._config == other._config)             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_v_other->_config, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1745, __pyx_L1_error)
    if (unlikely(!__pyx_t_1)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(23, 1745, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(23, 1745, __pyx_L1_error)
  #endif

  /* "include/generated/BinnedProfile2D.pyx":1746
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1746, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1747
 *         assert(self._config == other._config)
 *         if self._config == "dd":
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1747, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1747, __pyx_L1_error)
    cython_isub(__pyx_t_3, __pyx_t_4);

    /* "include/generated/BinnedProfile2D.pyx":1746
 *             return self
 *         assert(self._config == other._config)
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1748
 *         if self._config == "dd":
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1748, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1749
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1749, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1749, __pyx_L1_error)
    cython_isub(__pyx_t_5, __pyx_t_6);

    /* "include/generated/BinnedProfile2D.pyx":1748
 *         if self._config == "dd":
 *           c.BP_isub_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1750
 *         elif self._config == "di":
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1750, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1751
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1751, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1751, __pyx_L1_error)
    cython_isub(__pyx_t_7, __pyx_t_8);

    /* "include/generated/BinnedProfile2D.pyx":1750
 *         elif self._config == "di":
 *           c.BP_isub_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1752
 *         elif self._config == "ds":
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1752, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1753
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1753, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1753, __pyx_L1_error)
    cython_isub(__pyx_t_9, __pyx_t_10);

    /* "include/generated/BinnedProfile2D.pyx":1752
 *         elif self._config == "ds":
 *           c.BP_isub_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1754
 *         elif self._config == "id":
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1754, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1755
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1755, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1755, __pyx_L1_error)
    cython_isub(__pyx_t_11, __pyx_t_12);

    /* "include/generated/BinnedProfile2D.pyx":1754
 *         elif self._config == "id":
 *           c.BP_isub_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1756
 *         elif self._config == "ii":
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1756, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1757
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1757, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1757, __pyx_L1_error)
    cython_isub(__pyx_t_13, __pyx_t_14);

    /* "include/generated/BinnedProfile2D.pyx":1756
 *         elif self._config == "ii":
 *           c.BP_isub_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1758
 *         elif self._config == "is":
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1758, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1759
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1759, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1759, __pyx_L1_error)
    cython_isub(__pyx_t_15, __pyx_t_16);

    /* "include/generated/BinnedProfile2D.pyx":1758
 *         elif self._config == "is":
 *           c.BP_isub_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1760
 *         elif self._config == "sd":
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1760, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1761
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           c.BP_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1761, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1761, __pyx_L1_error)
    cython_isub(__pyx_t_17, __pyx_t_18);

    /* "include/generated/BinnedProfile2D.pyx":1760
 *         elif self._config == "sd":
 *           c.BP_isub_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
    goto __pyx_L6;
  }

  /* "include/generated/BinnedProfile2D.pyx":1762
 *         elif self._config == "si":
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1762, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1763
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           c.BP_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1763, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1763, __pyx_L1_error)
    cython_isub(__pyx_t_19, __pyx_t_20);

    /* "include/generated/BinnedProfile2D.pyx":1762
 *         elif self._config == "si":
 *           c.BP_isub_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           c.BP_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self
 */
  }
  __pyx_L6:;

  /* "include/generated/BinnedProfile2D.pyx":1764
 *         elif self._config == "ss":
 *           c.BP_isub_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/BinnedProfile2D.pyx":1742
 *         return rtn
 * 
 *     def __isub__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._binning is None and other._binning is None:
 *             return self
 */

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

/* "include/generated/BinnedProfile2D.pyx":1766
 *         return self
 * 
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_181__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_181__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1766, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_180__eq__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_180__eq__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1767
 * 
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1767, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1768
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1768, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1768, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1767
 * 
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1769
 *         if self._config == "dd":
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1769, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1770
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1770, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1770, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1769
 *         if self._config == "dd":
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1771
 *         elif self._config == "di":
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1771, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1772
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1772, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1772, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1771
 *         elif self._config == "di":
 *           return c.BP_eq_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1773
 *         elif self._config == "ds":
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1773, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1774
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1774, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1774, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1773
 *         elif self._config == "ds":
 *           return c.BP_eq_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1775
 *         elif self._config == "id":
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1775, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1776
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1776, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1776, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1775
 *         elif self._config == "id":
 *           return c.BP_eq_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1777
 *         elif self._config == "ii":
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1777, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1778
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1778, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1778, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1777
 *         elif self._config == "ii":
 *           return c.BP_eq_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1779
 *         elif self._config == "is":
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1779, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1780
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1780, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1780, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1779
 *         elif self._config == "is":
 *           return c.BP_eq_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1781
 *         elif self._config == "sd":
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1781, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1782
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BP_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1782, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1782, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1781
 *         elif self._config == "sd":
 *           return c.BP_eq_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1783
 *         elif self._config == "si":
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1783, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1784
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BP_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1784, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1784, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_eq(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1783
 *         elif self._config == "si":
 *           return c.BP_eq_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BP_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1785
 *         elif self._config == "ss":
 *           return c.BP_eq_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1785, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1766
 *         return self
 * 
 *     def __eq__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BP_eq_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedProfile2D.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":1787
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_183__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_183__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_BinnedProfile2D, 1, "other", 0))) __PYX_ERR(23, 1787, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_182__ne__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__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_15BinnedProfile2D_182__ne__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_2;
  YODA::BinnedProfile2D<double,double>  *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_5;
  YODA::BinnedProfile2D<double,int>  *__pyx_t_6;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_7;
  YODA::BinnedProfile2D<double,std::string>  *__pyx_t_8;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_9;
  YODA::BinnedProfile2D<int,double>  *__pyx_t_10;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_11;
  YODA::BinnedProfile2D<int,int>  *__pyx_t_12;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_13;
  YODA::BinnedProfile2D<int,std::string>  *__pyx_t_14;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_15;
  YODA::BinnedProfile2D<std::string,double>  *__pyx_t_16;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_17;
  YODA::BinnedProfile2D<std::string,int>  *__pyx_t_18;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_19;
  YODA::BinnedProfile2D<std::string,std::string>  *__pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__ne__", 1);

  /* "include/generated/BinnedProfile2D.pyx":1788
 * 
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_dd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1788, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1789
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "di":
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1789, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::BinnedProfile2D<double,double>  *)NULL))) __PYX_ERR(23, 1789, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1789, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1788
 * 
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):
 *         if self._config == "dd":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1790
 *         if self._config == "dd":
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_di, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1790, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1791
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ds":
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1791, __pyx_L1_error)
    __pyx_t_6 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::BinnedProfile2D<double,int>  *)NULL))) __PYX_ERR(23, 1791, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_5, __pyx_t_6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1790
 *         if self._config == "dd":
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 *         elif self._config == "di":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1792
 *         elif self._config == "di":
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ds, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1792, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1793
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "id":
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1793, __pyx_L1_error)
    __pyx_t_8 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr(__pyx_v_other); if (unlikely(__pyx_t_8 == ((YODA::BinnedProfile2D<double,std::string>  *)NULL))) __PYX_ERR(23, 1793, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_7, __pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1792
 *         elif self._config == "di":
 *           return c.BP_ne_di(self.binned_di_ptr(), other.binned_di_ptr())
 *         elif self._config == "ds":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1794
 *         elif self._config == "ds":
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_id, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1794, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1795
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ii":
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_self); if (unlikely(__pyx_t_9 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1795, __pyx_L1_error)
    __pyx_t_10 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr(__pyx_v_other); if (unlikely(__pyx_t_10 == ((YODA::BinnedProfile2D<int,double>  *)NULL))) __PYX_ERR(23, 1795, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1794
 *         elif self._config == "ds":
 *           return c.BP_ne_ds(self.binned_ds_ptr(), other.binned_ds_ptr())
 *         elif self._config == "id":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1796
 *         elif self._config == "id":
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ii, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1796, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1797
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "is":
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1797, __pyx_L1_error)
    __pyx_t_12 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr(__pyx_v_other); if (unlikely(__pyx_t_12 == ((YODA::BinnedProfile2D<int,int>  *)NULL))) __PYX_ERR(23, 1797, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_11, __pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1796
 *         elif self._config == "id":
 *           return c.BP_ne_id(self.binned_id_ptr(), other.binned_id_ptr())
 *         elif self._config == "ii":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1798
 *         elif self._config == "ii":
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_is, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1798, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1799
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "sd":
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_13 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_self); if (unlikely(__pyx_t_13 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1799, __pyx_L1_error)
    __pyx_t_14 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr(__pyx_v_other); if (unlikely(__pyx_t_14 == ((YODA::BinnedProfile2D<int,std::string>  *)NULL))) __PYX_ERR(23, 1799, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1798
 *         elif self._config == "ii":
 *           return c.BP_ne_ii(self.binned_ii_ptr(), other.binned_ii_ptr())
 *         elif self._config == "is":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1800
 *         elif self._config == "is":
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_sd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1800, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1801
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "si":
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_15 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_self); if (unlikely(__pyx_t_15 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1801, __pyx_L1_error)
    __pyx_t_16 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr(__pyx_v_other); if (unlikely(__pyx_t_16 == ((YODA::BinnedProfile2D<std::string,double>  *)NULL))) __PYX_ERR(23, 1801, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_15, __pyx_t_16)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1800
 *         elif self._config == "is":
 *           return c.BP_ne_is(self.binned_is_ptr(), other.binned_is_ptr())
 *         elif self._config == "sd":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1802
 *         elif self._config == "sd":
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_si, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1802, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1803
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())             # <<<<<<<<<<<<<<
 *         elif self._config == "ss":
 *           return c.BP_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_17 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1803, __pyx_L1_error)
    __pyx_t_18 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr(__pyx_v_other); if (unlikely(__pyx_t_18 == ((YODA::BinnedProfile2D<std::string,int>  *)NULL))) __PYX_ERR(23, 1803, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_17, __pyx_t_18)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1802
 *         elif self._config == "sd":
 *           return c.BP_ne_sd(self.binned_sd_ptr(), other.binned_sd_ptr())
 *         elif self._config == "si":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1804
 *         elif self._config == "si":
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_config, __pyx_n_s_ss, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 1804, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/BinnedProfile2D.pyx":1805
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":
 *           return c.BP_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())             # <<<<<<<<<<<<<<
 *         print("WARNING: method not supported for this axis type!")
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_19 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_self); if (unlikely(__pyx_t_19 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1805, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr(__pyx_v_other); if (unlikely(__pyx_t_20 == ((YODA::BinnedProfile2D<std::string,std::string>  *)NULL))) __PYX_ERR(23, 1805, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong(cython_ne(__pyx_t_19, __pyx_t_20)); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 1805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/BinnedProfile2D.pyx":1804
 *         elif self._config == "si":
 *           return c.BP_ne_si(self.binned_si_ptr(), other.binned_si_ptr())
 *         elif self._config == "ss":             # <<<<<<<<<<<<<<
 *           return c.BP_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")
 */
  }

  /* "include/generated/BinnedProfile2D.pyx":1806
 *         elif self._config == "ss":
 *           return c.BP_ne_ss(self.binned_ss_ptr(), other.binned_ss_ptr())
 *         print("WARNING: method not supported for this axis type!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_PrintOne(0, __pyx_kp_s_WARNING_method_not_supported_for) < 0) __PYX_ERR(23, 1806, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1787
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def __ne__(BinnedProfile2D self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return c.BP_ne_dd(self.binned_dd_ptr(), other.binned_dd_ptr())
 */

  /* 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.BinnedProfile2D.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/BinnedProfile2D.pyx":27
 * 
 *     cdef public:
 *       str _config             # <<<<<<<<<<<<<<
 *       object _binning
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config___get__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_7_config___get__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_config);
  __pyx_r = __pyx_v_self->_config;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_2__set__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_value) {
  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("__set__", 1);
  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(23, 27, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_4__del__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile2D_7_config_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_config);
  __Pyx_DECREF(__pyx_v_self->_config);
  __pyx_v_self->_config = ((PyObject*)Py_None);

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

/* "include/generated/BinnedProfile2D.pyx":28
 *     cdef public:
 *       str _config
 *       object _binning             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.BinnedProfile2D[double,double]* binned_dd_ptr(self) except NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning___get__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning___get__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_binning);
  __pyx_r = __pyx_v_self->_binning;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_2__set__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_2__set__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_4__del__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static int __pyx_pf_4yoda_4core_15BinnedProfile2D_8_binning_4__del__(struct __pyx_obj_4yoda_4core_BinnedProfile2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_binning);
  __Pyx_DECREF(__pyx_v_self->_binning);
  __pyx_v_self->_binning = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __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_15BinnedProfile2D_185__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_15BinnedProfile2D_184__reduce_cython__, "BinnedProfile2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_185__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_185__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_184__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_185__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_15BinnedProfile2D_184__reduce_cython__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_184__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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__", 1);

  /* "(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(1, 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.BinnedProfile2D.__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_15BinnedProfile2D_187__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_15BinnedProfile2D_186__setstate_cython__, "BinnedProfile2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_15BinnedProfile2D_187__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_187__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_186__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_15BinnedProfile2D_187__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.BinnedProfile2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_15BinnedProfile2D_186__setstate_cython__(((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_15BinnedProfile2D_186__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_BinnedProfile2D *__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__", 1);

  /* "(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(1, 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.BinnedProfile2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn1D.pyx":14
 *     """
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 * 
 */

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

  /* "include/generated/Dbn1D.pyx":15
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:
 *         return <c.Dbn1D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(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(24, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":14
 *     """
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 * 
 */

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

/* "include/generated/Dbn1D.pyx":17
 *         return <c.Dbn1D *> self.ptr()
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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___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___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__", 1);

  /* "include/generated/Dbn1D.pyx":18
 * 
 *     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(24, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Dbn1D.pyx":17
 *         return <c.Dbn1D *> self.ptr()
 * 
 *     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/generated/Dbn1D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_2__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_2__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;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/generated/Dbn1D.pyx":21
 * 
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(24, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __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/generated/Dbn1D.pyx":22
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(24, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __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(24, 22, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __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/generated/Dbn1D.pyx":23
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean)) __PYX_ERR(24, 23, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd)) __PYX_ERR(24, 23, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn1D_mean_s_stddev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 23, __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/generated/Dbn1D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.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_XDECREF(__pyx_t_4);
  __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/generated/Dbn1D.pyx":25
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_4copy, "Dbn1D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_5copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_4copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4copy(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_4copy(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", 1);

  /* "include/generated/Dbn1D.pyx":26
 * 
 *     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(24, 26, __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(24, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":25
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     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/generated/Dbn1D.pyx":28
 *         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_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_6reset, "Dbn1D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_7reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_6reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_6reset(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_6reset(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", 1);

  /* "include/generated/Dbn1D.pyx":34
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d1ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def set(self, float numEntries, sumW, sumW2):
 */
  __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(24, 34, __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, 34, __pyx_L1_error)
  }

  /* "include/generated/Dbn1D.pyx":28
 *         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/generated/Dbn1D.pyx":36
 *         self.d1ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_8set, "Dbn1D.set(self, float numEntries, sumW, sumW2)\n\n        State-setting method.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_9set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_8set};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  float __pyx_v_numEntries;
  PyObject *__pyx_v_sumW = 0;
  PyObject *__pyx_v_sumW2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_numEntries,&__pyx_n_s_sumW,&__pyx_n_s_sumW2,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_numEntries)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 36, __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_sumW)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 1); __PYX_ERR(24, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumW2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 2); __PYX_ERR(24, 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, "set") < 0)) __PYX_ERR(24, 36, __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_numEntries = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_numEntries == (float)-1) && PyErr_Occurred())) __PYX_ERR(24, 36, __pyx_L3_error)
    __pyx_v_sumW = values[1];
    __pyx_v_sumW2 = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, __pyx_nargs); __PYX_ERR(24, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_8set(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_numEntries, __pyx_v_sumW, __pyx_v_sumW2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_8set(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2) {
  std::vector<double>  __pyx_v_sW;
  std::vector<double>  __pyx_v_sW2;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Dbn1D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 1);

  /* "include/generated/Dbn1D.pyx":41
 *         """
 *         cdef vector[double] sW
 *         sW = [ float(w) for w in sumW ]             # <<<<<<<<<<<<<<
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW)) || PyTuple_CheckExact(__pyx_v_sumW)) {
    __pyx_t_2 = __pyx_v_sumW; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 41, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(24, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(24, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 41, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(24, 41, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn1D.pyx":43
 *         sW = [ float(w) for w in sumW ]
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]             # <<<<<<<<<<<<<<
 * 
 *         self.d1ptr().set(numEntries, sW, sW2)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW2)) || PyTuple_CheckExact(__pyx_v_sumW2)) {
    __pyx_t_2 = __pyx_v_sumW2; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW2); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 43, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(24, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(24, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 43, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(24, 43, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn1D.pyx":45
 *         sW2 = [ float(w) for w in sumW2 ]
 * 
 *         self.d1ptr().set(numEntries, sW, sW2)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(24, 45, __pyx_L1_error)
  try {
    __pyx_t_7->set(__pyx_v_numEntries, __pyx_v_sW, __pyx_v_sW2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 45, __pyx_L1_error)
  }

  /* "include/generated/Dbn1D.pyx":36
 *         self.d1ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Dbn1D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn1D.pyx":48
 * 
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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_weight);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 48, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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, "fill") < 0)) __PYX_ERR(24, 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_x = values[0];
    __pyx_v_weight = values[1];
    __pyx_v_fraction = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 1, 3, __pyx_nargs); __PYX_ERR(24, 48, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/generated/Dbn1D.pyx":54
 *         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(24, 54, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 54, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 54, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 54, __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(24, 54, __pyx_L1_error)
  }

  /* "include/generated/Dbn1D.pyx":48
 * 
 * 
 *     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/generated/Dbn1D.pyx":56
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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, "scaleW") < 0)) __PYX_ERR(24, 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_w = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/generated/Dbn1D.pyx":62
 *         Scale the weights by the given factor.
 *         """
 *         self.d1ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, i, 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(24, 62, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 62, __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, 62, __pyx_L1_error)
  }

  /* "include/generated/Dbn1D.pyx":56
 *         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/generated/Dbn1D.pyx":64
 *         self.d1ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14scale, "Dbn1D.scale(self, i, w)\n\n        (int, float) -> None\n\n        Scale the weights by the given factor along axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_15scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_14scale};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 64, __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_w)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 64, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(24, 64, __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(24, 64, __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_w = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_14scale(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_i, __pyx_v_w);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_14scale(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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", 1);

  /* "include/generated/Dbn1D.pyx":70
 *         Scale the weights by the given factor along axis i.
 *         """
 *         self.d1ptr().scale(i, w)             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self):
 */
  __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(24, 70, __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, 70, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 70, __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(24, 70, __pyx_L1_error)
  }

  /* "include/generated/Dbn1D.pyx":64
 *         self.d1ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

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

/* "include/generated/Dbn1D.pyx":72
 *         self.d1ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16numEntries, "Dbn1D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_17numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_16numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16numEntries(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_16numEntries(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("numEntries", 1);

  /* "include/generated/Dbn1D.pyx":74
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(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(24, 74, __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(24, 74, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":72
 *         self.d1ptr().scale(i, w)
 * 
 *     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/generated/Dbn1D.pyx":76
 *         return self.d1ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18effNumEntries, "Dbn1D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_19effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_18effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_18effNumEntries(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", 1);

  /* "include/generated/Dbn1D.pyx":78
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 *     def sumW(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(24, 78, __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(24, 78, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":76
 *         return self.d1ptr().numEntries()
 * 
 *     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/generated/Dbn1D.pyx":80
 *         return self.d1ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20sumW, "Dbn1D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_21sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_20sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_20sumW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_20sumW(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", 1);

  /* "include/generated/Dbn1D.pyx":82
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(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(24, 82, __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(24, 82, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":80
 *         return self.d1ptr().effNumEntries()
 * 
 *     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/generated/Dbn1D.pyx":84
 *         return self.d1ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_22sumW2, "Dbn1D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_23sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_22sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_22sumW2(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_22sumW2(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", 1);

  /* "include/generated/Dbn1D.pyx":86
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     def errW(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(24, 86, __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(24, 86, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":84
 *         return self.d1ptr().sumW()
 * 
 *     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/generated/Dbn1D.pyx":88
 *         return self.d1ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24errW, "Dbn1D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_25errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_24errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_24errW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_24errW(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", 1);

  /* "include/generated/Dbn1D.pyx":90
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d1ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     def relErrW(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(24, 90, __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(24, 90, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":88
 *         return self.d1ptr().sumW2()
 * 
 *     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/generated/Dbn1D.pyx":92
 *         return self.d1ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26relErrW, "Dbn1D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_27relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_26relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26relErrW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_26relErrW(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", 1);

  /* "include/generated/Dbn1D.pyx":94
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 *     def mean(self, dim = 0):
 */
  __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(24, 94, __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(24, 94, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":92
 *         return self.d1ptr().errW()
 * 
 *     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/generated/Dbn1D.pyx":96
 *         return self.d1ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d1ptr().mean(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28mean, "Dbn1D.mean(self, dim=0)\nWeighted mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_29mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_28mean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 96, __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, "mean") < 0)) __PYX_ERR(24, 96, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 96, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_28mean(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_28mean(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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("mean", 1);

  /* "include/generated/Dbn1D.pyx":98
 *     def mean(self, dim = 0):
 *         """Weighted mean on axis dim"""
 *         return self.d1ptr().mean(dim)             # <<<<<<<<<<<<<<
 * 
 *     def variance(self, dim = 0):
 */
  __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(24, 98, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 98, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->mean(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 98, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":96
 *         return self.d1ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d1ptr().mean(dim)
 */

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

/* "include/generated/Dbn1D.pyx":100
 *         return self.d1ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d1ptr().variance(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30variance, "Dbn1D.variance(self, dim=0)\nWeighted variance on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_31variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_30variance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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, "variance") < 0)) __PYX_ERR(24, 100, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("variance", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_30variance(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_30variance(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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("variance", 1);

  /* "include/generated/Dbn1D.pyx":102
 *     def variance(self, dim = 0):
 *         """Weighted variance on axis dim"""
 *         return self.d1ptr().variance(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdDev(self, dim = 0):
 */
  __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(24, 102, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 102, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->variance(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 102, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":100
 *         return self.d1ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d1ptr().variance(dim)
 */

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

/* "include/generated/Dbn1D.pyx":104
 *         return self.d1ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d1ptr().stdDev(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32stdDev, "Dbn1D.stdDev(self, dim=0)\nWeighted standard deviation on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_33stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_32stdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(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, "stdDev") < 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_32stdDev(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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("stdDev", 1);

  /* "include/generated/Dbn1D.pyx":106
 *     def stdDev(self, dim = 0):
 *         """Weighted standard deviation on axis dim"""
 *         return self.d1ptr().stdDev(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdErr(self, dim = 0):
 */
  __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(24, 106, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 106, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdDev(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 106, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":104
 *         return self.d1ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d1ptr().stdDev(dim)
 */

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

/* "include/generated/Dbn1D.pyx":108
 *         return self.d1ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d1ptr().stdErr(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34stdErr, "Dbn1D.stdErr(self, dim=0)\nWeighted standard error on the mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_35stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_34stdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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, "stdErr") < 0)) __PYX_ERR(24, 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 108, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_34stdErr(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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("stdErr", 1);

  /* "include/generated/Dbn1D.pyx":110
 *     def stdErr(self, dim = 0):
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d1ptr().stdErr(dim)             # <<<<<<<<<<<<<<
 * 
 *     def RMS(self, dim = 0):
 */
  __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(24, 110, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 110, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 110, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":108
 *         return self.d1ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d1ptr().stdErr(dim)
 */

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

/* "include/generated/Dbn1D.pyx":112
 *         return self.d1ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d1ptr().RMS(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36RMS, "Dbn1D.RMS(self, dim=0)\nWeighted RMS on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_37RMS = {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_36RMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("RMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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, "RMS") < 0)) __PYX_ERR(24, 112, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("RMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 112, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn1D.RMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_36RMS(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_36RMS(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__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("RMS", 1);

  /* "include/generated/Dbn1D.pyx":114
 *     def RMS(self, dim = 0):
 *         """Weighted RMS on axis dim"""
 *         return self.d1ptr().RMS(dim)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(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(24, 114, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 114, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->RMS(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 114, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":112
 *         return self.d1ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d1ptr().RMS(dim)
 */

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

/* "include/generated/Dbn1D.pyx":116
 *         return self.d1ptr().RMS(dim)
 * 
 *     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_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn1D, 1, "other", 0))) __PYX_ERR(24, 116, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_38__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_38__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__", 1);

  /* "include/generated/Dbn1D.pyx":117
 * 
 *     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(24, 117, __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(24, 117, __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(24, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":116
 *         return self.d1ptr().RMS(dim)
 * 
 *     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/generated/Dbn1D.pyx":119
 *         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_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn1D, 1, "other", 0))) __PYX_ERR(24, 119, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_40__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_40__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__", 1);

  /* "include/generated/Dbn1D.pyx":120
 * 
 *     def __sub__(Dbn1D self, Dbn1D other):
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __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(24, 120, __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(24, 120, __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(24, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":119
 *         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;
}

/* "include/generated/Dbn1D.pyx":122
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "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_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 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(24, 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_x = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 122, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_42scaleX(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", 1);

  /* "include/generated/Dbn1D.pyx":128
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d1ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xMean(self):
 */
  __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(24, 128, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 128, __pyx_L1_error)
  __pyx_t_1->scaleX(__pyx_t_2);

  /* "include/generated/Dbn1D.pyx":122
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 * 
 *     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/generated/Dbn1D.pyx":130
 *         self.d1ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44xMean, "Dbn1D.xMean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_45xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_44xMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_44xMean(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_44xMean(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", 1);

  /* "include/generated/Dbn1D.pyx":132
 *     def xMean(self):
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(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(24, 132, __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(24, 132, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":130
 *         self.d1ptr().scaleX(x)
 * 
 *     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/generated/Dbn1D.pyx":134
 *         return self.d1ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46xVariance, "Dbn1D.xVariance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_47xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_46xVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_46xVariance(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_46xVariance(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", 1);

  /* "include/generated/Dbn1D.pyx":136
 *     def xVariance(self):
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(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(24, 136, __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(24, 136, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":134
 *         return self.d1ptr().xMean()
 * 
 *     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/generated/Dbn1D.pyx":138
 *         return self.d1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48xStdDev, "Dbn1D.xStdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_49xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_48xStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_48xStdDev(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_48xStdDev(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", 1);

  /* "include/generated/Dbn1D.pyx":140
 *     def xStdDev(self):
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(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(24, 140, __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(24, 140, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":138
 *         return self.d1ptr().xVariance()
 * 
 *     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/generated/Dbn1D.pyx":142
 *         return self.d1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_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_5Dbn1D_50xStdErr, "Dbn1D.xStdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_51xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_50xStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_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
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_50xStdErr(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_50xStdErr(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", 1);

  /* "include/generated/Dbn1D.pyx":144
 *     def xStdErr(self):
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(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(24, 144, __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(24, 144, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__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/generated/Dbn1D.pyx":142
 *         return self.d1ptr().xStdDev()
 * 
 *     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/generated/Dbn1D.pyx":146
 *         return self.d1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52xRMS, "Dbn1D.xRMS(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_53xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_52xRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_52xRMS(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_52xRMS(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", 1);

  /* "include/generated/Dbn1D.pyx":148
 *     def xRMS(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX(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(24, 148, __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(24, 148, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":146
 *         return self.d1ptr().xStdErr()
 * 
 *     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/generated/Dbn1D.pyx":150
 *         return self.d1ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54sumWX, "Dbn1D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_55sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_54sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_54sumWX(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_54sumWX(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", 1);

  /* "include/generated/Dbn1D.pyx":152
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(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(24, 152, __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(24, 152, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":150
 *         return self.d1ptr().xRMS()
 * 
 *     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/generated/Dbn1D.pyx":154
 *         return self.d1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56sumWX2, "Dbn1D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_57sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_56sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_56sumWX2(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_56sumWX2(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", 1);

  /* "include/generated/Dbn1D.pyx":156
 *     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(24, 156, __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(24, 156, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn1D.pyx":154
 *         return self.d1ptr().sumWX()
 * 
 *     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;
}

/* "(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_59__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_58__reduce_cython__, "Dbn1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_59__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_59__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_58__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_59__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_58__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_58__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__", 1);

  /* "(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(1, 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_61__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_60__setstate_cython__, "Dbn1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_61__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_61__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_60__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_61__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_60__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_60__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__", 1);

  /* "(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(1, 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/generated/Dbn2D.pyx":14
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Dbn2D.pyx":15
 * 
 *     cdef c.Dbn2D* d2ptr(self) except NULL:
 *         return <c.Dbn2D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(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, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":14
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Dbn2D.pyx":17
 *         return <c.Dbn2D *> self.ptr()
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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___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___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__", 1);

  /* "include/generated/Dbn2D.pyx":18
 * 
 *     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(25, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Dbn2D.pyx":17
 *         return <c.Dbn2D *> self.ptr()
 * 
 *     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/generated/Dbn2D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_2__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_2__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;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/generated/Dbn2D.pyx":21
 * 
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(25, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(25, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __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/generated/Dbn2D.pyx":22
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(25, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __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(25, 22, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __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/generated/Dbn2D.pyx":23
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean)) __PYX_ERR(25, 23, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd)) __PYX_ERR(25, 23, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn2D_mean_s_stddev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 23, __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/generated/Dbn2D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.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_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":25
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_4copy, "Dbn2D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_5copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_4copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4copy(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_4copy(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", 1);

  /* "include/generated/Dbn2D.pyx":26
 * 
 *     def copy(self):
 *         return cutil.set_owned_ptr(self, 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(25, 26, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn2D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":25
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, 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/generated/Dbn2D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_6reset, "Dbn2D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_7reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_6reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_6reset(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_6reset(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", 1);

  /* "include/generated/Dbn2D.pyx":34
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d2ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):
 */
  __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(25, 34, __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(25, 34, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":28
 *         return cutil.set_owned_ptr(self, 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/generated/Dbn2D.pyx":36
 *         self.d2ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_8set, "Dbn2D.set(self, float numEntries, sumW, sumW2, sumWcross)\n\n        State-setting method.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_9set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_8set};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  float __pyx_v_numEntries;
  PyObject *__pyx_v_sumW = 0;
  PyObject *__pyx_v_sumW2 = 0;
  PyObject *__pyx_v_sumWcross = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_numEntries,&__pyx_n_s_sumW,&__pyx_n_s_sumW2,&__pyx_n_s_sumWcross,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_numEntries)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 36, __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_sumW)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 1); __PYX_ERR(25, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumW2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 2); __PYX_ERR(25, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumWcross)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 3); __PYX_ERR(25, 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, "set") < 0)) __PYX_ERR(25, 36, __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_numEntries = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_numEntries == (float)-1) && PyErr_Occurred())) __PYX_ERR(25, 36, __pyx_L3_error)
    __pyx_v_sumW = values[1];
    __pyx_v_sumW2 = values[2];
    __pyx_v_sumWcross = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, __pyx_nargs); __PYX_ERR(25, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_8set(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_numEntries, __pyx_v_sumW, __pyx_v_sumW2, __pyx_v_sumWcross);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_8set(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2, PyObject *__pyx_v_sumWcross) {
  std::vector<double>  __pyx_v_sW;
  std::vector<double>  __pyx_v_sW2;
  std::vector<double>  __pyx_v_sWcross;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Dbn2D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 1);

  /* "include/generated/Dbn2D.pyx":41
 *         """
 *         cdef vector[double] sW
 *         sW = [ float(w) for w in sumW ]             # <<<<<<<<<<<<<<
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW)) || PyTuple_CheckExact(__pyx_v_sumW)) {
    __pyx_t_2 = __pyx_v_sumW; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 41, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(25, 41, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(25, 41, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn2D.pyx":43
 *         sW = [ float(w) for w in sumW ]
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]             # <<<<<<<<<<<<<<
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW2)) || PyTuple_CheckExact(__pyx_v_sumW2)) {
    __pyx_t_2 = __pyx_v_sumW2; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW2); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 43, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(25, 43, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(25, 43, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn2D.pyx":45
 *         sW2 = [ float(w) for w in sumW2 ]
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]             # <<<<<<<<<<<<<<
 *         self.d2ptr().set(numEntries, sW, sW2, sWcross)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumWcross)) || PyTuple_CheckExact(__pyx_v_sumWcross)) {
    __pyx_t_2 = __pyx_v_sumWcross; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumWcross); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 45, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 45, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 45, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 45, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(25, 45, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(25, 45, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 45, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(25, 45, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(25, 45, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sWcross = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn2D.pyx":46
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]
 *         self.d2ptr().set(numEntries, sW, sW2, sWcross)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(25, 46, __pyx_L1_error)
  try {
    __pyx_t_7->set(__pyx_v_numEntries, __pyx_v_sW, __pyx_v_sW2, __pyx_v_sWcross);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 46, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":36
 *         self.d2ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Dbn2D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn2D.pyx":49
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float 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        (float x, float y, float weight=1.0) -> None\n\n        Fills the distribution with the given weight at given x.\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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 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_y)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(25, 49, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 49, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 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, "fill") < 0)) __PYX_ERR(25, 49, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(25, 49, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/generated/Dbn2D.pyx":55
 *         Fills the distribution with the given weight at given x.
 *         """
 *         self.d2ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, w):
 */
  __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(25, 55, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 55, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 55, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 55, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 55, __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(25, 55, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":49
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, 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.Dbn2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn2D.pyx":57
 *         self.d2ptr().fill(x, y, weight, fraction)
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 57, __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(25, 57, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 57, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/generated/Dbn2D.pyx":63
 *         Scale the weights by the given factor.
 *         """
 *         self.d2ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, i, w):
 */
  __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(25, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 63, __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(25, 63, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":57
 *         self.d2ptr().fill(x, y, 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.Dbn2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn2D.pyx":65
 *         self.d2ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14scale, "Dbn2D.scale(self, i, w)\n\n        (int, float) -> None\n\n        Scale the weights by the given factor along axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_15scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_14scale};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 65, __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_w)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 65, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(25, 65, __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, 65, __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_w = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(25, 65, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_14scale(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_i, __pyx_v_w);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_14scale(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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", 1);

  /* "include/generated/Dbn2D.pyx":71
 *         Scale the weights by the given factor along axis i.
 *         """
 *         self.d2ptr().scale(i, w)             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(self):
 */
  __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(25, 71, __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, 71, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 71, __pyx_L1_error)
  __pyx_t_1->scale(__pyx_t_2, __pyx_t_3);

  /* "include/generated/Dbn2D.pyx":65
 *         self.d2ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

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

/* "include/generated/Dbn2D.pyx":73
 *         self.d2ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16numEntries, "Dbn2D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_17numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_16numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16numEntries(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_16numEntries(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("numEntries", 1);

  /* "include/generated/Dbn2D.pyx":75
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(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(25, 75, __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(25, 75, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":73
 *         self.d2ptr().scale(i, w)
 * 
 *     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/generated/Dbn2D.pyx":77
 *         return self.d2ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18effNumEntries, "Dbn2D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_19effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_18effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_18effNumEntries(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", 1);

  /* "include/generated/Dbn2D.pyx":79
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 *     def sumW(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(25, 79, __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(25, 79, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":77
 *         return self.d2ptr().numEntries()
 * 
 *     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/generated/Dbn2D.pyx":81
 *         return self.d2ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20sumW, "Dbn2D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_21sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_20sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_20sumW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_20sumW(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", 1);

  /* "include/generated/Dbn2D.pyx":83
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(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(25, 83, __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(25, 83, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":81
 *         return self.d2ptr().effNumEntries()
 * 
 *     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/generated/Dbn2D.pyx":85
 *         return self.d2ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_22sumW2, "Dbn2D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_23sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_22sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_22sumW2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_22sumW2(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", 1);

  /* "include/generated/Dbn2D.pyx":87
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     def errW(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(25, 87, __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(25, 87, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":85
 *         return self.d2ptr().sumW()
 * 
 *     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/generated/Dbn2D.pyx":89
 *         return self.d2ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24errW, "Dbn2D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_25errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_24errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_24errW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_24errW(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", 1);

  /* "include/generated/Dbn2D.pyx":91
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d2ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     def relErrW(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(25, 91, __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(25, 91, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":89
 *         return self.d2ptr().sumW2()
 * 
 *     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/generated/Dbn2D.pyx":93
 *         return self.d2ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26relErrW, "Dbn2D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_27relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_26relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26relErrW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_26relErrW(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", 1);

  /* "include/generated/Dbn2D.pyx":95
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 *     def mean(self, dim = 0):
 */
  __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(25, 95, __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(25, 95, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":93
 *         return self.d2ptr().errW()
 * 
 *     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/generated/Dbn2D.pyx":97
 *         return self.d2ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d2ptr().mean(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28mean, "Dbn2D.mean(self, dim=0)\nWeighted mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_29mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_28mean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 97, __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, "mean") < 0)) __PYX_ERR(25, 97, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_28mean(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_28mean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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("mean", 1);

  /* "include/generated/Dbn2D.pyx":99
 *     def mean(self, dim = 0):
 *         """Weighted mean on axis dim"""
 *         return self.d2ptr().mean(dim)             # <<<<<<<<<<<<<<
 * 
 *     def variance(self, dim = 0):
 */
  __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(25, 99, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 99, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->mean(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 99, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":97
 *         return self.d2ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d2ptr().mean(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":101
 *         return self.d2ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d2ptr().variance(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30variance, "Dbn2D.variance(self, dim=0)\nWeighted variance on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_31variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_30variance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(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, "variance") < 0)) __PYX_ERR(25, 101, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("variance", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_30variance(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_30variance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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("variance", 1);

  /* "include/generated/Dbn2D.pyx":103
 *     def variance(self, dim = 0):
 *         """Weighted variance on axis dim"""
 *         return self.d2ptr().variance(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdDev(self, dim = 0):
 */
  __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(25, 103, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 103, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->variance(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 103, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":101
 *         return self.d2ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d2ptr().variance(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":105
 *         return self.d2ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d2ptr().stdDev(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32stdDev, "Dbn2D.stdDev(self, dim=0)\nWeighted standard deviation on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_33stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_32stdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 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, "stdDev") < 0)) __PYX_ERR(25, 105, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_32stdDev(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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("stdDev", 1);

  /* "include/generated/Dbn2D.pyx":107
 *     def stdDev(self, dim = 0):
 *         """Weighted standard deviation on axis dim"""
 *         return self.d2ptr().stdDev(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdErr(self, dim = 0):
 */
  __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(25, 107, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 107, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdDev(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 107, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":105
 *         return self.d2ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d2ptr().stdDev(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":109
 *         return self.d2ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d2ptr().stdErr(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34stdErr, "Dbn2D.stdErr(self, dim=0)\nWeighted standard error on the mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_35stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_34stdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 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, "stdErr") < 0)) __PYX_ERR(25, 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_34stdErr(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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("stdErr", 1);

  /* "include/generated/Dbn2D.pyx":111
 *     def stdErr(self, dim = 0):
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d2ptr().stdErr(dim)             # <<<<<<<<<<<<<<
 * 
 *     def RMS(self, dim = 0):
 */
  __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(25, 111, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 111, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 111, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":109
 *         return self.d2ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d2ptr().stdErr(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":113
 *         return self.d2ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d2ptr().RMS(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36RMS, "Dbn2D.RMS(self, dim=0)\nWeighted RMS on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_37RMS = {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_36RMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("RMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(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, "RMS") < 0)) __PYX_ERR(25, 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("RMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.RMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_36RMS(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_36RMS(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__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("RMS", 1);

  /* "include/generated/Dbn2D.pyx":115
 *     def RMS(self, dim = 0):
 *         """Weighted RMS on axis dim"""
 *         return self.d2ptr().RMS(dim)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(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(25, 115, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 115, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->RMS(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 115, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":113
 *         return self.d2ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d2ptr().RMS(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn2D.pyx":117
 *         return self.d2ptr().RMS(dim)
 * 
 *     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_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn2D, 1, "other", 0))) __PYX_ERR(25, 117, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_38__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_38__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__", 1);

  /* "include/generated/Dbn2D.pyx":118
 * 
 *     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(25, 118, __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(25, 118, __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(25, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":117
 *         return self.d2ptr().RMS(dim)
 * 
 *     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/generated/Dbn2D.pyx":120
 *         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_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn2D, 1, "other", 0))) __PYX_ERR(25, 120, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_40__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_40__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__", 1);

  /* "include/generated/Dbn2D.pyx":121
 * 
 *     def __sub__(Dbn2D self, Dbn2D other):
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __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(25, 121, __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(25, 121, __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(25, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":120
 *         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;
}

/* "include/generated/Dbn2D.pyx":123
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "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_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 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(25, 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_x = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_42scaleX(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", 1);

  /* "include/generated/Dbn2D.pyx":129
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d2ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xMean(self):
 */
  __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(25, 129, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 129, __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(25, 129, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":123
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 * 
 *     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/generated/Dbn2D.pyx":131
 *         self.d2ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d2ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44xMean, "Dbn2D.xMean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_45xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_44xMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_44xMean(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_44xMean(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("xMean", 1);

  /* "include/generated/Dbn2D.pyx":133
 *     def xMean(self):
 *         """Weighted mean of x"""
 *         return self.d2ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(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(25, 133, __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(25, 133, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":131
 *         self.d2ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d2ptr().xMean()
 */

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

/* "include/generated/Dbn2D.pyx":135
 *         return self.d2ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d2ptr().xVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46xVariance, "Dbn2D.xVariance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_47xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_46xVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_46xVariance(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_46xVariance(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("xVariance", 1);

  /* "include/generated/Dbn2D.pyx":137
 *     def xVariance(self):
 *         """Weighted variance of x"""
 *         return self.d2ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(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(25, 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(25, 137, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":135
 *         return self.d2ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d2ptr().xVariance()
 */

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

/* "include/generated/Dbn2D.pyx":139
 *         return self.d2ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d2ptr().xStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48xStdDev, "Dbn2D.xStdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_49xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_48xStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_48xStdDev(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_48xStdDev(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("xStdDev", 1);

  /* "include/generated/Dbn2D.pyx":141
 *     def xStdDev(self):
 *         """Weighted standard deviation of x"""
 *         return self.d2ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(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(25, 141, __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(25, 141, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":139
 *         return self.d2ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d2ptr().xStdDev()
 */

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

/* "include/generated/Dbn2D.pyx":143
 *         return self.d2ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d2ptr().xStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_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_5Dbn2D_50xStdErr, "Dbn2D.xStdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_51xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_50xStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_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
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_50xStdErr(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_50xStdErr(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("xStdErr", 1);

  /* "include/generated/Dbn2D.pyx":145
 *     def xStdErr(self):
 *         """Weighted standard error on <x>"""
 *         return self.d2ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(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(25, 145, __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(25, 145, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":143
 *         return self.d2ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d2ptr().xStdErr()
 */

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

/* "include/generated/Dbn2D.pyx":147
 *         return self.d2ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d2ptr().xRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52xRMS, "Dbn2D.xRMS(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_53xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_52xRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_52xRMS(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_52xRMS(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("xRMS", 1);

  /* "include/generated/Dbn2D.pyx":149
 *     def xRMS(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d2ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX(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(25, 149, __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(25, 149, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":147
 *         return self.d2ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d2ptr().xRMS()
 */

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

/* "include/generated/Dbn2D.pyx":151
 *         return self.d2ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54sumWX, "Dbn2D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_55sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_54sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_54sumWX(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_54sumWX(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", 1);

  /* "include/generated/Dbn2D.pyx":153
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(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(25, 153, __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(25, 153, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":151
 *         return self.d2ptr().xRMS()
 * 
 *     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/generated/Dbn2D.pyx":155
 *         return self.d2ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56sumWX2, "Dbn2D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_57sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_56sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_56sumWX2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_56sumWX2(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", 1);

  /* "include/generated/Dbn2D.pyx":157
 *     def sumWX2(self):
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(25, 157, __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(25, 157, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":155
 *         return self.d2ptr().sumWX()
 * 
 *     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/generated/Dbn2D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_59scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58scaleY, "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_59scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_59scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_58scaleY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_59scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 160, __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(25, 160, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_58scaleY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_58scaleY(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", 1);

  /* "include/generated/Dbn2D.pyx":166
 *         Scale the y dimension by the given factor.
 *         """
 *         self.d2ptr().scaleY(y)             # <<<<<<<<<<<<<<
 * 
 *     def yMean(self):
 */
  __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(25, 166, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 166, __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(25, 166, __pyx_L1_error)
  }

  /* "include/generated/Dbn2D.pyx":160
 * 
 * 
 *     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/generated/Dbn2D.pyx":168
 *         self.d2ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d2ptr().yMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_61yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60yMean, "Dbn2D.yMean(self)\nWeighted mean of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_61yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_61yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_60yMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_61yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_60yMean(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_60yMean(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("yMean", 1);

  /* "include/generated/Dbn2D.pyx":170
 *     def yMean(self):
 *         """Weighted mean of y"""
 *         return self.d2ptr().yMean()             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(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(25, 170, __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(25, 170, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":168
 *         self.d2ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d2ptr().yMean()
 */

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

/* "include/generated/Dbn2D.pyx":172
 *         return self.d2ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d2ptr().yVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_63yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62yVariance, "Dbn2D.yVariance(self)\nWeighted variance of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_63yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_63yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_62yVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_63yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_62yVariance(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_62yVariance(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("yVariance", 1);

  /* "include/generated/Dbn2D.pyx":174
 *     def yVariance(self):
 *         """Weighted variance of y"""
 *         return self.d2ptr().yVariance()             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(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(25, 174, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 174, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":172
 *         return self.d2ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d2ptr().yVariance()
 */

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

/* "include/generated/Dbn2D.pyx":176
 *         return self.d2ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d2ptr().yStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_65yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64yStdDev, "Dbn2D.yStdDev(self)\nWeighted standard deviation of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_65yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_65yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_64yStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_65yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_64yStdDev(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_64yStdDev(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("yStdDev", 1);

  /* "include/generated/Dbn2D.pyx":178
 *     def yStdDev(self):
 *         """Weighted standard deviation of y"""
 *         return self.d2ptr().yStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(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(25, 178, __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(25, 178, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":176
 *         return self.d2ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d2ptr().yStdDev()
 */

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

/* "include/generated/Dbn2D.pyx":180
 *         return self.d2ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d2ptr().yStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_67yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66yStdErr, "Dbn2D.yStdErr(self)\nWeighted standard error on <y>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_67yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_67yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_66yStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_67yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_66yStdErr(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_66yStdErr(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("yStdErr", 1);

  /* "include/generated/Dbn2D.pyx":182
 *     def yStdErr(self):
 *         """Weighted standard error on <y>"""
 *         return self.d2ptr().yStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(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(25, 182, __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(25, 182, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":180
 *         return self.d2ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d2ptr().yStdErr()
 */

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

/* "include/generated/Dbn2D.pyx":184
 *         return self.d2ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d2ptr().yRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_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_5Dbn2D_68yRMS, "Dbn2D.yRMS(self)\nWeighted root mean squared (RMS) of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_69yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_68yRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn2D_68yRMS(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_68yRMS(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("yRMS", 1);

  /* "include/generated/Dbn2D.pyx":186
 *     def yRMS(self):
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d2ptr().yRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY(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(25, 186, __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(25, 186, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":184
 *         return self.d2ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d2ptr().yRMS()
 */

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

/* "include/generated/Dbn2D.pyx":188
 *         return self.d2ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_71sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70sumWY, "Dbn2D.sumWY(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_71sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_71sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_70sumWY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_71sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_70sumWY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_70sumWY(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", 1);

  /* "include/generated/Dbn2D.pyx":190
 *     def sumWY(self):
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY2(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(25, 190, __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(25, 190, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":188
 *         return self.d2ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         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/generated/Dbn2D.pyx":192
 *         return self.d2ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_73sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72sumWY2, "Dbn2D.sumWY2(self)\nsum(weights * ys * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_73sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_73sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_72sumWY2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_73sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_72sumWY2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_72sumWY2(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", 1);

  /* "include/generated/Dbn2D.pyx":194
 *     def sumWY2(self):
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 *     def crossTerm(self, i, j):
 */
  __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(25, 194, __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(25, 194, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":192
 *         return self.d2ptr().sumWY()
 * 
 *     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/generated/Dbn2D.pyx":196
 *         return self.d2ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_75crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74crossTerm, "Dbn2D.crossTerm(self, i, j)\nsum(weights is * js)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_75crossTerm = {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_75crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_74crossTerm};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_75crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_j = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("crossTerm (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_j,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 196, __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_j)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 196, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, 1); __PYX_ERR(25, 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, "crossTerm") < 0)) __PYX_ERR(25, 196, __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_j = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, __pyx_nargs); __PYX_ERR(25, 196, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn2D.crossTerm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_74crossTerm(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_i, __pyx_v_j);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_74crossTerm(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("crossTerm", 1);

  /* "include/generated/Dbn2D.pyx":198
 *     def crossTerm(self, i, j):
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(25, 198, __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, 198, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_j); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 198, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->crossTerm(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 198, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn2D.pyx":196
 *         return self.d2ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Dbn2D.crossTerm", __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_77__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_76__reduce_cython__, "Dbn2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_77__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_77__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_76__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_77__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_76__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_76__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__", 1);

  /* "(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(1, 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_79__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_78__setstate_cython__, "Dbn2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_79__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_79__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_78__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_79__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_78__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_78__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__", 1);

  /* "(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(1, 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/generated/Dbn3D.pyx":14
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Dbn3D.pyx":15
 * 
 *     cdef c.Dbn3D* d3ptr(self) except NULL:
 *         return <c.Dbn3D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(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(26, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":14
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":17
 *         return <c.Dbn3D *> self.ptr()
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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___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___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__", 1);

  /* "include/generated/Dbn3D.pyx":18
 * 
 *     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(26, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/generated/Dbn3D.pyx":17
 *         return <c.Dbn3D *> self.ptr()
 * 
 *     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/generated/Dbn3D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_2__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_2__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;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/generated/Dbn3D.pyx":21
 * 
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(26, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(26, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __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/generated/Dbn3D.pyx":22
 *     def __repr__(self):
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None             # <<<<<<<<<<<<<<
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_effNumEntries); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_float_1_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(26, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_int_0};
      __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(26, 22, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __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/generated/Dbn3D.pyx":23
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.0 else None
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean)) __PYX_ERR(26, 23, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd)) __PYX_ERR(26, 23, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn3D_mean_s_stddev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 23, __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/generated/Dbn3D.pyx":20
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean(0) if self.effNumEntries() > 1.0 else None
 *         sd = self.stdDev(0) if self.effNumEntries() > 1.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_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":25
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_4copy, "Dbn3D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_5copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_4copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_5copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_4copy(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_4copy(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", 1);

  /* "include/generated/Dbn3D.pyx":26
 * 
 *     def copy(self):
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __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(26, 26, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn3D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":25
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, 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/generated/Dbn3D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_6reset, "Dbn3D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_7reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_6reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_7reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_6reset(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_6reset(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", 1);

  /* "include/generated/Dbn3D.pyx":34
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d3ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):
 */
  __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(26, 34, __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(26, 34, __pyx_L1_error)
  }

  /* "include/generated/Dbn3D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 *     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/generated/Dbn3D.pyx":36
 *         self.d3ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_8set, "Dbn3D.set(self, float numEntries, sumW, sumW2, sumWcross)\n\n        State-setting method.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_9set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_8set};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_9set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  float __pyx_v_numEntries;
  PyObject *__pyx_v_sumW = 0;
  PyObject *__pyx_v_sumW2 = 0;
  PyObject *__pyx_v_sumWcross = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_numEntries,&__pyx_n_s_sumW,&__pyx_n_s_sumW2,&__pyx_n_s_sumWcross,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_numEntries)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 36, __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_sumW)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 1); __PYX_ERR(26, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumW2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 2); __PYX_ERR(26, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sumWcross)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 36, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, 3); __PYX_ERR(26, 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, "set") < 0)) __PYX_ERR(26, 36, __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_numEntries = __pyx_PyFloat_AsFloat(values[0]); if (unlikely((__pyx_v_numEntries == (float)-1) && PyErr_Occurred())) __PYX_ERR(26, 36, __pyx_L3_error)
    __pyx_v_sumW = values[1];
    __pyx_v_sumW2 = values[2];
    __pyx_v_sumWcross = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 4, 4, __pyx_nargs); __PYX_ERR(26, 36, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_8set(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_numEntries, __pyx_v_sumW, __pyx_v_sumW2, __pyx_v_sumWcross);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_8set(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, float __pyx_v_numEntries, PyObject *__pyx_v_sumW, PyObject *__pyx_v_sumW2, PyObject *__pyx_v_sumWcross) {
  std::vector<double>  __pyx_v_sW;
  std::vector<double>  __pyx_v_sW2;
  std::vector<double>  __pyx_v_sWcross;
  PyObject *__pyx_v_w = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Dbn3D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 1);

  /* "include/generated/Dbn3D.pyx":41
 *         """
 *         cdef vector[double] sW
 *         sW = [ float(w) for w in sumW ]             # <<<<<<<<<<<<<<
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW)) || PyTuple_CheckExact(__pyx_v_sumW)) {
    __pyx_t_2 = __pyx_v_sumW; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 41, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 41, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 41, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(26, 41, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(26, 41, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn3D.pyx":43
 *         sW = [ float(w) for w in sumW ]
 *         cdef vector[double] sW2
 *         sW2 = [ float(w) for w in sumW2 ]             # <<<<<<<<<<<<<<
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumW2)) || PyTuple_CheckExact(__pyx_v_sumW2)) {
    __pyx_t_2 = __pyx_v_sumW2; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumW2); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 43, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 43, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 43, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(26, 43, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(26, 43, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sW2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn3D.pyx":45
 *         sW2 = [ float(w) for w in sumW2 ]
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]             # <<<<<<<<<<<<<<
 *         self.d3ptr().set(numEntries, sW, sW2, sWcross)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_sumWcross)) || PyTuple_CheckExact(__pyx_v_sumWcross)) {
    __pyx_t_2 = __pyx_v_sumWcross; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_sumWcross); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 45, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 45, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 45, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 45, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(26, 45, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(26, 45, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 45, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(26, 45, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_w, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_w); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(26, 45, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sWcross = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Dbn3D.pyx":46
 *         cdef vector[double] sWcross
 *         sWcross = [ float(w) for w in sumWcross ]
 *         self.d3ptr().set(numEntries, sW, sW2, sWcross)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_7 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(26, 46, __pyx_L1_error)
  try {
    __pyx_t_7->set(__pyx_v_numEntries, __pyx_v_sW, __pyx_v_sW2, __pyx_v_sWcross);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 46, __pyx_L1_error)
  }

  /* "include/generated/Dbn3D.pyx":36
 *         self.d3ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Dbn3D.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":49
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float z, float weight=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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_5Dbn3D_10fill, "Dbn3D.fill(self, x, y, z, weight=1.0, fraction=1.0)\n\n        (float x, float y, float z, float weight=1.0) -> None\n\n        Fills the distribution with the given weight at given x.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_11fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_10fill};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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_z = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_float_1_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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_y)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 1); __PYX_ERR(26, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 2); __PYX_ERR(26, 49, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 49, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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, "fill") < 0)) __PYX_ERR(26, 49, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, __pyx_nargs); __PYX_ERR(26, 49, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_10fill(((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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_10fill(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", 1);

  /* "include/generated/Dbn3D.pyx":55
 *         Fills the distribution with the given weight at given x.
 *         """
 *         self.d3ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, w):
 */
  __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(26, 55, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L1_error)
  __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);

  /* "include/generated/Dbn3D.pyx":49
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float z, 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.Dbn3D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":57
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 57, __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(26, 57, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 57, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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 */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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", 1);

  /* "include/generated/Dbn3D.pyx":63
 *         Scale the weights by the given factor.
 *         """
 *         self.d3ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, i, w):
 */
  __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(26, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 63, __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(26, 63, __pyx_L1_error)
  }

  /* "include/generated/Dbn3D.pyx":57
 *         self.d3ptr().fill(x, y, z, 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.Dbn3D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":65
 *         self.d3ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14scale, "Dbn3D.scale(self, i, w)\n\n        (int, float) -> None\n\n        Scale the weights by the given factor along axis i.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_15scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_14scale};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_15scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_w,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 65, __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_w)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 65, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(26, 65, __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(26, 65, __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_w = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 65, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_14scale(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_i, __pyx_v_w);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_14scale(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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", 1);

  /* "include/generated/Dbn3D.pyx":71
 *         Scale the weights by the given factor along axis i.
 *         """
 *         self.d3ptr().scale(i, w)             # <<<<<<<<<<<<<<
 * 
 *     def numEntries(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(26, 71, __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(26, 71, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 71, __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(26, 71, __pyx_L1_error)
  }

  /* "include/generated/Dbn3D.pyx":65
 *         self.d3ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

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

/* "include/generated/Dbn3D.pyx":73
 *         self.d3ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16numEntries, "Dbn3D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_17numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_16numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_17numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_16numEntries(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_16numEntries(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", 1);

  /* "include/generated/Dbn3D.pyx":75
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self):
 */
  __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(26, 75, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->numEntries()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":73
 *         self.d3ptr().scale(i, w)
 * 
 *     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/generated/Dbn3D.pyx":77
 *         return self.d3ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18effNumEntries, "Dbn3D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_19effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_18effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_19effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_18effNumEntries(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", 1);

  /* "include/generated/Dbn3D.pyx":79
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self):
 */
  __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(26, 79, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->effNumEntries()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":77
 *         return self.d3ptr().numEntries()
 * 
 *     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/generated/Dbn3D.pyx":81
 *         return self.d3ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20sumW, "Dbn3D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_21sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_20sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_21sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_20sumW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_20sumW(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", 1);

  /* "include/generated/Dbn3D.pyx":83
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self):
 */
  __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(26, 83, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumW()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":81
 *         return self.d3ptr().effNumEntries()
 * 
 *     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/generated/Dbn3D.pyx":85
 *         return self.d3ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_22sumW2, "Dbn3D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_23sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_22sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_23sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_22sumW2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_22sumW2(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", 1);

  /* "include/generated/Dbn3D.pyx":87
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     def errW(self):
 */
  __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(26, 87, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumW2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":85
 *         return self.d3ptr().sumW()
 * 
 *     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/generated/Dbn3D.pyx":89
 *         return self.d3ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_24errW, "Dbn3D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_25errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_24errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_25errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_24errW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_24errW(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", 1);

  /* "include/generated/Dbn3D.pyx":91
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d3ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     def relErrW(self):
 */
  __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(26, 91, __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(26, 91, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":89
 *         return self.d3ptr().sumW2()
 * 
 *     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/generated/Dbn3D.pyx":93
 *         return self.d3ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26relErrW, "Dbn3D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_27relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_26relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_27relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26relErrW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_26relErrW(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", 1);

  /* "include/generated/Dbn3D.pyx":95
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 *     def mean(self, dim = 0):
 */
  __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(26, 95, __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(26, 95, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":93
 *         return self.d3ptr().errW()
 * 
 *     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/generated/Dbn3D.pyx":97
 *         return self.d3ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d3ptr().mean(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28mean, "Dbn3D.mean(self, dim=0)\nWeighted mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_29mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_28mean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_29mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 97, __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, "mean") < 0)) __PYX_ERR(26, 97, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 97, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_28mean(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_28mean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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("mean", 1);

  /* "include/generated/Dbn3D.pyx":99
 *     def mean(self, dim = 0):
 *         """Weighted mean on axis dim"""
 *         return self.d3ptr().mean(dim)             # <<<<<<<<<<<<<<
 * 
 *     def variance(self, dim = 0):
 */
  __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(26, 99, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 99, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->mean(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 99, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":97
 *         return self.d3ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d3ptr().mean(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":101
 *         return self.d3ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d3ptr().variance(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30variance, "Dbn3D.variance(self, dim=0)\nWeighted variance on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_31variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_30variance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_31variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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, "variance") < 0)) __PYX_ERR(26, 101, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("variance", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 101, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_30variance(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_30variance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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("variance", 1);

  /* "include/generated/Dbn3D.pyx":103
 *     def variance(self, dim = 0):
 *         """Weighted variance on axis dim"""
 *         return self.d3ptr().variance(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdDev(self, dim = 0):
 */
  __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(26, 103, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 103, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->variance(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 103, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":101
 *         return self.d3ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d3ptr().variance(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":105
 *         return self.d3ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d3ptr().stdDev(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32stdDev, "Dbn3D.stdDev(self, dim=0)\nWeighted standard deviation on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_33stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_32stdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_33stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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, "stdDev") < 0)) __PYX_ERR(26, 105, __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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_32stdDev(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_32stdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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("stdDev", 1);

  /* "include/generated/Dbn3D.pyx":107
 *     def stdDev(self, dim = 0):
 *         """Weighted standard deviation on axis dim"""
 *         return self.d3ptr().stdDev(dim)             # <<<<<<<<<<<<<<
 * 
 *     def stdErr(self, dim = 0):
 */
  __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(26, 107, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 107, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdDev(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 107, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":105
 *         return self.d3ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d3ptr().stdDev(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":109
 *         return self.d3ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d3ptr().stdErr(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34stdErr, "Dbn3D.stdErr(self, dim=0)\nWeighted standard error on the mean on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_35stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_34stdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_35stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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, "stdErr") < 0)) __PYX_ERR(26, 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_34stdErr(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_34stdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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("stdErr", 1);

  /* "include/generated/Dbn3D.pyx":111
 *     def stdErr(self, dim = 0):
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d3ptr().stdErr(dim)             # <<<<<<<<<<<<<<
 * 
 *     def RMS(self, dim = 0):
 */
  __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(26, 111, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 111, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->stdErr(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 111, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":109
 *         return self.d3ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d3ptr().stdErr(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":113
 *         return self.d3ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d3ptr().RMS(dim)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36RMS, "Dbn3D.RMS(self, dim=0)\nWeighted RMS on axis dim");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_37RMS = {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_36RMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_37RMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dim = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("RMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dim,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dim);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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, "RMS") < 0)) __PYX_ERR(26, 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_dim = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("RMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.RMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_36RMS(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_dim);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_36RMS(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_dim) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__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("RMS", 1);

  /* "include/generated/Dbn3D.pyx":115
 *     def RMS(self, dim = 0):
 *         """Weighted RMS on axis dim"""
 *         return self.d3ptr().RMS(dim)             # <<<<<<<<<<<<<<
 * 
 *     def __add__(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(26, 115, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_dim); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 115, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->RMS(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 115, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":113
 *         return self.d3ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d3ptr().RMS(dim)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Dbn3D.pyx":117
 *         return self.d3ptr().RMS(dim)
 * 
 *     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_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_39__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn3D, 1, "other", 0))) __PYX_ERR(26, 117, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_38__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_38__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__", 1);

  /* "include/generated/Dbn3D.pyx":118
 * 
 *     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(26, 118, __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(26, 118, __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(26, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":117
 *         return self.d3ptr().RMS(dim)
 * 
 *     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/generated/Dbn3D.pyx":120
 *         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_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_41__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn3D, 1, "other", 0))) __PYX_ERR(26, 120, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_40__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_40__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__", 1);

  /* "include/generated/Dbn3D.pyx":121
 * 
 *     def __sub__(Dbn3D self, Dbn3D other):
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __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(26, 121, __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(26, 121, __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(26, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":120
 *         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;
}

/* "include/generated/Dbn3D.pyx":123
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "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_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 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(26, 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_x = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_42scaleX(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", 1);

  /* "include/generated/Dbn3D.pyx":129
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d3ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xMean(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(26, 129, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 129, __pyx_L1_error)
  __pyx_t_1->scaleX(__pyx_t_2);

  /* "include/generated/Dbn3D.pyx":123
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 * 
 *     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/generated/Dbn3D.pyx":131
 *         self.d3ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d3ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44xMean, "Dbn3D.xMean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_45xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_44xMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_45xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_44xMean(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

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

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_44xMean(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("xMean", 1);

  /* "include/generated/Dbn3D.pyx":133
 *     def xMean(self):
 *         """Weighted mean of x"""
 *         return self.d3ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(self):
 */
  __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(26, 133, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xMean()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":131
 *         self.d3ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d3ptr().xMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":135
 *         return self.d3ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d3ptr().xVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46xVariance, "Dbn3D.xVariance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_47xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_46xVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_47xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_46xVariance(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_46xVariance(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("xVariance", 1);

  /* "include/generated/Dbn3D.pyx":137
 *     def xVariance(self):
 *         """Weighted variance of x"""
 *         return self.d3ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(self):
 */
  __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(26, 137, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xVariance()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":135
 *         return self.d3ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d3ptr().xVariance()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":139
 *         return self.d3ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d3ptr().xStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48xStdDev, "Dbn3D.xStdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_49xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_48xStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_49xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_48xStdDev(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_48xStdDev(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("xStdDev", 1);

  /* "include/generated/Dbn3D.pyx":141
 *     def xStdDev(self):
 *         """Weighted standard deviation of x"""
 *         return self.d3ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(self):
 */
  __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(26, 141, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xStdDev()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":139
 *         return self.d3ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d3ptr().xStdDev()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":143
 *         return self.d3ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d3ptr().xStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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_5Dbn3D_50xStdErr, "Dbn3D.xStdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_51xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_50xStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_50xStdErr(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_50xStdErr(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("xStdErr", 1);

  /* "include/generated/Dbn3D.pyx":145
 *     def xStdErr(self):
 *         """Weighted standard error on <x>"""
 *         return self.d3ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(self):
 */
  __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(26, 145, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xStdErr()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":143
 *         return self.d3ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d3ptr().xStdErr()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":147
 *         return self.d3ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d3ptr().xRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52xRMS, "Dbn3D.xRMS(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_53xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_52xRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_53xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_52xRMS(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_52xRMS(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("xRMS", 1);

  /* "include/generated/Dbn3D.pyx":149
 *     def xRMS(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d3ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX(self):
 */
  __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(26, 149, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xRMS()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":147
 *         return self.d3ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d3ptr().xRMS()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":151
 *         return self.d3ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54sumWX, "Dbn3D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_55sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_54sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_55sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_54sumWX(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_54sumWX(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", 1);

  /* "include/generated/Dbn3D.pyx":153
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(self):
 */
  __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(26, 153, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWX()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":151
 *         return self.d3ptr().xRMS()
 * 
 *     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/generated/Dbn3D.pyx":155
 *         return self.d3ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56sumWX2, "Dbn3D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_57sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_56sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_57sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_56sumWX2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_56sumWX2(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", 1);

  /* "include/generated/Dbn3D.pyx":157
 *     def sumWX2(self):
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(26, 157, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWX2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":155
 *         return self.d3ptr().sumWX()
 * 
 *     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/generated/Dbn3D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_59scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58scaleY, "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_59scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_59scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_58scaleY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_59scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 160, __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(26, 160, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_58scaleY(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_58scaleY(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", 1);

  /* "include/generated/Dbn3D.pyx":166
 *         Scale the y dimension by the given factor.
 *         """
 *         self.d3ptr().scaleY(y)             # <<<<<<<<<<<<<<
 * 
 *     def yMean(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(26, 166, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 166, __pyx_L1_error)
  __pyx_t_1->scaleY(__pyx_t_2);

  /* "include/generated/Dbn3D.pyx":160
 * 
 * 
 *     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/generated/Dbn3D.pyx":168
 *         self.d3ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d3ptr().yMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_61yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60yMean, "Dbn3D.yMean(self)\nWeighted mean of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_61yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_61yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_60yMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_61yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_60yMean(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_60yMean(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("yMean", 1);

  /* "include/generated/Dbn3D.pyx":170
 *     def yMean(self):
 *         """Weighted mean of y"""
 *         return self.d3ptr().yMean()             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(self):
 */
  __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(26, 170, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yMean()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":168
 *         self.d3ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d3ptr().yMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":172
 *         return self.d3ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d3ptr().yVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_63yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62yVariance, "Dbn3D.yVariance(self)\nWeighted variance of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_63yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_63yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_62yVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_63yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_62yVariance(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_62yVariance(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("yVariance", 1);

  /* "include/generated/Dbn3D.pyx":174
 *     def yVariance(self):
 *         """Weighted variance of y"""
 *         return self.d3ptr().yVariance()             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(self):
 */
  __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(26, 174, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yVariance()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":172
 *         return self.d3ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d3ptr().yVariance()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":176
 *         return self.d3ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d3ptr().yStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_65yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64yStdDev, "Dbn3D.yStdDev(self)\nWeighted standard deviation of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_65yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_65yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_64yStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_65yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_64yStdDev(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_64yStdDev(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("yStdDev", 1);

  /* "include/generated/Dbn3D.pyx":178
 *     def yStdDev(self):
 *         """Weighted standard deviation of y"""
 *         return self.d3ptr().yStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(self):
 */
  __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(26, 178, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yStdDev()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":176
 *         return self.d3ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d3ptr().yStdDev()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":180
 *         return self.d3ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d3ptr().yStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_67yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66yStdErr, "Dbn3D.yStdErr(self)\nWeighted standard error on <y>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_67yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_67yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_66yStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_67yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_66yStdErr(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_66yStdErr(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("yStdErr", 1);

  /* "include/generated/Dbn3D.pyx":182
 *     def yStdErr(self):
 *         """Weighted standard error on <y>"""
 *         return self.d3ptr().yStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(self):
 */
  __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(26, 182, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yStdErr()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":180
 *         return self.d3ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d3ptr().yStdErr()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":184
 *         return self.d3ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d3ptr().yRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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_5Dbn3D_68yRMS, "Dbn3D.yRMS(self)\nWeighted root mean squared (RMS) of y");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_69yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_68yRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_5Dbn3D_68yRMS(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_68yRMS(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("yRMS", 1);

  /* "include/generated/Dbn3D.pyx":186
 *     def yRMS(self):
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d3ptr().yRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY(self):
 */
  __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(26, 186, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yRMS()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":184
 *         return self.d3ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d3ptr().yRMS()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":188
 *         return self.d3ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_71sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70sumWY, "Dbn3D.sumWY(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_71sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_71sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_70sumWY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_71sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_70sumWY(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_70sumWY(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", 1);

  /* "include/generated/Dbn3D.pyx":190
 *     def sumWY(self):
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY2(self):
 */
  __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(26, 190, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWY()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":188
 *         return self.d3ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         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/generated/Dbn3D.pyx":192
 *         return self.d3ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_73sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72sumWY2, "Dbn3D.sumWY2(self)\nsum(weights * ys * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_73sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_73sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_72sumWY2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_73sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_72sumWY2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_72sumWY2(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", 1);

  /* "include/generated/Dbn3D.pyx":194
 *     def sumWY2(self):
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 *     def crossTerm(self, i, j):
 */
  __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(26, 194, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWY2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":192
 *         return self.d3ptr().sumWY()
 * 
 *     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/generated/Dbn3D.pyx":196
 *         return self.d3ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_75crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74crossTerm, "Dbn3D.crossTerm(self, i, j)\nsum(weights is * js)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_75crossTerm = {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_75crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_74crossTerm};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_75crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_j = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("crossTerm (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_j,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 196, __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_j)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 196, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, 1); __PYX_ERR(26, 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, "crossTerm") < 0)) __PYX_ERR(26, 196, __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_j = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 196, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.crossTerm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_74crossTerm(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_i, __pyx_v_j);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_74crossTerm(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("crossTerm", 1);

  /* "include/generated/Dbn3D.pyx":198
 *     def crossTerm(self, i, j):
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_d2ptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(26, 198, __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_crossTerm); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_i, __pyx_v_j};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 198, __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/Dbn3D.pyx":196
 *         return self.d3ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */

  /* 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_AddTraceback("yoda.core.Dbn3D.crossTerm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":201
 * 
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_77scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_76scaleZ, "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_77scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_77scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_76scaleZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_77scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 201, __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(26, 201, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_76scaleZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_76scaleZ(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", 1);

  /* "include/generated/Dbn3D.pyx":207
 *         Scale the z dimension by the given factor.
 *         """
 *         self.d3ptr().scaleZ(z)             # <<<<<<<<<<<<<<
 * 
 *     def zMean(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(26, 207, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 207, __pyx_L1_error)
  __pyx_t_1->scaleZ(__pyx_t_2);

  /* "include/generated/Dbn3D.pyx":201
 * 
 * 
 *     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/generated/Dbn3D.pyx":209
 *         self.d3ptr().scaleZ(z)
 * 
 *     def zMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of z"""
 *         return self.d3ptr().zMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_79zMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_78zMean, "Dbn3D.zMean(self)\nWeighted mean of z");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_79zMean = {"zMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_79zMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_78zMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_79zMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMean (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_78zMean(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_78zMean(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("zMean", 1);

  /* "include/generated/Dbn3D.pyx":211
 *     def zMean(self):
 *         """Weighted mean of z"""
 *         return self.d3ptr().zMean()             # <<<<<<<<<<<<<<
 * 
 *     def zVariance(self):
 */
  __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(26, 211, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zMean()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":209
 *         self.d3ptr().scaleZ(z)
 * 
 *     def zMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of z"""
 *         return self.d3ptr().zMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.zMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":213
 *         return self.d3ptr().zMean()
 * 
 *     def zVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of z"""
 *         return self.d3ptr().zVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_81zVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_80zVariance, "Dbn3D.zVariance(self)\nWeighted variance of z");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_81zVariance = {"zVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_81zVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_80zVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_81zVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVariance (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_80zVariance(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_80zVariance(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("zVariance", 1);

  /* "include/generated/Dbn3D.pyx":215
 *     def zVariance(self):
 *         """Weighted variance of z"""
 *         return self.d3ptr().zVariance()             # <<<<<<<<<<<<<<
 * 
 *     def zStdDev(self):
 */
  __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(26, 215, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zVariance()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":213
 *         return self.d3ptr().zMean()
 * 
 *     def zVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of z"""
 *         return self.d3ptr().zVariance()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.zVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":217
 *         return self.d3ptr().zVariance()
 * 
 *     def zStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of z"""
 *         return self.d3ptr().zStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_83zStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_82zStdDev, "Dbn3D.zStdDev(self)\nWeighted standard deviation of z");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_83zStdDev = {"zStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_83zStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_82zStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_83zStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdDev (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_82zStdDev(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_82zStdDev(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("zStdDev", 1);

  /* "include/generated/Dbn3D.pyx":219
 *     def zStdDev(self):
 *         """Weighted standard deviation of z"""
 *         return self.d3ptr().zStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def zStdErr(self):
 */
  __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(26, 219, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zStdDev()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":217
 *         return self.d3ptr().zVariance()
 * 
 *     def zStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of z"""
 *         return self.d3ptr().zStdDev()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.zStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":221
 *         return self.d3ptr().zStdDev()
 * 
 *     def zStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <z>"""
 *         return self.d3ptr().zStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_85zStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_84zStdErr, "Dbn3D.zStdErr(self)\nWeighted standard error on <z>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_85zStdErr = {"zStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_85zStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_84zStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_85zStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_84zStdErr(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_84zStdErr(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("zStdErr", 1);

  /* "include/generated/Dbn3D.pyx":223
 *     def zStdErr(self):
 *         """Weighted standard error on <z>"""
 *         return self.d3ptr().zStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def zRMS(self):
 */
  __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(26, 223, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zStdErr()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":221
 *         return self.d3ptr().zStdDev()
 * 
 *     def zStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <z>"""
 *         return self.d3ptr().zStdErr()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.zStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":225
 *         return self.d3ptr().zStdErr()
 * 
 *     def zRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of z"""
 *         return self.d3ptr().zRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_87zRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_86zRMS, "Dbn3D.zRMS(self)\nWeighted root mean squared (RMS) of z");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_87zRMS = {"zRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_87zRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_86zRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_87zRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zRMS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_86zRMS(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_86zRMS(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("zRMS", 1);

  /* "include/generated/Dbn3D.pyx":227
 *     def zRMS(self):
 *         """Weighted root mean squared (RMS) of z"""
 *         return self.d3ptr().zRMS()             # <<<<<<<<<<<<<<
 * 
 *     def sumWZ(self):
 */
  __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(26, 227, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zRMS()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":225
 *         return self.d3ptr().zStdErr()
 * 
 *     def zRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of z"""
 *         return self.d3ptr().zRMS()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.zRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Dbn3D.pyx":229
 *         return self.d3ptr().zRMS()
 * 
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWZ()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_89sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_88sumWZ, "Dbn3D.sumWZ(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_89sumWZ = {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_89sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_88sumWZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_89sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_88sumWZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_88sumWZ(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", 1);

  /* "include/generated/Dbn3D.pyx":231
 *     def sumWZ(self):
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWZ()             # <<<<<<<<<<<<<<
 * 
 *     def sumWZ2(self):
 */
  __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(26, 231, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWZ()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":229
 *         return self.d3ptr().zRMS()
 * 
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         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/generated/Dbn3D.pyx":233
 *         return self.d3ptr().sumWZ()
 * 
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_91sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_90sumWZ2, "Dbn3D.sumWZ2(self)\nsum(weights * zs * zs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_91sumWZ2 = {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_91sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_90sumWZ2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_91sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_90sumWZ2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_90sumWZ2(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", 1);

  /* "include/generated/Dbn3D.pyx":235
 *     def sumWZ2(self):
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()             # <<<<<<<<<<<<<<
 * 
 *     def crossTerm(self, i, j):
 */
  __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(26, 235, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWZ2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":233
 *         return self.d3ptr().sumWZ()
 * 
 *     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/generated/Dbn3D.pyx":237
 *         return self.d3ptr().sumWZ2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d3ptr().crossTerm(i,j)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_93crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_92crossTerm, "Dbn3D.crossTerm(self, i, j)\nsum(weights is * js)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_93crossTerm = {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_93crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_92crossTerm};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_93crossTerm(PyObject *__pyx_v_self, 
#if CYTHON_METH_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_j = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("crossTerm (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_j,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 237, __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_j)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 237, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, 1); __PYX_ERR(26, 237, __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, "crossTerm") < 0)) __PYX_ERR(26, 237, __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_j = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("crossTerm", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 237, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Dbn3D.crossTerm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_92crossTerm(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_i, __pyx_v_j);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_92crossTerm(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_j) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("crossTerm", 1);

  /* "include/generated/Dbn3D.pyx":239
 *     def crossTerm(self, i, j):
 *         """sum(weights is * js)"""
 *         return self.d3ptr().crossTerm(i,j)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(26, 239, __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(26, 239, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_j); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(26, 239, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->crossTerm(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 239, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Dbn3D.pyx":237
 *         return self.d3ptr().sumWZ2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d3ptr().crossTerm(i,j)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Dbn3D.crossTerm", __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_95__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_94__reduce_cython__, "Dbn3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_95__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_95__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_94__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_95__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_94__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_94__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__", 1);

  /* "(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(1, 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_97__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_96__setstate_cython__, "Dbn3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_97__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_97__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_96__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_97__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_96__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_96__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__", 1);

  /* "(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(1, 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/generated/Point1D.pyx":14
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Point1D.pyx":15
 * 
 *     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(27, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Point1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":14
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */

/* 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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point1D___init__(((struct __pyx_obj_4yoda_4core_Point1D *)__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_7Point1D___init__(struct __pyx_obj_4yoda_4core_Point1D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Point1D.pyx":19
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 19, __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(27, 19, __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_Point1D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point1D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point1D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point1D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(27, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(27, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(27, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(27, 19, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(27, 19, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Point1D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_3_Point1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_2__init1, "Point1D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_3_Point1D__init1 = {"_Point1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_3_Point1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_3_Point1D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point1D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_Point1D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Point1D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_2__init1(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_2__init1(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point1D__init1", 1);

  /* "include/generated/Point1D.pyx":22
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Point1D())             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, vals, errsdn, errsup):
 */
  try {
    __pyx_t_1 = new YODA::Point1D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 22, __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(27, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point1D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_5_Point1D__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_7Point1D_4__init2, "Point1D.__init2(self, vals, errsdn, errsup)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_5_Point1D__init2 = {"_Point1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_5_Point1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_5_Point1D__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_vals = 0;
  PyObject *__pyx_v_errsdn = 0;
  PyObject *__pyx_v_errsup = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point1D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vals,&__pyx_n_s_errsdn,&__pyx_n_s_errsup,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_vals)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 24, __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_errsdn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point1D__init2", 1, 3, 3, 1); __PYX_ERR(27, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errsup)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point1D__init2", 1, 3, 3, 2); __PYX_ERR(27, 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, "_Point1D__init2") < 0)) __PYX_ERR(27, 24, __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_vals = values[0];
    __pyx_v_errsdn = values[1];
    __pyx_v_errsup = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point1D__init2", 1, 3, 3, __pyx_nargs); __PYX_ERR(27, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_4__init2(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_vals, __pyx_v_errsdn, __pyx_v_errsup);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_2generator152(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point1D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */

static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_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_153_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_153_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(27, 36, __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_7Point1D_15_Point1D__init2_2generator152, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point1D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(27, 36, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init2.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_7Point1D_15_Point1D__init2_2generator152(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_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(27, 36, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(27, 36, __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(27, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 36, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 36, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 36, __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(27, 36, __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(27, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(27, 36, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_5generator153(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point1D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 */

static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_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_154_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_154_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(27, 37, __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_7Point1D_15_Point1D__init2_5generator153, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point1D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(27, 37, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init2.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_7Point1D_15_Point1D__init2_5generator153(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_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(27, 37, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(27, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(27, 37, __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(27, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 37, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 37, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 37, __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(27, 37, __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(27, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(27, 37, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_8generator154(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point1D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_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_155_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_155_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(27, 38, __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_7Point1D_15_Point1D__init2_8generator154, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point1D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(27, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init2.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_7Point1D_15_Point1D__init2_8generator154(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_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(27, 38, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(27, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(27, 38, __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(27, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 38, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 38, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(27, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(27, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 38, __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(27, 38, __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(27, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(27, 38, __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/generated/Point1D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

static PyObject *__pyx_pf_4yoda_4core_7Point1D_4__init2(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup) {
  std::vector<std::vector<double> >  __pyx_v_args;
  PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_2generator152 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_5generator153 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_8generator154 = 0;
  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;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  YODA::Point1D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point1D__init2", 1);

  /* "include/generated/Point1D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 1)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_vals, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 26, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point1D.pyx":27
 * 
 *         if hasattr(vals, "__iter__"):
 *           assert(len(vals) == 1)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsdn, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_vals); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(27, 27, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 1);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(27, 27, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(27, 27, __pyx_L1_error)
    #endif

    /* "include/generated/Point1D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 1)
 * 
 */
  }

  /* "include/generated/Point1D.pyx":29
 *           assert(len(vals) == 1)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 1)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsdn, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 29, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point1D.pyx":30
 * 
 *         if hasattr(errsdn, "__iter__"):
 *           assert(len(errsdn) == 1)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsup, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsdn); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(27, 30, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 1);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(27, 30, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(27, 30, __pyx_L1_error)
    #endif

    /* "include/generated/Point1D.pyx":29
 *           assert(len(vals) == 1)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 1)
 * 
 */
  }

  /* "include/generated/Point1D.pyx":32
 *           assert(len(errsdn) == 1)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 1)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsup, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 32, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point1D.pyx":33
 * 
 *         if hasattr(errsup, "__iter__"):
 *           assert(len(errsup) == 1)             # <<<<<<<<<<<<<<
 * 
 *         cdef vector[vector[double]] args
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsup); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(27, 33, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 1);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(27, 33, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(27, 33, __pyx_L1_error)
    #endif

    /* "include/generated/Point1D.pyx":32
 *           assert(len(errsdn) == 1)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 1)
 * 
 */
  }

  /* "include/generated/Point1D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_genexpr(NULL, __pyx_v_vals); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point1D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_3genexpr(NULL, __pyx_v_errsdn); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point1D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point1D_15_Point1D__init2_6genexpr(NULL, __pyx_v_errsup); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point1D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(27, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_5)) __PYX_ERR(27, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_t_6)) __PYX_ERR(27, 36, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_args = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

  /* "include/generated/Point1D.pyx":39
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):
 */
  try {
    __pyx_t_8 = new YODA::Point1D((__pyx_v_args[0]), (__pyx_v_args[1]), (__pyx_v_args[2]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 39, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point1D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_2generator152);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_5generator153);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point1D_15_Point1D__init2_8generator154);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_7_Point1D__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_7Point1D_6__init3, "Point1D.__init3(self, xVal, xErrDn, xErrUp)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_7_Point1D__init3 = {"_Point1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_7_Point1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_7_Point1D__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_xVal = 0;
  PyObject *__pyx_v_xErrDn = 0;
  PyObject *__pyx_v_xErrUp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point1D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_xErrDn,&__pyx_n_s_xErrUp,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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 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_xErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point1D__init3", 1, 3, 3, 1); __PYX_ERR(27, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point1D__init3", 1, 3, 3, 2); __PYX_ERR(27, 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, "_Point1D__init3") < 0)) __PYX_ERR(27, 41, __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_xVal = values[0];
    __pyx_v_xErrDn = values[1];
    __pyx_v_xErrUp = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point1D__init3", 1, 3, 3, __pyx_nargs); __PYX_ERR(27, 41, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_6__init3(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_xErrDn, __pyx_v_xErrUp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_6__init3(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point1D__init3", 1);

  /* "include/generated/Point1D.pyx":42
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):
 *         vals = [ xVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErrDn ]
 *         errp = [ xErrUp ]
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(27, 42, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":43
 *     def __init3(self, xVal, xErrDn, xErrUp):
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]             # <<<<<<<<<<<<<<
 *         errp = [ xErrUp ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrDn);
  __Pyx_GIVEREF(__pyx_v_xErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrDn)) __PYX_ERR(27, 43, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":44
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]
 *         errp = [ xErrUp ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrUp);
  __Pyx_GIVEREF(__pyx_v_xErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrUp)) __PYX_ERR(27, 44, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":45
 *         errm = [ xErrDn ]
 *         errp = [ xErrUp ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, xVal, xErr):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point1D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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(27, 45, __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/generated/Point1D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]
 */

  /* 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.Point1D._Point1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, xErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErr ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_9_Point1D__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_7Point1D_8__init4, "Point1D.__init4(self, xVal, xErr)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_9_Point1D__init4 = {"_Point1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_9_Point1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_9_Point1D__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_xVal = 0;
  PyObject *__pyx_v_xErr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point1D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_xErr,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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 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_xErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point1D__init4", 1, 2, 2, 1); __PYX_ERR(27, 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, "_Point1D__init4") < 0)) __PYX_ERR(27, 47, __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_xVal = values[0];
    __pyx_v_xErr = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point1D__init4", 1, 2, 2, __pyx_nargs); __PYX_ERR(27, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D._Point1D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_8__init4(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_xErr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_8__init4(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_xErr) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point1D__init4", 1);

  /* "include/generated/Point1D.pyx":48
 * 
 *     def __init4(self, xVal, xErr):
 *         vals = [ xVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErr ]
 *         errp = [ xErr ]
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(27, 48, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":49
 *     def __init4(self, xVal, xErr):
 *         vals = [ xVal ]
 *         errm = [ xErr ]             # <<<<<<<<<<<<<<
 *         errp = [ xErr ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(27, 49, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":50
 *         vals = [ xVal ]
 *         errm = [ xErr ]
 *         errp = [ xErr ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(27, 50, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":51
 *         errm = [ xErr ]
 *         errp = [ xErr ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point1D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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(27, 51, __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/generated/Point1D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, xErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErr ]
 */

  /* 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.Point1D._Point1D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_10copy, "Point1D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_11copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_10copy};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10copy(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_10copy(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", 1);

  /* "include/generated/Point1D.pyx":54
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(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(27, 54, __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(27, 54, __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(27, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     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/generated/Point1D.pyx":56
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point1D(v1=%g)>' % (self.val(0))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point1D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_12__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_12__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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "include/generated/Point1D.pyx":57
 * 
 *     def __repr__(self):
 *         return '<Point1D(v1=%g)>' % (self.val(0))             # <<<<<<<<<<<<<<
 * 
 *     def val(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(27, 57, __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_v1_g, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 57, __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/generated/Point1D.pyx":56
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point1D(v1=%g)>' % (self.val(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.Point1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":59
 *         return '<Point1D(v1=%g)>' % (self.val(0))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14val, "Point1D.val(self, i)\n(int) -> double\n        Returns value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_15val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_14val};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 59, __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(27, 59, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 59, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_14val(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_14val(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__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", 1);

  /* "include/generated/Point1D.pyx":62
 *         """(int) -> double
 *         Returns value along axis i"""
 *         return self.p1ptr().val(i)             # <<<<<<<<<<<<<<
 * 
 *     def max(self, i):
 */
  __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(27, 62, __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(27, 62, __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(27, 62, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":59
 *         return '<Point1D(v1=%g)>' % (self.val(0))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point1D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":64
 *         return self.p1ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16max, "Point1D.max(self, i)\n(int) -> double\n        Returns maximal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_16max};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 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, "max") < 0)) __PYX_ERR(27, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_16max(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_16max(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__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("max", 1);

  /* "include/generated/Point1D.pyx":67
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 *         return self.p1ptr().max(i)             # <<<<<<<<<<<<<<
 * 
 *     def min(self, i):
 */
  __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(27, 67, __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(27, 67, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->max(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 67, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":64
 *         return self.p1ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point1D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":69
 *         return self.p1ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18min, "Point1D.min(self, i)\n(int) -> double\n        Returns minimal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_18min};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 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, "min") < 0)) __PYX_ERR(27, 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_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_18min(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_18min(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__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("min", 1);

  /* "include/generated/Point1D.pyx":72
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 *         return self.p1ptr().min(i)             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(27, 72, __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(27, 72, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->min(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 72, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":69
 *         return self.p1ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point1D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":74
 *         return self.p1ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20errs, "Point1D.errs(self, i)\n(int) -> list[double]\n        Returns error pair along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_21errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_20errs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 74, __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, "errs") < 0)) __PYX_ERR(27, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point1D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_20errs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_20errs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  size_t __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Point1D.pyx":77
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 *         return self.p1ptr().errs(i)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):
 */
  __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(27, 77, __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(27, 77, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errs(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 77, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":74
 *         return self.p1ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point1D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":79
 *         return self.p1ptr().errs(i)
 * 
 *     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_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point1D_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point1D, 1, "other", 0))) __PYX_ERR(27, 79, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_22__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_22__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__", 1);

  /* "include/generated/Point1D.pyx":80
 * 
 *     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/generated/Point1D.pyx":81
 *     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(27, 81, __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(27, 81, __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, 81, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":80
 * 
 *     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/generated/Point1D.pyx":83
 *             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(27, 83, __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(27, 83, __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, 83, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":82
 *         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/generated/Point1D.pyx":85
 *             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(27, 85, __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(27, 85, __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, 85, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":84
 *         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/generated/Point1D.pyx":87
 *             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(27, 87, __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(27, 87, __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, 87, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":86
 *         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/generated/Point1D.pyx":89
 *             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(27, 89, __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(27, 89, __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, 89, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":88
 *         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/generated/Point1D.pyx":91
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 *         elif op == 5:
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, *es):
 */
    __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(27, 91, __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(27, 91, __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, 91, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point1D.pyx":90
 *         elif op == 4:
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 * 
 */
    break;
    default: break;
  }

  /* "include/generated/Point1D.pyx":79
 *         return self.p1ptr().errs(i)
 * 
 *     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;
}

/* "include/generated/Point1D.pyx":93
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_24setXErrs, "Point1D.setXErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on x-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_25setXErrs = {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_24setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_24setXErrs(((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_24setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 1);

  /* "include/generated/Point1D.pyx":101
 *         Set asymmetric errors on x-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point1D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(27, 102, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point1D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< 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(27, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point1D.pyx":104
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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(27, 104, __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, 104, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 104, __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/generated/Point1D.pyx":105
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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/generated/Point1D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point1D.pyx":106
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))
 */
    __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, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point1D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point1D.pyx":108
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def x(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 108, __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/generated/Point1D.pyx":93
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 * 
 *     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_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26x, "Point1D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_27x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_26x};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26x(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_26x(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", 1);

  /* "include/generated/Point1D.pyx":112
 *     def x(self):
 *         """The x value"""
 *         return self.p1ptr().x()             # <<<<<<<<<<<<<<
 * 
 *     def setX(self, x):
 */
  __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(27, 112, __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, 112, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     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/generated/Point1D.pyx":114
 *         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_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28setX, "Point1D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_29setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_28setX};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 114, __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, 114, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_28setX(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_28setX(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", 1);

  /* "include/generated/Point1D.pyx":116
 *     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(27, 116, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 116, __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, 116, __pyx_L1_error)
  }

  /* "include/generated/Point1D.pyx":114
 *         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/generated/Point1D.pyx":118
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p1ptr().xErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30xErrs, "Point1D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_31xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_30xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_30xErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_30xErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Point1D.pyx":120
 *     def xErrs(self):
 *         """The x errors"""
 *         return self.p1ptr().xErrs()             # <<<<<<<<<<<<<<
 * 
 *     def xMin(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(27, 120, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 120, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":118
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p1ptr().xErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point1D.pyx":122
 *         return self.p1ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32xMin, "Point1D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_33xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_32xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_32xMin(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_32xMin(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", 1);

  /* "include/generated/Point1D.pyx":124
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     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(27, 124, __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, 124, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":122
 *         return self.p1ptr().xErrs()
 * 
 *     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/generated/Point1D.pyx":126
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34xMax, "Point1D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_35xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_34xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_34xMax(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_34xMax(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", 1);

  /* "include/generated/Point1D.pyx":128
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrMinus(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(27, 128, __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, 128, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":126
 *         return self.p1ptr().xMin()
 * 
 *     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/generated/Point1D.pyx":130
 *         return self.p1ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36xErrMinus, "Point1D.xErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_37xErrMinus = {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_36xErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_36xErrMinus(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_36xErrMinus(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("xErrMinus", 1);

  /* "include/generated/Point1D.pyx":131
 * 
 *     def xErrMinus(self):
 *         return self.p1ptr().xErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def xErrPlus(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(27, 131, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 131, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":130
 *         return self.p1ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.xErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":133
 *         return self.p1ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_38xErrPlus, "Point1D.xErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_39xErrPlus = {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_38xErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_38xErrPlus(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_38xErrPlus(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("xErrPlus", 1);

  /* "include/generated/Point1D.pyx":134
 * 
 *     def xErrPlus(self):
 *         return self.p1ptr().xErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(27, 134, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 134, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":133
 *         return self.p1ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.xErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point1D.pyx":136
 *         return self.p1ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40xErrAvg, "Point1D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_41xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_40xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_40xErrAvg(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_40xErrAvg(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", 1);

  /* "include/generated/Point1D.pyx":137
 * 
 *     def xErrAvg(self):
 *         return self.p1ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __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(27, 137, __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, 137, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point1D.pyx":136
 *         return self.p1ptr().xErrPlus()
 * 
 *     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/generated/Point1D.pyx":139
 *         return self.p1ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "Point1D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 139, __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, 139, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_42scaleX(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", 1);

  /* "include/generated/Point1D.pyx":142
 *         """(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(27, 142, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 142, __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, 142, __pyx_L1_error)
  }

  /* "include/generated/Point1D.pyx":139
 *         return self.p1ptr().xErrAvg()
 * 
 *     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;
}

/* "(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_45__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_44__reduce_cython__, "Point1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_45__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_45__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_44__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_45__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_44__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_44__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__", 1);

  /* "(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(1, 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_47__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_46__setstate_cython__, "Point1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_47__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_47__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_46__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_47__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_46__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_46__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__", 1);

  /* "(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(1, 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/generated/Point2D.pyx":14
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Point2D.pyx":15
 * 
 *     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(28, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Point2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":14
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */

/* 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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point2D___init__(((struct __pyx_obj_4yoda_4core_Point2D *)__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_7Point2D___init__(struct __pyx_obj_4yoda_4core_Point2D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Point2D.pyx":19
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 19, __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(28, 19, __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_Point2D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point2D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point2D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point2D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(28, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(28, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(28, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(28, 19, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(28, 19, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Point2D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_3_Point2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_2__init1, "Point2D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_3_Point2D__init1 = {"_Point2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_3_Point2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_3_Point2D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point2D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_Point2D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Point2D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_2__init1(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_2__init1(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point2D__init1", 1);

  /* "include/generated/Point2D.pyx":22
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Point2D())             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, vals, errsdn, errsup):
 */
  try {
    __pyx_t_1 = new YODA::Point2D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 22, __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(28, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point2D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_5_Point2D__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_7Point2D_4__init2, "Point2D.__init2(self, vals, errsdn, errsup)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_5_Point2D__init2 = {"_Point2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_5_Point2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_5_Point2D__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_vals = 0;
  PyObject *__pyx_v_errsdn = 0;
  PyObject *__pyx_v_errsup = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point2D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vals,&__pyx_n_s_errsdn,&__pyx_n_s_errsup,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_vals)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 24, __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_errsdn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init2", 1, 3, 3, 1); __PYX_ERR(28, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errsup)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init2", 1, 3, 3, 2); __PYX_ERR(28, 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, "_Point2D__init2") < 0)) __PYX_ERR(28, 24, __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_vals = values[0];
    __pyx_v_errsdn = values[1];
    __pyx_v_errsup = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point2D__init2", 1, 3, 3, __pyx_nargs); __PYX_ERR(28, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_4__init2(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_vals, __pyx_v_errsdn, __pyx_v_errsup);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_2generator155(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point2D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */

static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_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_156_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_156_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(28, 36, __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_7Point2D_15_Point2D__init2_2generator155, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point2D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(28, 36, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init2.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_7Point2D_15_Point2D__init2_2generator155(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_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(28, 36, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(28, 36, __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(28, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 36, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 36, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 36, __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(28, 36, __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(28, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(28, 36, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_5generator156(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point2D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 */

static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_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_157_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_157_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(28, 37, __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_7Point2D_15_Point2D__init2_5generator156, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point2D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(28, 37, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init2.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_7Point2D_15_Point2D__init2_5generator156(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_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(28, 37, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(28, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(28, 37, __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(28, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 37, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 37, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 37, __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(28, 37, __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(28, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(28, 37, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_8generator157(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point2D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_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_158_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_158_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(28, 38, __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_7Point2D_15_Point2D__init2_8generator157, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point2D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(28, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init2.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_7Point2D_15_Point2D__init2_8generator157(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_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(28, 38, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(28, 38, __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(28, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 38, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 38, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(28, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 38, __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(28, 38, __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(28, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(28, 38, __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/generated/Point2D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

static PyObject *__pyx_pf_4yoda_4core_7Point2D_4__init2(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup) {
  std::vector<std::vector<double> >  __pyx_v_args;
  PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_2generator155 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_5generator156 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_8generator157 = 0;
  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;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  YODA::Point2D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point2D__init2", 1);

  /* "include/generated/Point2D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 2)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_vals, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 26, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point2D.pyx":27
 * 
 *         if hasattr(vals, "__iter__"):
 *           assert(len(vals) == 2)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsdn, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_vals); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(28, 27, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 2);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(28, 27, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(28, 27, __pyx_L1_error)
    #endif

    /* "include/generated/Point2D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 2)
 * 
 */
  }

  /* "include/generated/Point2D.pyx":29
 *           assert(len(vals) == 2)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 2)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsdn, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 29, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point2D.pyx":30
 * 
 *         if hasattr(errsdn, "__iter__"):
 *           assert(len(errsdn) == 2)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsup, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsdn); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(28, 30, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 2);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(28, 30, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(28, 30, __pyx_L1_error)
    #endif

    /* "include/generated/Point2D.pyx":29
 *           assert(len(vals) == 2)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 2)
 * 
 */
  }

  /* "include/generated/Point2D.pyx":32
 *           assert(len(errsdn) == 2)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 2)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsup, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 32, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point2D.pyx":33
 * 
 *         if hasattr(errsup, "__iter__"):
 *           assert(len(errsup) == 2)             # <<<<<<<<<<<<<<
 * 
 *         cdef vector[vector[double]] args
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsup); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(28, 33, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 2);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(28, 33, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(28, 33, __pyx_L1_error)
    #endif

    /* "include/generated/Point2D.pyx":32
 *           assert(len(errsdn) == 2)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 2)
 * 
 */
  }

  /* "include/generated/Point2D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_genexpr(NULL, __pyx_v_vals); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point2D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_3genexpr(NULL, __pyx_v_errsdn); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point2D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point2D_15_Point2D__init2_6genexpr(NULL, __pyx_v_errsup); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point2D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(28, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_5)) __PYX_ERR(28, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_t_6)) __PYX_ERR(28, 36, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_args = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

  /* "include/generated/Point2D.pyx":39
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):
 */
  try {
    __pyx_t_8 = new YODA::Point2D((__pyx_v_args[0]), (__pyx_v_args[1]), (__pyx_v_args[2]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 39, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point2D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_2generator155);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_5generator156);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point2D_15_Point2D__init2_8generator157);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_7_Point2D__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_7Point2D_6__init3, "Point2D.__init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_7_Point2D__init3 = {"_Point2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_7_Point2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_7_Point2D__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_xVal = 0;
  PyObject *__pyx_v_yVal = 0;
  PyObject *__pyx_v_xErrDn = 0;
  PyObject *__pyx_v_xErrUp = 0;
  PyObject *__pyx_v_yErrDn = 0;
  PyObject *__pyx_v_yErrUp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point2D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_yVal,&__pyx_n_s_xErrDn,&__pyx_n_s_xErrUp,&__pyx_n_s_yErrDn,&__pyx_n_s_yErrUp,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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 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_yVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, 1); __PYX_ERR(28, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, 2); __PYX_ERR(28, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, 3); __PYX_ERR(28, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, 4); __PYX_ERR(28, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, 5); __PYX_ERR(28, 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, "_Point2D__init3") < 0)) __PYX_ERR(28, 41, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 6)) {
      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);
      values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
      values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
    }
    __pyx_v_xVal = values[0];
    __pyx_v_yVal = values[1];
    __pyx_v_xErrDn = values[2];
    __pyx_v_xErrUp = values[3];
    __pyx_v_yErrDn = values[4];
    __pyx_v_yErrUp = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point2D__init3", 1, 6, 6, __pyx_nargs); __PYX_ERR(28, 41, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_6__init3(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_yVal, __pyx_v_xErrDn, __pyx_v_xErrUp, __pyx_v_yErrDn, __pyx_v_yErrUp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_6__init3(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp, PyObject *__pyx_v_yErrDn, PyObject *__pyx_v_yErrUp) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point2D__init3", 1);

  /* "include/generated/Point2D.pyx":42
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):
 *         vals = [ xVal, yVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErrDn, yErrDn ]
 *         errp = [ xErrUp, yErrUp ]
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(28, 42, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yVal);
  __Pyx_GIVEREF(__pyx_v_yVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yVal)) __PYX_ERR(28, 42, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":43
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]             # <<<<<<<<<<<<<<
 *         errp = [ xErrUp, yErrUp ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrDn);
  __Pyx_GIVEREF(__pyx_v_xErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrDn)) __PYX_ERR(28, 43, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErrDn);
  __Pyx_GIVEREF(__pyx_v_yErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErrDn)) __PYX_ERR(28, 43, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":44
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]
 *         errp = [ xErrUp, yErrUp ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrUp);
  __Pyx_GIVEREF(__pyx_v_xErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrUp)) __PYX_ERR(28, 44, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErrUp);
  __Pyx_GIVEREF(__pyx_v_yErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErrUp)) __PYX_ERR(28, 44, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":45
 *         errm = [ xErrDn, yErrDn ]
 *         errp = [ xErrUp, yErrUp ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point2D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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, 45, __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/generated/Point2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]
 */

  /* 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.Point2D._Point2D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_9_Point2D__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_7Point2D_8__init4, "Point2D.__init4(self, xVal, yVal, xErr, yErr)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_9_Point2D__init4 = {"_Point2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_9_Point2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_9_Point2D__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_xVal = 0;
  PyObject *__pyx_v_yVal = 0;
  PyObject *__pyx_v_xErr = 0;
  PyObject *__pyx_v_yErr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point2D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_yVal,&__pyx_n_s_xErr,&__pyx_n_s_yErr,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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 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_yVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init4", 1, 4, 4, 1); __PYX_ERR(28, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init4", 1, 4, 4, 2); __PYX_ERR(28, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point2D__init4", 1, 4, 4, 3); __PYX_ERR(28, 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, "_Point2D__init4") < 0)) __PYX_ERR(28, 47, __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_xVal = values[0];
    __pyx_v_yVal = values[1];
    __pyx_v_xErr = values[2];
    __pyx_v_yErr = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point2D__init4", 1, 4, 4, __pyx_nargs); __PYX_ERR(28, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D._Point2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_8__init4(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_yVal, __pyx_v_xErr, __pyx_v_yErr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_8__init4(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_xErr, PyObject *__pyx_v_yErr) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point2D__init4", 1);

  /* "include/generated/Point2D.pyx":48
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):
 *         vals = [ xVal, yVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErr, yErr ]
 *         errp = [ xErr, yErr ]
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(28, 48, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yVal);
  __Pyx_GIVEREF(__pyx_v_yVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yVal)) __PYX_ERR(28, 48, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":49
 *     def __init4(self, xVal, yVal, xErr, yErr):
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]             # <<<<<<<<<<<<<<
 *         errp = [ xErr, yErr ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(28, 49, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErr);
  __Pyx_GIVEREF(__pyx_v_yErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErr)) __PYX_ERR(28, 49, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":50
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]
 *         errp = [ xErr, yErr ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(28, 50, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErr);
  __Pyx_GIVEREF(__pyx_v_yErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErr)) __PYX_ERR(28, 50, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":51
 *         errm = [ xErr, yErr ]
 *         errp = [ xErr, yErr ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point2D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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, 51, __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/generated/Point2D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]
 */

  /* 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.Point2D._Point2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_10copy, "Point2D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_11copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_10copy};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10copy(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_10copy(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", 1);

  /* "include/generated/Point2D.pyx":54
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(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(28, 54, __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(28, 54, __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(28, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     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/generated/Point2D.pyx":56
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point2D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_12__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_12__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;
  unsigned 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__", 1);

  /* "include/generated/Point2D.pyx":57
 * 
 *     def __repr__(self):
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))             # <<<<<<<<<<<<<<
 * 
 *     def val(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(28, 57, __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_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_1};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 57, __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(28, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(28, 57, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(28, 57, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Point2D_v1_g_v2_g, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 57, __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/generated/Point2D.pyx":56
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 */

  /* 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/generated/Point2D.pyx":59
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14val, "Point2D.val(self, i)\n(int) -> double\n        Returns value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_15val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_14val};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 59, __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(28, 59, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 59, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_14val(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_14val(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__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", 1);

  /* "include/generated/Point2D.pyx":62
 *         """(int) -> double
 *         Returns value along axis i"""
 *         return self.p2ptr().val(i)             # <<<<<<<<<<<<<<
 * 
 *     def max(self, i):
 */
  __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(28, 62, __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(28, 62, __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(28, 62, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":59
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":64
 *         return self.p2ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16max, "Point2D.max(self, i)\n(int) -> double\n        Returns maximal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_16max};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[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, "max") < 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_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_16max(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_16max(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__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("max", 1);

  /* "include/generated/Point2D.pyx":67
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 *         return self.p2ptr().max(i)             # <<<<<<<<<<<<<<
 * 
 *     def min(self, i):
 */
  __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(28, 67, __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(28, 67, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->max(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 67, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":64
 *         return self.p2ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":69
 *         return self.p2ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18min, "Point2D.min(self, i)\n(int) -> double\n        Returns minimal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_18min};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 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, "min") < 0)) __PYX_ERR(28, 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_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_18min(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_18min(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__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("min", 1);

  /* "include/generated/Point2D.pyx":72
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 *         return self.p2ptr().min(i)             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(28, 72, __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(28, 72, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->min(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 72, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":69
 *         return self.p2ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":74
 *         return self.p2ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20errs, "Point2D.errs(self, i)\n(int) -> list[double]\n        Returns error pair along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_21errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_20errs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 74, __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, "errs") < 0)) __PYX_ERR(28, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point2D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_20errs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_20errs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  size_t __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Point2D.pyx":77
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 *         return self.p2ptr().errs(i)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):
 */
  __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(28, 77, __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(28, 77, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errs(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 77, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":74
 *         return self.p2ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":79
 *         return self.p2ptr().errs(i)
 * 
 *     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_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point2D_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point2D, 1, "other", 0))) __PYX_ERR(28, 79, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_22__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_22__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__", 1);

  /* "include/generated/Point2D.pyx":80
 * 
 *     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/generated/Point2D.pyx":81
 *     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(28, 81, __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(28, 81, __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(28, 81, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":80
 * 
 *     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/generated/Point2D.pyx":83
 *             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(28, 83, __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(28, 83, __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(28, 83, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":82
 *         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/generated/Point2D.pyx":85
 *             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(28, 85, __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(28, 85, __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(28, 85, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":84
 *         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/generated/Point2D.pyx":87
 *             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(28, 87, __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(28, 87, __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(28, 87, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":86
 *         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/generated/Point2D.pyx":89
 *             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(28, 89, __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(28, 89, __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(28, 89, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":88
 *         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/generated/Point2D.pyx":91
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 *         elif op == 5:
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, *es):
 */
    __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(28, 91, __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(28, 91, __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(28, 91, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/generated/Point2D.pyx":90
 *         elif op == 4:
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 * 
 */
    break;
    default: break;
  }

  /* "include/generated/Point2D.pyx":79
 *         return self.p2ptr().errs(i)
 * 
 *     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;
}

/* "include/generated/Point2D.pyx":93
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_24setXErrs, "Point2D.setXErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on x-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_25setXErrs = {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_24setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point2D_24setXErrs(((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_24setXErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 1);

  /* "include/generated/Point2D.pyx":101
 *         Set asymmetric errors on x-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(28, 102, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point2D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< 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(28, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(28, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point2D.pyx":104
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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(28, 104, __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, 104, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 104, __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/generated/Point2D.pyx":105
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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/generated/Point2D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point2D.pyx":106
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))
 */
    __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, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point2D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point2D.pyx":108
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def x(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 108, __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/generated/Point2D.pyx":93
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 * 
 *     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.Point2D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26x, "Point2D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_27x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_26x};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26x(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_26x(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", 1);

  /* "include/generated/Point2D.pyx":112
 *     def x(self):
 *         """The x value"""
 *         return self.p2ptr().x()             # <<<<<<<<<<<<<<
 * 
 *     def setX(self, x):
 */
  __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(28, 112, __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, 112, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     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/generated/Point2D.pyx":114
 *         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_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28setX, "Point2D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_29setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_28setX};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 114, __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, 114, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_28setX(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_28setX(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", 1);

  /* "include/generated/Point2D.pyx":116
 *     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(28, 116, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 116, __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, 116, __pyx_L1_error)
  }

  /* "include/generated/Point2D.pyx":114
 *         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/generated/Point2D.pyx":118
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p2ptr().xErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30xErrs, "Point2D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_31xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_30xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_30xErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_30xErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Point2D.pyx":120
 *     def xErrs(self):
 *         """The x errors"""
 *         return self.p2ptr().xErrs()             # <<<<<<<<<<<<<<
 * 
 *     def xMin(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(28, 120, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 120, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":118
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p2ptr().xErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point2D.pyx":122
 *         return self.p2ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32xMin, "Point2D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_33xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_32xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_32xMin(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_32xMin(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", 1);

  /* "include/generated/Point2D.pyx":124
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(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(28, 124, __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, 124, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":122
 *         return self.p2ptr().xErrs()
 * 
 *     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/generated/Point2D.pyx":126
 *         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_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34xMax, "Point2D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_35xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_34xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_34xMax(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_34xMax(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", 1);

  /* "include/generated/Point2D.pyx":128
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrMinus(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(28, 128, __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, 128, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":126
 *         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/generated/Point2D.pyx":130
 *         return self.p2ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36xErrMinus, "Point2D.xErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_37xErrMinus = {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_36xErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_36xErrMinus(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_36xErrMinus(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("xErrMinus", 1);

  /* "include/generated/Point2D.pyx":131
 * 
 *     def xErrMinus(self):
 *         return self.p2ptr().xErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def xErrPlus(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(28, 131, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 131, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":130
 *         return self.p2ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.xErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":133
 *         return self.p2ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_38xErrPlus, "Point2D.xErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_39xErrPlus = {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_38xErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_38xErrPlus(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_38xErrPlus(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("xErrPlus", 1);

  /* "include/generated/Point2D.pyx":134
 * 
 *     def xErrPlus(self):
 *         return self.p2ptr().xErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(28, 134, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 134, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":133
 *         return self.p2ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.xErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":136
 *         return self.p2ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40xErrAvg, "Point2D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_41xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_40xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_40xErrAvg(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_40xErrAvg(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", 1);

  /* "include/generated/Point2D.pyx":137
 * 
 *     def xErrAvg(self):
 *         return self.p2ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __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(28, 137, __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(28, 137, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":136
 *         return self.p2ptr().xErrPlus()
 * 
 *     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/generated/Point2D.pyx":139
 *         return self.p2ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "Point2D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 139, __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, 139, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_42scaleX(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", 1);

  /* "include/generated/Point2D.pyx":142
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 *         self.p2ptr().scaleX(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(28, 142, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 142, __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, 142, __pyx_L1_error)
  }

  /* "include/generated/Point2D.pyx":139
 *         return self.p2ptr().xErrAvg()
 * 
 *     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/generated/Point2D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_45setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_44setYErrs, "Point2D.setYErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on y-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_45setYErrs = {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_45setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_44setYErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_45setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setYErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_44setYErrs(((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_44setYErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setYErrs", 1);

  /* "include/generated/Point2D.pyx":153
 *         Set asymmetric errors on y-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point2D.pyx":154
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(28, 154, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point2D.pyx":155
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0]) #< 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(28, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(28, 155, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point2D.pyx":156
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< 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(28, 156, __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, 156, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_1, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 156, __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/generated/Point2D.pyx":157
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< 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/generated/Point2D.pyx":155
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point2D.pyx":158
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(1, tuple(errs))
 */
    __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, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point2D.pyx":154
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point2D.pyx":160
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(1, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def y(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_1, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 160, __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/generated/Point2D.pyx":145
 * 
 * 
 *     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_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_47y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46y, "Point2D.y(self)\nThe y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_47y = {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_47y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_46y};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_47y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("y (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_46y(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_46y(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", 1);

  /* "include/generated/Point2D.pyx":164
 *     def y(self):
 *         """The y value"""
 *         return self.p2ptr().y()             # <<<<<<<<<<<<<<
 * 
 *     def setY(self, y):
 */
  __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(28, 164, __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, 164, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     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/generated/Point2D.pyx":166
 *         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_49setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48setY, "Point2D.setY(self, y)\nSet the y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_49setY = {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_49setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_48setY};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_49setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 166, __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, 166, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setY", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 166, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_48setY(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_48setY(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", 1);

  /* "include/generated/Point2D.pyx":168
 *     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(28, 168, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 168, __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, 168, __pyx_L1_error)
  }

  /* "include/generated/Point2D.pyx":166
 *         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/generated/Point2D.pyx":170
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p2ptr().yErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_51yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50yErrs, "Point2D.yErrs(self)\nThe y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_51yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_51yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_50yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_51yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_50yErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_50yErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 1);

  /* "include/generated/Point2D.pyx":172
 *     def yErrs(self):
 *         """The y errors"""
 *         return self.p2ptr().yErrs()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(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(28, 172, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 172, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":170
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p2ptr().yErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point2D.pyx":174
 *         return self.p2ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_53yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52yMin, "Point2D.yMin(self)\nThe minimum y position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_53yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_53yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_52yMin};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_53yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_52yMin(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_52yMin(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", 1);

  /* "include/generated/Point2D.pyx":176
 *     def yMin(self):
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(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(28, 176, __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, 176, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":174
 *         return self.p2ptr().yErrs()
 * 
 *     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/generated/Point2D.pyx":178
 *         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_55yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54yMax, "Point2D.yMax(self)\nThe maximum y position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_55yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_55yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_54yMax};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_55yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_54yMax(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_54yMax(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", 1);

  /* "include/generated/Point2D.pyx":180
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def yErrMinus(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(28, 180, __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, 180, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":178
 *         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/generated/Point2D.pyx":182
 *         return self.p2ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_57yErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56yErrMinus, "Point2D.yErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_57yErrMinus = {"yErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_57yErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_56yErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_57yErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_56yErrMinus(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_56yErrMinus(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("yErrMinus", 1);

  /* "include/generated/Point2D.pyx":183
 * 
 *     def yErrMinus(self):
 *         return self.p2ptr().yErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def yErrPlus(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(28, 183, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 183, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":182
 *         return self.p2ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.yErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":185
 *         return self.p2ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_59yErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58yErrPlus, "Point2D.yErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_59yErrPlus = {"yErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_59yErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_58yErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_59yErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_58yErrPlus(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_58yErrPlus(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("yErrPlus", 1);

  /* "include/generated/Point2D.pyx":186
 * 
 *     def yErrPlus(self):
 *         return self.p2ptr().yErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(28, 186, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 186, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":185
 *         return self.p2ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.yErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point2D.pyx":188
 *         return self.p2ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_61yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60yErrAvg, "Point2D.yErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_61yErrAvg = {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_61yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_60yErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_61yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_60yErrAvg(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_60yErrAvg(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", 1);

  /* "include/generated/Point2D.pyx":189
 * 
 *     def yErrAvg(self):
 *         return self.p2ptr().yErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __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(28, 189, __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(28, 189, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point2D.pyx":188
 *         return self.p2ptr().yErrPlus()
 * 
 *     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/generated/Point2D.pyx":191
 *         return self.p2ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_63scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62scaleY, "Point2D.scaleY(self, a)\n(float) -> None\n        Scale the y values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_63scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_63scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_62scaleY};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_63scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 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, "scaleY") < 0)) __PYX_ERR(28, 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_a = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_62scaleY(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_62scaleY(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", 1);

  /* "include/generated/Point2D.pyx":194
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 *         self.p2ptr().scaleY(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(28, 194, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 194, __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, 194, __pyx_L1_error)
  }

  /* "include/generated/Point2D.pyx":191
 *         return self.p2ptr().yErrAvg()
 * 
 *     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;
}

/* "(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_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_7Point2D_64__reduce_cython__, "Point2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_65__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_65__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_64__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_64__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_64__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__", 1);

  /* "(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(1, 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_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_7Point2D_66__setstate_cython__, "Point2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_67__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_67__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_66__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_66__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_66__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__", 1);

  /* "(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(1, 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/generated/Point3D.pyx":14
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Point3D.pyx":15
 * 
 *     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(29, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Point3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":14
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 */

/* 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_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point3D___init__(((struct __pyx_obj_4yoda_4core_Point3D *)__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_7Point3D___init__(struct __pyx_obj_4yoda_4core_Point3D *__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;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 1);

  /* "include/generated/Point3D.pyx":19
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 19, __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, 19, __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_Point3D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point3D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point3D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point3D__init4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(29, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(29, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 2, __pyx_t_4)) __PYX_ERR(29, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(29, 19, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6)) __PYX_ERR(29, 19, __pyx_L1_error);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Point3D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_3_Point3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_2__init1, "Point3D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_3_Point3D__init1 = {"_Point3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_3_Point3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_3_Point3D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point3D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_Point3D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Point3D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_2__init1(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_2__init1(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("_Point3D__init1", 1);

  /* "include/generated/Point3D.pyx":22
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Point3D())             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, vals, errsdn, errsup):
 */
  try {
    __pyx_t_1 = new YODA::Point3D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 22, __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(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point3D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_5_Point3D__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_7Point3D_4__init2, "Point3D.__init2(self, vals, errsdn, errsup)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_5_Point3D__init2 = {"_Point3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_5_Point3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_5_Point3D__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_vals = 0;
  PyObject *__pyx_v_errsdn = 0;
  PyObject *__pyx_v_errsup = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point3D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vals,&__pyx_n_s_errsdn,&__pyx_n_s_errsup,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_vals)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 24, __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_errsdn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init2", 1, 3, 3, 1); __PYX_ERR(29, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errsup)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init2", 1, 3, 3, 2); __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, "_Point3D__init2") < 0)) __PYX_ERR(29, 24, __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_vals = values[0];
    __pyx_v_errsdn = values[1];
    __pyx_v_errsup = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point3D__init2", 1, 3, 3, __pyx_nargs); __PYX_ERR(29, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_4__init2(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_vals, __pyx_v_errsdn, __pyx_v_errsup);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_2generator158(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point3D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */

static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_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_159_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_159_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(29, 36, __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_7Point3D_15_Point3D__init2_2generator158, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point3D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(29, 36, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init2.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_7Point3D_15_Point3D__init2_2generator158(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_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(29, 36, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(29, 36, __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(29, 36, __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, 36, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 36, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 36, __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, 36, __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(29, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 36, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_5generator159(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point3D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 */

static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_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_160_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_160_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(29, 37, __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_7Point3D_15_Point3D__init2_5generator159, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point3D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(29, 37, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init2.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_7Point3D_15_Point3D__init2_5generator159(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_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(29, 37, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(29, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(29, 37, __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(29, 37, __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, 37, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 37, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 37, __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, 37, __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(29, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 37, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_8generator160(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point3D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_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_161_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_161_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(29, 38, __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_7Point3D_15_Point3D__init2_8generator160, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point3D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(29, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init2.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_7Point3D_15_Point3D__init2_8generator160(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_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(29, 38, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(29, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(29, 38, __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(29, 38, __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, 38, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 38, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(29, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 38, __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, 38, __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(29, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 38, __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/generated/Point3D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

static PyObject *__pyx_pf_4yoda_4core_7Point3D_4__init2(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup) {
  std::vector<std::vector<double> >  __pyx_v_args;
  PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_2generator158 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_5generator159 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_8generator160 = 0;
  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;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  YODA::Point3D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point3D__init2", 1);

  /* "include/generated/Point3D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 3)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_vals, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 26, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point3D.pyx":27
 * 
 *         if hasattr(vals, "__iter__"):
 *           assert(len(vals) == 3)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsdn, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_vals); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 27, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 3);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(29, 27, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(29, 27, __pyx_L1_error)
    #endif

    /* "include/generated/Point3D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 3)
 * 
 */
  }

  /* "include/generated/Point3D.pyx":29
 *           assert(len(vals) == 3)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 3)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsdn, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 29, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point3D.pyx":30
 * 
 *         if hasattr(errsdn, "__iter__"):
 *           assert(len(errsdn) == 3)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsup, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsdn); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 30, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 3);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(29, 30, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(29, 30, __pyx_L1_error)
    #endif

    /* "include/generated/Point3D.pyx":29
 *           assert(len(vals) == 3)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 3)
 * 
 */
  }

  /* "include/generated/Point3D.pyx":32
 *           assert(len(errsdn) == 3)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 3)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsup, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 32, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point3D.pyx":33
 * 
 *         if hasattr(errsup, "__iter__"):
 *           assert(len(errsup) == 3)             # <<<<<<<<<<<<<<
 * 
 *         cdef vector[vector[double]] args
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsup); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 33, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 3);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(29, 33, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(29, 33, __pyx_L1_error)
    #endif

    /* "include/generated/Point3D.pyx":32
 *           assert(len(errsdn) == 3)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 3)
 * 
 */
  }

  /* "include/generated/Point3D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_genexpr(NULL, __pyx_v_vals); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point3D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_3genexpr(NULL, __pyx_v_errsdn); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point3D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point3D_15_Point3D__init2_6genexpr(NULL, __pyx_v_errsup); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point3D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(29, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_5)) __PYX_ERR(29, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_t_6)) __PYX_ERR(29, 36, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_args = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

  /* "include/generated/Point3D.pyx":39
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):
 */
  try {
    __pyx_t_8 = new YODA::Point3D((__pyx_v_args[0]), (__pyx_v_args[1]), (__pyx_v_args[2]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 39, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point3D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_2generator158);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_5generator159);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point3D_15_Point3D__init2_8generator160);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_7_Point3D__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_7Point3D_6__init3, "Point3D.__init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_7_Point3D__init3 = {"_Point3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_7_Point3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_6__init3};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_7_Point3D__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_xVal = 0;
  PyObject *__pyx_v_yVal = 0;
  PyObject *__pyx_v_zVal = 0;
  PyObject *__pyx_v_xErrDn = 0;
  PyObject *__pyx_v_xErrUp = 0;
  PyObject *__pyx_v_yErrDn = 0;
  PyObject *__pyx_v_yErrUp = 0;
  PyObject *__pyx_v_zErrDn = 0;
  PyObject *__pyx_v_zErrUp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point3D__init3 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_yVal,&__pyx_n_s_zVal,&__pyx_n_s_xErrDn,&__pyx_n_s_xErrUp,&__pyx_n_s_yErrDn,&__pyx_n_s_yErrUp,&__pyx_n_s_zErrDn,&__pyx_n_s_zErrUp,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 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_yVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 1); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 2); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 3); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 4); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 5); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 6); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zErrDn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[7]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 7); __PYX_ERR(29, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zErrUp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[8]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, 8); __PYX_ERR(29, 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, "_Point3D__init3") < 0)) __PYX_ERR(29, 41, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 9)) {
      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);
      values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
      values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
      values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
      values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
      values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
    }
    __pyx_v_xVal = values[0];
    __pyx_v_yVal = values[1];
    __pyx_v_zVal = values[2];
    __pyx_v_xErrDn = values[3];
    __pyx_v_xErrUp = values[4];
    __pyx_v_yErrDn = values[5];
    __pyx_v_yErrUp = values[6];
    __pyx_v_zErrDn = values[7];
    __pyx_v_zErrUp = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point3D__init3", 1, 9, 9, __pyx_nargs); __PYX_ERR(29, 41, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_6__init3(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_yVal, __pyx_v_zVal, __pyx_v_xErrDn, __pyx_v_xErrUp, __pyx_v_yErrDn, __pyx_v_yErrUp, __pyx_v_zErrDn, __pyx_v_zErrUp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_6__init3(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_zVal, PyObject *__pyx_v_xErrDn, PyObject *__pyx_v_xErrUp, PyObject *__pyx_v_yErrDn, PyObject *__pyx_v_yErrUp, PyObject *__pyx_v_zErrDn, PyObject *__pyx_v_zErrUp) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point3D__init3", 1);

  /* "include/generated/Point3D.pyx":42
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):
 *         vals = [ xVal, yVal, zVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 *         errp = [ xErrUp, yErrUp, zErrUp ]
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(29, 42, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yVal);
  __Pyx_GIVEREF(__pyx_v_yVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yVal)) __PYX_ERR(29, 42, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zVal);
  __Pyx_GIVEREF(__pyx_v_zVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zVal)) __PYX_ERR(29, 42, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":43
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]             # <<<<<<<<<<<<<<
 *         errp = [ xErrUp, yErrUp, zErrUp ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrDn);
  __Pyx_GIVEREF(__pyx_v_xErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrDn)) __PYX_ERR(29, 43, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErrDn);
  __Pyx_GIVEREF(__pyx_v_yErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErrDn)) __PYX_ERR(29, 43, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zErrDn);
  __Pyx_GIVEREF(__pyx_v_zErrDn);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zErrDn)) __PYX_ERR(29, 43, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":44
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 *         errp = [ xErrUp, yErrUp, zErrUp ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErrUp);
  __Pyx_GIVEREF(__pyx_v_xErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErrUp)) __PYX_ERR(29, 44, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErrUp);
  __Pyx_GIVEREF(__pyx_v_yErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErrUp)) __PYX_ERR(29, 44, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zErrUp);
  __Pyx_GIVEREF(__pyx_v_zErrUp);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zErrUp)) __PYX_ERR(29, 44, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":45
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 *         errp = [ xErrUp, yErrUp, zErrUp ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point3D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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(29, 45, __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/generated/Point3D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 */

  /* 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._Point3D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_9_Point3D__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_7Point3D_8__init4, "Point3D.__init4(self, xVal, yVal, zVal, xErr, yErr, zErr)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_9_Point3D__init4 = {"_Point3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_9_Point3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_8__init4};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_9_Point3D__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_xVal = 0;
  PyObject *__pyx_v_yVal = 0;
  PyObject *__pyx_v_zVal = 0;
  PyObject *__pyx_v_xErr = 0;
  PyObject *__pyx_v_yErr = 0;
  PyObject *__pyx_v_zErr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point3D__init4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xVal,&__pyx_n_s_yVal,&__pyx_n_s_zVal,&__pyx_n_s_xErr,&__pyx_n_s_yErr,&__pyx_n_s_zErr,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_xVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 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_yVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, 1); __PYX_ERR(29, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zVal)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, 2); __PYX_ERR(29, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, 3); __PYX_ERR(29, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, 4); __PYX_ERR(29, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zErr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, 5); __PYX_ERR(29, 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, "_Point3D__init4") < 0)) __PYX_ERR(29, 47, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 6)) {
      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);
      values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
      values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
    }
    __pyx_v_xVal = values[0];
    __pyx_v_yVal = values[1];
    __pyx_v_zVal = values[2];
    __pyx_v_xErr = values[3];
    __pyx_v_yErr = values[4];
    __pyx_v_zErr = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point3D__init4", 1, 6, 6, __pyx_nargs); __PYX_ERR(29, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D._Point3D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_8__init4(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_xVal, __pyx_v_yVal, __pyx_v_zVal, __pyx_v_xErr, __pyx_v_yErr, __pyx_v_zErr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_8__init4(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_xVal, PyObject *__pyx_v_yVal, PyObject *__pyx_v_zVal, PyObject *__pyx_v_xErr, PyObject *__pyx_v_yErr, PyObject *__pyx_v_zErr) {
  PyObject *__pyx_v_vals = NULL;
  PyObject *__pyx_v_errm = NULL;
  PyObject *__pyx_v_errp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point3D__init4", 1);

  /* "include/generated/Point3D.pyx":48
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):
 *         vals = [ xVal, yVal, zVal ]             # <<<<<<<<<<<<<<
 *         errm = [ xErr, yErr, zErr ]
 *         errp = [ xErr, yErr, zErr ]
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xVal);
  __Pyx_GIVEREF(__pyx_v_xVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xVal)) __PYX_ERR(29, 48, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yVal);
  __Pyx_GIVEREF(__pyx_v_yVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yVal)) __PYX_ERR(29, 48, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zVal);
  __Pyx_GIVEREF(__pyx_v_zVal);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zVal)) __PYX_ERR(29, 48, __pyx_L1_error);
  __pyx_v_vals = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":49
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]             # <<<<<<<<<<<<<<
 *         errp = [ xErr, yErr, zErr ]
 *         self.__init2(vals, errm, errp)
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(29, 49, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErr);
  __Pyx_GIVEREF(__pyx_v_yErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErr)) __PYX_ERR(29, 49, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zErr);
  __Pyx_GIVEREF(__pyx_v_zErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zErr)) __PYX_ERR(29, 49, __pyx_L1_error);
  __pyx_v_errm = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":50
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]
 *         errp = [ xErr, yErr, zErr ]             # <<<<<<<<<<<<<<
 *         self.__init2(vals, errm, errp)
 * 
 */
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xErr);
  __Pyx_GIVEREF(__pyx_v_xErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_xErr)) __PYX_ERR(29, 50, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_yErr);
  __Pyx_GIVEREF(__pyx_v_yErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_yErr)) __PYX_ERR(29, 50, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_zErr);
  __Pyx_GIVEREF(__pyx_v_zErr);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_zErr)) __PYX_ERR(29, 50, __pyx_L1_error);
  __pyx_v_errp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":51
 *         errm = [ xErr, yErr, zErr ]
 *         errp = [ xErr, yErr, zErr ]
 *         self.__init2(vals, errm, errp)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point3D__init2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_vals, __pyx_v_errm, __pyx_v_errp};
    __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(29, 51, __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/generated/Point3D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]
 */

  /* 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._Point3D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_errm);
  __Pyx_XDECREF(__pyx_v_errp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_10copy, "Point3D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_11copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_10copy};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_11copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_10copy(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_10copy(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", 1);

  /* "include/generated/Point3D.pyx":54
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(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(29, 54, __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(29, 54, __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(29, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     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/generated/Point3D.pyx":56
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point3D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_12__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_12__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;
  unsigned 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__", 1);

  /* "include/generated/Point3D.pyx":57
 * 
 *     def __repr__(self):
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))             # <<<<<<<<<<<<<<
 * 
 *     def val(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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, 57, __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_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_1};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 57, __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_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_int_2};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 57, __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(29, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(29, 57, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(29, 57, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3)) __PYX_ERR(29, 57, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Point3D_v1_g_v2_g_v3_g, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 57, __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/generated/Point3D.pyx":56
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 */

  /* 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/generated/Point3D.pyx":59
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14val, "Point3D.val(self, i)\n(int) -> double\n        Returns value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_15val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_14val};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_15val(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 59, __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(29, 59, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 59, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_14val(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_14val(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__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", 1);

  /* "include/generated/Point3D.pyx":62
 *         """(int) -> double
 *         Returns value along axis i"""
 *         return self.p3ptr().val(i)             # <<<<<<<<<<<<<<
 * 
 *     def max(self, i):
 */
  __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(29, 62, __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, 62, __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(29, 62, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":59
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":64
 *         return self.p3ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_16max, "Point3D.max(self, i)\n(int) -> double\n        Returns maximal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_17max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_16max};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_17max(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 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, "max") < 0)) __PYX_ERR(29, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_16max(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_16max(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__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("max", 1);

  /* "include/generated/Point3D.pyx":67
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 *         return self.p3ptr().max(i)             # <<<<<<<<<<<<<<
 * 
 *     def min(self, i):
 */
  __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(29, 67, __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, 67, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->max(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 67, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":64
 *         return self.p3ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":69
 *         return self.p3ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18min, "Point3D.min(self, i)\n(int) -> double\n        Returns minimal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_19min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_18min};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_19min(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 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, "min") < 0)) __PYX_ERR(29, 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_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_18min(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_18min(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__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("min", 1);

  /* "include/generated/Point3D.pyx":72
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 *         return self.p3ptr().min(i)             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(29, 72, __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, 72, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->min(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 72, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":69
 *         return self.p3ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":74
 *         return self.p3ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20errs, "Point3D.errs(self, i)\n(int) -> list[double]\n        Returns error pair along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_21errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_20errs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_21errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 74, __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, "errs") < 0)) __PYX_ERR(29, 74, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point3D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_20errs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_20errs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  size_t __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Point3D.pyx":77
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 *         return self.p3ptr().errs(i)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):
 */
  __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(29, 77, __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, 77, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errs(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 77, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":74
 *         return self.p3ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":79
 *         return self.p3ptr().errs(i)
 * 
 *     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_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point3D_23__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point3D, 1, "other", 0))) __PYX_ERR(29, 79, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_22__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_22__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__", 1);

  /* "include/generated/Point3D.pyx":80
 * 
 *     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/generated/Point3D.pyx":81
 *     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(29, 81, __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(29, 81, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) < (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":80
 * 
 *     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/generated/Point3D.pyx":83
 *             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(29, 83, __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(29, 83, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) <= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":82
 *         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/generated/Point3D.pyx":85
 *             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(29, 85, __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(29, 85, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) == (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":84
 *         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/generated/Point3D.pyx":87
 *             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(29, 87, __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(29, 87, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) != (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":86
 *         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/generated/Point3D.pyx":89
 *             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(29, 89, __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(29, 89, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) > (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":88
 *         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/generated/Point3D.pyx":91
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 *         elif op == 5:
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, *es):
 */
    __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(29, 91, __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(29, 91, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) >= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point3D.pyx":90
 *         elif op == 4:
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 * 
 */
    break;
    default: break;
  }

  /* "include/generated/Point3D.pyx":79
 *         return self.p3ptr().errs(i)
 * 
 *     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;
}

/* "include/generated/Point3D.pyx":93
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_24setXErrs, "Point3D.setXErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on x-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_25setXErrs = {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_24setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_25setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point3D_24setXErrs(((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_24setXErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 1);

  /* "include/generated/Point3D.pyx":101
 *         Set asymmetric errors on x-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 102, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point3D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< 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(29, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(29, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point3D.pyx":104
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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(29, 104, __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(29, 104, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 104, __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/generated/Point3D.pyx":105
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< 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/generated/Point3D.pyx":103
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point3D.pyx":106
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))
 */
    __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(29, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point3D.pyx":102
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(0, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point3D.pyx":108
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(0, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def x(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_0, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 108, __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/generated/Point3D.pyx":93
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 * 
 *     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.Point3D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_26x, "Point3D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_27x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_26x};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_27x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_26x(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_26x(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", 1);

  /* "include/generated/Point3D.pyx":112
 *     def x(self):
 *         """The x value"""
 *         return self.p3ptr().x()             # <<<<<<<<<<<<<<
 * 
 *     def setX(self, x):
 */
  __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(29, 112, __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(29, 112, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     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/generated/Point3D.pyx":114
 *         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_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_28setX, "Point3D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_29setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_28setX};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_29setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 114, __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(29, 114, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_28setX(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_28setX(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", 1);

  /* "include/generated/Point3D.pyx":116
 *     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(29, 116, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 116, __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(29, 116, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":114
 *         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/generated/Point3D.pyx":118
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p3ptr().xErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30xErrs, "Point3D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_31xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_30xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_31xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_30xErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_30xErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Point3D.pyx":120
 *     def xErrs(self):
 *         """The x errors"""
 *         return self.p3ptr().xErrs()             # <<<<<<<<<<<<<<
 * 
 *     def xMin(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(29, 120, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 120, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":118
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p3ptr().xErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point3D.pyx":122
 *         return self.p3ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32xMin, "Point3D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_33xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_32xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_33xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_32xMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_32xMin(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", 1);

  /* "include/generated/Point3D.pyx":124
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(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(29, 124, __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(29, 124, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":122
 *         return self.p3ptr().xErrs()
 * 
 *     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/generated/Point3D.pyx":126
 *         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_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34xMax, "Point3D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_35xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_34xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_35xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_34xMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_34xMax(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", 1);

  /* "include/generated/Point3D.pyx":128
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrMinus(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(29, 128, __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(29, 128, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":126
 *         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/generated/Point3D.pyx":130
 *         return self.p3ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36xErrMinus, "Point3D.xErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_37xErrMinus = {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_36xErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_37xErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_36xErrMinus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_36xErrMinus(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("xErrMinus", 1);

  /* "include/generated/Point3D.pyx":131
 * 
 *     def xErrMinus(self):
 *         return self.p3ptr().xErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def xErrPlus(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(29, 131, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 131, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":130
 *         return self.p3ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.xErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":133
 *         return self.p3ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_38xErrPlus, "Point3D.xErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_39xErrPlus = {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_38xErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_39xErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_38xErrPlus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_38xErrPlus(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("xErrPlus", 1);

  /* "include/generated/Point3D.pyx":134
 * 
 *     def xErrPlus(self):
 *         return self.p3ptr().xErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(29, 134, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 134, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":133
 *         return self.p3ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.xErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":136
 *         return self.p3ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40xErrAvg, "Point3D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_41xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_40xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_41xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_40xErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_40xErrAvg(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", 1);

  /* "include/generated/Point3D.pyx":137
 * 
 *     def xErrAvg(self):
 *         return self.p3ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __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(29, 137, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":136
 *         return self.p3ptr().xErrPlus()
 * 
 *     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/generated/Point3D.pyx":139
 *         return self.p3ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scaleX, "Point3D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_43scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_42scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_43scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 139, __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, 139, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scaleX(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_42scaleX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a) {
  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", 1);

  /* "include/generated/Point3D.pyx":142
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 *         self.p3ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(29, 142, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 142, __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, 142, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":139
 *         return self.p3ptr().xErrAvg()
 * 
 *     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.Point3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_45setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_44setYErrs, "Point3D.setYErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on y-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_45setYErrs = {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_45setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_44setYErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_45setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setYErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point3D_44setYErrs(((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_44setYErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setYErrs", 1);

  /* "include/generated/Point3D.pyx":153
 *         Set asymmetric errors on y-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":154
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 154, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point3D.pyx":155
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0]) #< 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(29, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(29, 155, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point3D.pyx":156
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< 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(29, 156, __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(29, 156, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_1, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 156, __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/generated/Point3D.pyx":157
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< 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/generated/Point3D.pyx":155
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point3D.pyx":158
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(1, tuple(errs))
 */
    __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(29, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point3D.pyx":154
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point3D.pyx":160
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(1, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def y(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_1, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 160, __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/generated/Point3D.pyx":145
 * 
 * 
 *     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.Point3D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_47y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46y, "Point3D.y(self)\nThe y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_47y = {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_47y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_46y};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_47y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("y (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_46y(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_46y(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", 1);

  /* "include/generated/Point3D.pyx":164
 *     def y(self):
 *         """The y value"""
 *         return self.p3ptr().y()             # <<<<<<<<<<<<<<
 * 
 *     def setY(self, y):
 */
  __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(29, 164, __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(29, 164, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     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/generated/Point3D.pyx":166
 *         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_49setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48setY, "Point3D.setY(self, y)\nSet the y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_49setY = {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_49setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_48setY};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_49setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 166, __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(29, 166, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setY", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 166, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_48setY(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_48setY(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", 1);

  /* "include/generated/Point3D.pyx":168
 *     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(29, 168, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 168, __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(29, 168, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":166
 *         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/generated/Point3D.pyx":170
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p3ptr().yErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_51yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50yErrs, "Point3D.yErrs(self)\nThe y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_51yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_51yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_50yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_51yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_50yErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_50yErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 1);

  /* "include/generated/Point3D.pyx":172
 *     def yErrs(self):
 *         """The y errors"""
 *         return self.p3ptr().yErrs()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(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(29, 172, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 172, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":170
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p3ptr().yErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point3D.pyx":174
 *         return self.p3ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_53yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52yMin, "Point3D.yMin(self)\nThe minimum y position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_53yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_53yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_52yMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_53yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_52yMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_52yMin(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", 1);

  /* "include/generated/Point3D.pyx":176
 *     def yMin(self):
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(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(29, 176, __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(29, 176, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":174
 *         return self.p3ptr().yErrs()
 * 
 *     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/generated/Point3D.pyx":178
 *         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_55yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54yMax, "Point3D.yMax(self)\nThe maximum y position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_55yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_55yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_54yMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_55yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_54yMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_54yMax(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", 1);

  /* "include/generated/Point3D.pyx":180
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def yErrMinus(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(29, 180, __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(29, 180, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":178
 *         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/generated/Point3D.pyx":182
 *         return self.p3ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_57yErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56yErrMinus, "Point3D.yErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_57yErrMinus = {"yErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_57yErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_56yErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_57yErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_56yErrMinus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_56yErrMinus(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("yErrMinus", 1);

  /* "include/generated/Point3D.pyx":183
 * 
 *     def yErrMinus(self):
 *         return self.p3ptr().yErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def yErrPlus(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(29, 183, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 183, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":182
 *         return self.p3ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.yErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":185
 *         return self.p3ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_59yErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58yErrPlus, "Point3D.yErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_59yErrPlus = {"yErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_59yErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_58yErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_59yErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_58yErrPlus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_58yErrPlus(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("yErrPlus", 1);

  /* "include/generated/Point3D.pyx":186
 * 
 *     def yErrPlus(self):
 *         return self.p3ptr().yErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(29, 186, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 186, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":185
 *         return self.p3ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.yErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":188
 *         return self.p3ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_61yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60yErrAvg, "Point3D.yErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_61yErrAvg = {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_61yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_60yErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_61yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_60yErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_60yErrAvg(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", 1);

  /* "include/generated/Point3D.pyx":189
 * 
 *     def yErrAvg(self):
 *         return self.p3ptr().yErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __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(29, 189, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":188
 *         return self.p3ptr().yErrPlus()
 * 
 *     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/generated/Point3D.pyx":191
 *         return self.p3ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_63scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62scaleY, "Point3D.scaleY(self, a)\n(float) -> None\n        Scale the y values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_63scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_63scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_62scaleY};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_63scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 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, "scaleY") < 0)) __PYX_ERR(29, 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_a = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_62scaleY(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_62scaleY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a) {
  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", 1);

  /* "include/generated/Point3D.pyx":194
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 *         self.p3ptr().scaleY(a)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(29, 194, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 194, __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, 194, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":191
 *         return self.p3ptr().yErrAvg()
 * 
 *     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.Point3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":197
 * 
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_65setZErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_64setZErrs, "Point3D.setZErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n\n        Set asymmetric errors on z-axis.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_65setZErrs = {"setZErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_65setZErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_64setZErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_65setZErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setZErrs (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_64setZErrs(((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_64setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setZErrs", 1);

  /* "include/generated/Point3D.pyx":205
 *         Set asymmetric errors on z-axis.
 *         """
 *         errs = list(es)             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/generated/Point3D.pyx":206
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2, errs[0]) #< duplicate of last line?
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(29, 206, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 == 1);
  if (__pyx_t_3) {

    /* "include/generated/Point3D.pyx":207
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(2, errs[0]) #< 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(29, 207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(29, 207, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_3);
    if (__pyx_t_4) {

      /* "include/generated/Point3D.pyx":208
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2, errs[0]) #< 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(29, 208, __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(29, 208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_2, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 208, __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/generated/Point3D.pyx":209
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2, errs[0]) #< 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/generated/Point3D.pyx":207
 *         errs = list(es)
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(2, errs[0]) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/generated/Point3D.pyx":210
 *                 self.setErr(2, errs[0]) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.setErrs(2, tuple(errs))
 */
    __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(29, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/generated/Point3D.pyx":206
 *         """
 *         errs = list(es)
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2, errs[0]) #< duplicate of last line?
 */
  }

  /* "include/generated/Point3D.pyx":212
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.setErrs(2, tuple(errs))             # <<<<<<<<<<<<<<
 * 
 *     def z(self):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_int_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__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, 212, __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/generated/Point3D.pyx":197
 * 
 * 
 *     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_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":214
 *         self.setErrs(2, tuple(errs))
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_67z(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66z, "Point3D.z(self)\nThe z value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_67z = {"z", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_67z, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_66z};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_67z(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("z (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_66z(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_66z(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", 1);

  /* "include/generated/Point3D.pyx":216
 *     def z(self):
 *         """The z value"""
 *         return self.p3ptr().z()             # <<<<<<<<<<<<<<
 * 
 *     def setZ(self, z):
 */
  __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(29, 216, __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(29, 216, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":214
 *         self.setErrs(2, tuple(errs))
 * 
 *     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/generated/Point3D.pyx":218
 *         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_69setZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_68setZ, "Point3D.setZ(self, z)\nSet the z value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_69setZ = {"setZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_69setZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_68setZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_69setZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_z,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 218, __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(29, 218, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 218, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_68setZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_z);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_68setZ(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", 1);

  /* "include/generated/Point3D.pyx":220
 *     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(29, 220, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 220, __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(29, 220, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":218
 *         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/generated/Point3D.pyx":222
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return self.p3ptr().zErrs()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_71zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70zErrs, "Point3D.zErrs(self)\nThe z errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_71zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_71zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_70zErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_71zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_70zErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_70zErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 1);

  /* "include/generated/Point3D.pyx":224
 *     def zErrs(self):
 *         """The z errors"""
 *         return self.p3ptr().zErrs()             # <<<<<<<<<<<<<<
 * 
 *     def zMin(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(29, 224, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->zErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 224, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":222
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return self.p3ptr().zErrs()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __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/generated/Point3D.pyx":226
 *         return self.p3ptr().zErrs()
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_73zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72zMin, "Point3D.zMin(self)\nThe minimum z position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_73zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_73zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_72zMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_73zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_72zMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_72zMin(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", 1);

  /* "include/generated/Point3D.pyx":228
 *     def zMin(self):
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()             # <<<<<<<<<<<<<<
 * 
 *     def zMax(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(29, 228, __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(29, 228, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":226
 *         return self.p3ptr().zErrs()
 * 
 *     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/generated/Point3D.pyx":230
 *         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_75zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74zMax, "Point3D.zMax(self)\nThe maximum z position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_75zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_75zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_74zMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_75zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_74zMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_74zMax(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", 1);

  /* "include/generated/Point3D.pyx":232
 *     def zMax(self):
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()             # <<<<<<<<<<<<<<
 * 
 *     def zErrMinus(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(29, 232, __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(29, 232, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":230
 *         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/generated/Point3D.pyx":234
 *         return self.p3ptr().zMax()
 * 
 *     def zErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrMinus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_77zErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_76zErrMinus, "Point3D.zErrMinus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_77zErrMinus = {"zErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_77zErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_76zErrMinus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_77zErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrMinus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrMinus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrMinus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_76zErrMinus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_76zErrMinus(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("zErrMinus", 1);

  /* "include/generated/Point3D.pyx":235
 * 
 *     def zErrMinus(self):
 *         return self.p3ptr().zErrMinus()             # <<<<<<<<<<<<<<
 * 
 *     def zErrPlus(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(29, 235, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->zErrMinus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 235, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":234
 *         return self.p3ptr().zMax()
 * 
 *     def zErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrMinus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.zErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":237
 *         return self.p3ptr().zErrMinus()
 * 
 *     def zErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrPlus()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_79zErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_78zErrPlus, "Point3D.zErrPlus(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_79zErrPlus = {"zErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_79zErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_78zErrPlus};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_79zErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrPlus (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrPlus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrPlus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_78zErrPlus(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_78zErrPlus(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("zErrPlus", 1);

  /* "include/generated/Point3D.pyx":238
 * 
 *     def zErrPlus(self):
 *         return self.p3ptr().zErrPlus()             # <<<<<<<<<<<<<<
 * 
 *     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(29, 238, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->zErrPlus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 238, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":237
 *         return self.p3ptr().zErrMinus()
 * 
 *     def zErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrPlus()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.zErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point3D.pyx":240
 *         return self.p3ptr().zErrPlus()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_81zErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_80zErrAvg, "Point3D.zErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_81zErrAvg = {"zErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_81zErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_80zErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_81zErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrAvg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_80zErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_80zErrAvg(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", 1);

  /* "include/generated/Point3D.pyx":241
 * 
 *     def zErrAvg(self):
 *         return self.p3ptr().zErrAvg()             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, a):
 */
  __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(29, 241, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Point3D.pyx":240
 *         return self.p3ptr().zErrPlus()
 * 
 *     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/generated/Point3D.pyx":243
 *         return self.p3ptr().zErrAvg()
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_83scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_82scaleZ, "Point3D.scaleZ(self, a)\n(float) -> None\n        Scale the z values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_83scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_83scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_82scaleZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_83scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 243, __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(29, 243, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 243, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_82scaleZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_82scaleZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_a) {
  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", 1);

  /* "include/generated/Point3D.pyx":246
 *         """(float) -> None
 *         Scale the z values and errors by factor a."""
 *         self.p3ptr().scaleZ(a)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(29, 246, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 246, __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(29, 246, __pyx_L1_error)
  }

  /* "include/generated/Point3D.pyx":243
 *         return self.p3ptr().zErrAvg()
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z 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.Point3D.scaleZ", __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_85__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_84__reduce_cython__, "Point3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_85__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_85__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_84__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_85__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_84__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_84__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__", 1);

  /* "(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(1, 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_87__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_86__setstate_cython__, "Point3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_87__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_87__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_86__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_87__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_86__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_86__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__", 1);

  /* "(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(1, 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/generated/Point4D.pyx":14
 *     """
 * 
 *     cdef c.Point4D* p4ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point4D*> self.ptr()
 * 
 */

static YODA::Point4D *__pyx_f_4yoda_4core_7Point4D_p4ptr(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self) {
  YODA::Point4D *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Point4D.pyx":15
 * 
 *     cdef c.Point4D* p4ptr(self) except NULL:
 *         return <c.Point4D*> 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(30, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Point4D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":14
 *     """
 * 
 *     cdef c.Point4D* p4ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point4D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point4D.p4ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Point4D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Point4D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_7Point4D___init__(((struct __pyx_obj_4yoda_4core_Point4D *)__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_7Point4D___init__(struct __pyx_obj_4yoda_4core_Point4D *__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__", 1);

  /* "include/generated/Point4D.pyx":19
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init1(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 19, __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, 19, __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_Point4D__init1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Point4D__init2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(30, 19, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(30, 19, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(30, 19, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 19, __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, 19, __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, 19, __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/generated/Point4D.pyx":18
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init1, self.__init2], *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.Point4D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":21
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_3_Point4D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point4D_2__init1, "Point4D.__init1(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_3_Point4D__init1 = {"_Point4D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_3_Point4D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_2__init1};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_3_Point4D__init1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point4D__init1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_Point4D__init1", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Point4D__init1", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_2__init1(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_2__init1(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point4D__init1", 1);

  /* "include/generated/Point4D.pyx":22
 * 
 *     def __init1(self):
 *         cutil.set_owned_ptr(self, new c.Point4D())             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, vals, errsdn, errsup):
 */
  try {
    __pyx_t_1 = new YODA::Point4D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 22, __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(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point4D.pyx":21
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_5_Point4D__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_7Point4D_4__init2, "Point4D.__init2(self, vals, errsdn, errsup)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_5_Point4D__init2 = {"_Point4D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_5_Point4D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_4__init2};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_5_Point4D__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_vals = 0;
  PyObject *__pyx_v_errsdn = 0;
  PyObject *__pyx_v_errsup = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Point4D__init2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vals,&__pyx_n_s_errsdn,&__pyx_n_s_errsup,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_vals)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 24, __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_errsdn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point4D__init2", 1, 3, 3, 1); __PYX_ERR(30, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errsup)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 24, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Point4D__init2", 1, 3, 3, 2); __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, "_Point4D__init2") < 0)) __PYX_ERR(30, 24, __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_vals = values[0];
    __pyx_v_errsdn = values[1];
    __pyx_v_errsup = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Point4D__init2", 1, 3, 3, __pyx_nargs); __PYX_ERR(30, 24, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_4__init2(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v_vals, __pyx_v_errsdn, __pyx_v_errsup);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_2generator161(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point4D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */

static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_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_162_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_162_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(30, 36, __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_7Point4D_15_Point4D__init2_2generator161, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point4D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(30, 36, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init2.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_7Point4D_15_Point4D__init2_2generator161(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_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(30, 36, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(30, 36, __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(30, 36, __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, 36, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 36, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 36, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 36, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 36, __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, 36, __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(30, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 36, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_5generator162(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point4D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 */

static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_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_163_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_163_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(30, 37, __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_7Point4D_15_Point4D__init2_5generator162, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point4D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(30, 37, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init2.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_7Point4D_15_Point4D__init2_5generator162(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_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(30, 37, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(30, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(30, 37, __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(30, 37, __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, 37, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 37, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 37, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 37, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 37, __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, 37, __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(30, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 37, __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;
}
static PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_8generator163(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/generated/Point4D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_6genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_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_164_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_164_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(30, 38, __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_7Point4D_15_Point4D__init2_8generator163, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Point4D__init2_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(30, 38, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init2.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_7Point4D_15_Point4D__init2_8generator163(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_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(30, 38, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(30, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(30, 38, __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(30, 38, __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, 38, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 38, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(30, 38, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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, 38, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 38, __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, 38, __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(30, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 38, __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/generated/Point4D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

static PyObject *__pyx_pf_4yoda_4core_7Point4D_4__init2(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_vals, PyObject *__pyx_v_errsdn, PyObject *__pyx_v_errsup) {
  std::vector<std::vector<double> >  __pyx_v_args;
  PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_2generator161 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_5generator162 = 0;
  PyObject *__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_8generator163 = 0;
  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;
  PyObject *__pyx_t_6 = NULL;
  std::vector<std::vector<double> >  __pyx_t_7;
  YODA::Point4D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Point4D__init2", 1);

  /* "include/generated/Point4D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 4)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_vals, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 26, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point4D.pyx":27
 * 
 *         if hasattr(vals, "__iter__"):
 *           assert(len(vals) == 4)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsdn, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_vals); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(30, 27, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 4);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(30, 27, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(30, 27, __pyx_L1_error)
    #endif

    /* "include/generated/Point4D.pyx":26
 *     def __init2(self, vals, errsdn, errsup):
 * 
 *         if hasattr(vals, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(vals) == 4)
 * 
 */
  }

  /* "include/generated/Point4D.pyx":29
 *           assert(len(vals) == 4)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 4)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsdn, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 29, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point4D.pyx":30
 * 
 *         if hasattr(errsdn, "__iter__"):
 *           assert(len(errsdn) == 4)             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(errsup, "__iter__"):
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsdn); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(30, 30, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 4);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(30, 30, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(30, 30, __pyx_L1_error)
    #endif

    /* "include/generated/Point4D.pyx":29
 *           assert(len(vals) == 4)
 * 
 *         if hasattr(errsdn, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsdn) == 4)
 * 
 */
  }

  /* "include/generated/Point4D.pyx":32
 *           assert(len(errsdn) == 4)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 4)
 * 
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_errsup, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 32, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/generated/Point4D.pyx":33
 * 
 *         if hasattr(errsup, "__iter__"):
 *           assert(len(errsup) == 4)             # <<<<<<<<<<<<<<
 * 
 *         cdef vector[vector[double]] args
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(__pyx_assertions_enabled())) {
      __pyx_t_2 = PyObject_Length(__pyx_v_errsup); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(30, 33, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_2 == 4);
      if (unlikely(!__pyx_t_1)) {
        __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
        __PYX_ERR(30, 33, __pyx_L1_error)
      }
    }
    #else
    if ((1)); else __PYX_ERR(30, 33, __pyx_L1_error)
    #endif

    /* "include/generated/Point4D.pyx":32
 *           assert(len(errsdn) == 4)
 * 
 *         if hasattr(errsup, "__iter__"):             # <<<<<<<<<<<<<<
 *           assert(len(errsup) == 4)
 * 
 */
  }

  /* "include/generated/Point4D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_genexpr(NULL, __pyx_v_vals); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point4D.pyx":37
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_3genexpr(NULL, __pyx_v_errsdn); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point4D.pyx":38
 *         args = [ list(float(x) for x in   vals),
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )
 * 
 */
  __pyx_t_3 = __pyx_pf_4yoda_4core_7Point4D_15_Point4D__init2_6genexpr(NULL, __pyx_v_errsup); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point4D.pyx":36
 * 
 *         cdef vector[vector[double]] args
 *         args = [ list(float(x) for x in   vals),             # <<<<<<<<<<<<<<
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 */
  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(30, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_5)) __PYX_ERR(30, 36, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_t_6)) __PYX_ERR(30, 36, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_args = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7);

  /* "include/generated/Point4D.pyx":39
 *                  list(float(x) for x in errsdn),
 *                  list(float(x) for x in errsup) ]
 *         cutil.set_owned_ptr(self, new c.Point4D(args[0], args[1], args[2]) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  try {
    __pyx_t_8 = new YODA::Point4D((__pyx_v_args[0]), (__pyx_v_args[1]), (__pyx_v_args[2]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 39, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/generated/Point4D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point4D._Point4D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_2generator161);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_5generator162);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Point4D_15_Point4D__init2_8generator163);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":43
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_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_7Point4D_6copy, "Point4D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_6copy};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_7Point4D_6copy(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_6copy(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__pyx_t_1;
  YODA::Point4D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 1);

  /* "include/generated/Point4D.pyx":44
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 44, __pyx_L1_error)
  try {
    __pyx_t_2 = new YODA::Point4D((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 44, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point4D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":43
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point4D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":46
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_9__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point4D_9__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_8__repr__(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_8__repr__(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  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__", 1);

  /* "include/generated/Point4D.pyx":47
 * 
 *     def __repr__(self):
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))             # <<<<<<<<<<<<<<
 * 
 *     def val(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_0};
    __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(30, 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_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_1};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 47, __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_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_int_2};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 47, __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_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_int_3};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(30, 47, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2)) __PYX_ERR(30, 47, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3)) __PYX_ERR(30, 47, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(30, 47, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":46
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 */

  /* 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.Point4D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":49
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_11val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point4D_10val, "Point4D.val(self, i)\n(int) -> double\n        Returns value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_11val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_11val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_10val};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_11val(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 49, __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(30, 49, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 49, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_10val(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_10val(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__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", 1);

  /* "include/generated/Point4D.pyx":52
 *         """(int) -> double
 *         Returns value along axis i"""
 *         return self.p4ptr().val(i)             # <<<<<<<<<<<<<<
 * 
 *     def max(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 52, __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, 52, __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(30, 52, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":49
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point4D.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":54
 *         return self.p4ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_13max(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point4D_12max, "Point4D.max(self, i)\n(int) -> double\n        Returns maximal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_13max = {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_13max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_12max};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_13max(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("max (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 54, __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, "max") < 0)) __PYX_ERR(30, 54, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("max", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 54, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_12max(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_12max(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__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("max", 1);

  /* "include/generated/Point4D.pyx":57
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 *         return self.p4ptr().max(i)             # <<<<<<<<<<<<<<
 * 
 *     def min(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 57, __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, 57, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->max(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 57, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":54
 *         return self.p4ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point4D.max", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":59
 *         return self.p4ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_15min(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point4D_14min, "Point4D.min(self, i)\n(int) -> double\n        Returns minimal value along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_15min = {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_15min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_14min};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_15min(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("min (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 59, __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, "min") < 0)) __PYX_ERR(30, 59, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("min", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 59, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_14min(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_14min(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__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("min", 1);

  /* "include/generated/Point4D.pyx":62
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 *         return self.p4ptr().min(i)             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 62, __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, 62, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->min(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 62, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":59
 *         return self.p4ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point4D.min", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":64
 *         return self.p4ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_17errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point4D_16errs, "Point4D.errs(self, i)\n(int) -> list[double]\n        Returns error pair along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_17errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_17errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_16errs};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_17errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 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, "errs") < 0)) __PYX_ERR(30, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_16errs(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_16errs(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__pyx_t_1;
  size_t __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Point4D.pyx":67
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 *         return self.p4ptr().errs(i)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point4D self, Point4D other, int op):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 67, __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, 67, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->errs(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 67, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_pair_to_py_double____double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Point4D.pyx":64
 *         return self.p4ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point4D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Point4D.pyx":69
 *         return self.p4ptr().errs(i)
 * 
 *     def __richcmp__(Point4D self, Point4D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point4D_19__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point4D_19__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point4D, 1, "other", 0))) __PYX_ERR(30, 69, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_18__richcmp__(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Point4D *)__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_7Point4D_18__richcmp__(struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point4D *__pyx_t_1;
  YODA::Point4D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "include/generated/Point4D.pyx":70
 * 
 *     def __richcmp__(Point4D self, Point4D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 *         elif op == 1:
 */
  switch (__pyx_v_op) {
    case 0:

    /* "include/generated/Point4D.pyx":71
 *     def __richcmp__(Point4D self, Point4D other, int op):
 *         if op == 0:
 *             return deref(self.p4ptr()) < deref(other.p4ptr())             # <<<<<<<<<<<<<<
 *         elif op == 1:
 *             return deref(self.p4ptr()) <= deref(other.p4ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 71, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 71, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) < (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":70
 * 
 *     def __richcmp__(Point4D self, Point4D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 *         elif op == 1:
 */
    break;
    case 1:

    /* "include/generated/Point4D.pyx":73
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 *         elif op == 1:
 *             return deref(self.p4ptr()) <= deref(other.p4ptr())             # <<<<<<<<<<<<<<
 *         elif op == 2:
 *             return deref(self.p4ptr()) == deref(other.p4ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 73, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 73, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) <= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":72
 *         if op == 0:
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 *         elif op == 1:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) <= deref(other.p4ptr())
 *         elif op == 2:
 */
    break;
    case 2:

    /* "include/generated/Point4D.pyx":75
 *             return deref(self.p4ptr()) <= deref(other.p4ptr())
 *         elif op == 2:
 *             return deref(self.p4ptr()) == deref(other.p4ptr())             # <<<<<<<<<<<<<<
 *         elif op == 3:
 *             return deref(self.p4ptr()) != deref(other.p4ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 75, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 75, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) == (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":74
 *         elif op == 1:
 *             return deref(self.p4ptr()) <= deref(other.p4ptr())
 *         elif op == 2:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) == deref(other.p4ptr())
 *         elif op == 3:
 */
    break;
    case 3:

    /* "include/generated/Point4D.pyx":77
 *             return deref(self.p4ptr()) == deref(other.p4ptr())
 *         elif op == 3:
 *             return deref(self.p4ptr()) != deref(other.p4ptr())             # <<<<<<<<<<<<<<
 *         elif op == 4:
 *             return deref(self.p4ptr()) > deref(other.p4ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 77, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 77, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) != (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":76
 *         elif op == 2:
 *             return deref(self.p4ptr()) == deref(other.p4ptr())
 *         elif op == 3:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) != deref(other.p4ptr())
 *         elif op == 4:
 */
    break;
    case 4:

    /* "include/generated/Point4D.pyx":79
 *             return deref(self.p4ptr()) != deref(other.p4ptr())
 *         elif op == 4:
 *             return deref(self.p4ptr()) > deref(other.p4ptr())             # <<<<<<<<<<<<<<
 *         elif op == 5:
 *             return deref(self.p4ptr()) >= deref(other.p4ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 79, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 79, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) > (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":78
 *         elif op == 3:
 *             return deref(self.p4ptr()) != deref(other.p4ptr())
 *         elif op == 4:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) > deref(other.p4ptr())
 *         elif op == 5:
 */
    break;
    case 5:

    /* "include/generated/Point4D.pyx":81
 *             return deref(self.p4ptr()) > deref(other.p4ptr())
 *         elif op == 5:
 *             return deref(self.p4ptr()) >= deref(other.p4ptr())             # <<<<<<<<<<<<<<
 * 
 * ## Convenience alias
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 81, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point4D *)NULL))) __PYX_ERR(30, 81, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) >= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/generated/Point4D.pyx":80
 *         elif op == 4:
 *             return deref(self.p4ptr()) > deref(other.p4ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p4ptr()) >= deref(other.p4ptr())
 * 
 */
    break;
    default: break;
  }

  /* "include/generated/Point4D.pyx":69
 *         return self.p4ptr().errs(i)
 * 
 *     def __richcmp__(Point4D self, Point4D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p4ptr()) < deref(other.p4ptr())
 */

  /* 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.Point4D.__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_7Point4D_21__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_7Point4D_20__reduce_cython__, "Point4D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_21__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_20__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_21__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_7Point4D_20__reduce_cython__(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point4D *__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__", 1);

  /* "(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(1, 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.Point4D.__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_7Point4D_23__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_7Point4D_22__setstate_cython__, "Point4D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point4D_23__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_22__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point4D_23__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Point4D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point4D_22__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point4D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point4D_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point4D *__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__", 1);

  /* "(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(1, 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.Point4D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":25
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Scatter1D.pyx":26
 * 
 *     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(31, 26, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":25
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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 Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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__", 1);

  /* "include/generated/Scatter1D.pyx":30
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_1(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 30, __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(31, 30, __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_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__init_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(31, 30, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(31, 30, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(31, 30, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 30, __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(31, 30, __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(31, 30, __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/generated/Scatter1D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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/generated/Scatter1D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_1, "Scatter1D.__init_1(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_3_Scatter1D__init_1 = {"_Scatter1D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_2__init_1};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__init_1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 32, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 32, __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_1") < 0)) __PYX_ERR(31, 32, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__init_1", 0, 0, 2, __pyx_nargs); __PYX_ERR(31, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__init_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_2__init_1(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_2__init_1(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_1", 1);

  /* "include/generated/Scatter1D.pyx":33
 * 
 *     def __init_1(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 33, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 33, __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(31, 33, __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(31, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Scatter1D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>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_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_5_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_4__init_2, "Scatter1D.__init_2(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_5_Scatter1D__init_2 = {"_Scatter1D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_4__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_5_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_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "_Scatter1D__init_2") < 0)) __PYX_ERR(31, 35, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__init_2", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 35, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_4__init_2(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_4__init_2(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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__init_2", 1);

  /* "include/generated/Scatter1D.pyx":36
 * 
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__init_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 36, __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/generated/Scatter1D.pyx":37
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(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(31, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 37, __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/generated/Scatter1D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(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_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":39
 *         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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/generated/Scatter1D.pyx":42
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(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(31, 42, __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(31, 42, __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(31, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":39
 *         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/generated/Scatter1D.pyx":44
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_9__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_9__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_8__iter__(((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__iter__(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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/Scatter1D.pyx":45
 * 
 *     def __iter__(self):
 *         return iter(self.points())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(31, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 45, __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/generated/Scatter1D.pyx":44
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

  /* 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.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_10__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_10__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter1D.pyx":48
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(31, 48, __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(31, 48, __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(31, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(31, 48, __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_numPoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(31, 48, __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(31, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(31, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(31, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(31, 48, __pyx_L1_error);
  __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(31, 48, __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/Scatter1D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), 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_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/generated/Scatter1D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_12reset, "Scatter1D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_13reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_12reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_12reset(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_12reset(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", 1);

  /* "include/generated/Scatter1D.pyx":53
 *     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(31, 53, __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(31, 53, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":51
 * 
 * 
 *     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/generated/Scatter1D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14numPoints, "Scatter1D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_15numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_14numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_14numPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_14numPoints(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", 1);

  /* "include/generated/Scatter1D.pyx":59
 *         """() -> 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(31, 59, __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(31, 59, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":56
 * 
 * 
 *     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/generated/Scatter1D.pyx":61
 *         return self.s1ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter1D_17__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter1D_17__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_16__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_16__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter1D.pyx":62
 * 
 *     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(31, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(31, 62, __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(31, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":61
 *         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/generated/Scatter1D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18points, "Scatter1D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_19points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_18points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18points(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_18points(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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned 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("points", 1);

  /* "include/generated/Scatter1D.pyx":67
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __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(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(31, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 67, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(31, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(31, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_9(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(31, 67, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_i};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 67, __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/generated/Scatter1D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __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/generated/Scatter1D.pyx":69
 *         return self._mknp([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_21point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20point, "Scatter1D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_21point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_20point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_21point(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "point") < 0)) __PYX_ERR(31, 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_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 69, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_20point(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_20point(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;
  __Pyx_FakeReference<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("point", 1);

  /* "include/generated/Scatter1D.pyx":71
 *     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(31, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 71, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), (&__pyx_t_2), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":69
 *         return self._mknp([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_3);
  __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/generated/Scatter1D.pyx":73
 *         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_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_22__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_22__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter1D *__pyx_t_8;
  __Pyx_FakeReference<YODA::Point1D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/Scatter1D.pyx":74
 * 
 *     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(31, 74, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(31, 74, __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(31, 74, __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(31, 74, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/Scatter1D.pyx":75
 *     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(31, 75, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 75, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":73
 *         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/generated/Scatter1D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_24addPoint, "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_25addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_24addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_24addPoint(((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_24addPoint(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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 1);

  /* "include/generated/Scatter1D.pyx":84
 *         two args: x, xerrs=0.
 *         """
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, *args):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 84, __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(31, 84, __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__addPoint_point); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__addPoint_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(31, 84, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(31, 84, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(31, 84, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 84, __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(31, 84, __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(31, 84, __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/generated/Scatter1D.pyx":78
 * 
 * 
 *     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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Scatter1D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(*args))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_explicit, "Scatter1D.__addPoint_explicit(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit = {"_Scatter1D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_explicit (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Scatter1D__addPoint_explicit", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_26__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_explicit", 1);

  /* "include/generated/Scatter1D.pyx":87
 * 
 *     def __addPoint_explicit(self, *args):
 *         self.__addPoint_point(Point1D(*args))             # <<<<<<<<<<<<<<
 * 
 *     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(31, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(31, 87, __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/generated/Scatter1D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(*args))
 * 
 */

  /* 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/generated/Scatter1D.pyx":89
 *         self.__addPoint_point(Point1D(*args))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_29_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_28__addPoint_point, "Scatter1D.__addPoint_point(self, Point1D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_29_Scatter1D__addPoint_point = {"_Scatter1D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_29_Scatter1D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_28__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_29_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 89, __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(31, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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(31, 89, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_28__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:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_28__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", 1);

  /* "include/generated/Scatter1D.pyx":90
 * 
 *     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(31, 90, __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(31, 90, __pyx_L1_error)
  try {
    __pyx_t_1->addPoint((__pyx_t_2[0]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 90, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":89
 *         self.__addPoint_point(Point1D(*args))
 * 
 *     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/generated/Scatter1D.pyx":92
 *         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_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30addPoints, "Scatter1D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_31addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_30addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 92, __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(31, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_30addPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_30addPoints(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;
  unsigned int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 1);

  /* "include/generated/Scatter1D.pyx":94
 *     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(31, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(31, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(31, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 94, __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(31, 94, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/Scatter1D.pyx":95
 *         """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/generated/Scatter1D.pyx":96
 *         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(31, 96, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 96, __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(31, 96, __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/generated/Scatter1D.pyx":95
 *         """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/generated/Scatter1D.pyx":97
 *           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(31, 97, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/generated/Scatter1D.pyx":98
 *             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(31, 98, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_14 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __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(31, 98, __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/generated/Scatter1D.pyx":95
 *         """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/generated/Scatter1D.pyx":94
 *     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/generated/Scatter1D.pyx":92
 *         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/generated/Scatter1D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32rmPoint, "Scatter1D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_33rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_32rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "rmPoint") < 0)) __PYX_ERR(31, 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_idx = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_32rmPoint(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_32rmPoint(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", 1);

  /* "include/generated/Scatter1D.pyx":101
 * 
 *     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(31, 101, __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(31, 101, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoint(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 101, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":100
 *             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/generated/Scatter1D.pyx":103
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34rmPoints, "Scatter1D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_35rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_34rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 103, __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(31, 103, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_34rmPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_34rmPoints(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", 1);

  /* "include/generated/Scatter1D.pyx":104
 * 
 *     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(31, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 104, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoints(__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(31, 104, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":103
 *         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/generated/Scatter1D.pyx":106
 *         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_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36combineWith, "Scatter1D.combineWith(self, others)\nTry to add points from other Scatter1Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_37combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_36combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "combineWith") < 0)) __PYX_ERR(31, 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_others = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_36combineWith(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_36combineWith(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", 1);

  /* "include/generated/Scatter1D.pyx":109
 *         """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/generated/Scatter1D.pyx":111
 *         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(31, 111, __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/generated/Scatter1D.pyx":109
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter1D?
 *             other = others
 */
    }

    /* "include/generated/Scatter1D.pyx":117
 *                 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(31, 117, __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(31, 117, __pyx_L5_except_error)
      try {
        __pyx_t_5->combineWith((*__pyx_t_6));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(31, 117, __pyx_L5_except_error)
      }
    }
    __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/generated/Scatter1D.pyx":112
 *             # 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(31, 112, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/generated/Scatter1D.pyx":114
 *         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(31, 114, __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(31, 114, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(31, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(31, 114, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(31, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(31, 114, __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(31, 114, __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(31, 114, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/Scatter1D.pyx":115
 *             # 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(31, 115, __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(31, 115, __pyx_L5_except_error)
        try {
          __pyx_t_6->combineWith((*__pyx_t_5));
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(31, 115, __pyx_L5_except_error)
        }

        /* "include/generated/Scatter1D.pyx":114
 *         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/generated/Scatter1D.pyx":109
 *         """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/generated/Scatter1D.pyx":106
 *         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/generated/Scatter1D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_39_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_38_mknp, "Scatter1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_39_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_38_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_39_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 120, __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(31, 120, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_38_mknp(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_38_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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/Scatter1D.pyx":121
 * 
 *     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/generated/Scatter1D.pyx":122
 *     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(31, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/Scatter1D.pyx":123
 *         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(31, 123, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(31, 123, __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/generated/Scatter1D.pyx":121
 * 
 *     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/generated/Scatter1D.pyx":124
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __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(31, 124, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/Scatter1D.pyx":125
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):
 */
      __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/generated/Scatter1D.pyx":121
 * 
 *     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/generated/Scatter1D.pyx":120
 * 
 * 
 *     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/generated/Scatter1D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40mkScatter, "Scatter1D.mkScatter(self, path=None, includeOverflows=None, includeMaskedBins=None)\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_41mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_40mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  CYTHON_UNUSED PyObject *__pyx_v_includeOverflows = 0;
  CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 127, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 127, __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(31, 127, __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_path = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_40mkScatter(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_path, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins) {
  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;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/Scatter1D.pyx":131
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         rtn = self.clone()             # <<<<<<<<<<<<<<
 *         if path is not None:
 *             rtn.setPath(path)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(31, 131, __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/generated/Scatter1D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  __pyx_t_5 = (__pyx_v_path != Py_None);
  if (__pyx_t_5) {

    /* "include/generated/Scatter1D.pyx":133
 *         rtn = self.clone()
 *         if path is not None:
 *             rtn.setPath(path)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setPath); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_path};
      __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(31, 133, __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/generated/Scatter1D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  }

  /* "include/generated/Scatter1D.pyx":134
 *         if path is not None:
 *             rtn.setPath(path)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* 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.mkScatter", __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/generated/Scatter1D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scale, "Scatter1D.scale(self, i, scale)\n(int, float) -> None\n        Scale values and errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_43scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_42scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(31, 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(31, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scale(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_42scale(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", 1);

  /* "include/generated/Scatter1D.pyx":140
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 *         self.s1ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleVal(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 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(31, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(31, 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(31, 140, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors 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/generated/Scatter1D.pyx":142
 *         self.s1ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44scaleVal, "Scatter1D.scaleVal(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_45scaleVal = {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_44scaleVal};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 142, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, 1); __PYX_ERR(31, 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, "scaleVal") < 0)) __PYX_ERR(31, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_44scaleVal(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_44scaleVal(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("scaleVal", 1);

  /* "include/generated/Scatter1D.pyx":145
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s1ptr().scaleVal(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleErr(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 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(31, 145, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(31, 145, __pyx_L1_error)
  try {
    __pyx_t_1->scaleVal(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 145, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":142
 *         self.s1ptr().scale(i, scale)
 * 
 *     def scaleVal(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.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":147
 *         self.s1ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46scaleErr, "Scatter1D.scaleErr(self, i, scale)\n(int, float) -> None\n        Scale errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_47scaleErr = {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_46scaleErr};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 147, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 147, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, 1); __PYX_ERR(31, 147, __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, "scaleErr") < 0)) __PYX_ERR(31, 147, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_46scaleErr(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_46scaleErr(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("scaleErr", 1);

  /* "include/generated/Scatter1D.pyx":150
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 *         self.s1ptr().scaleErr(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def edges(self, i):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 150, __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(31, 150, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(31, 150, __pyx_L1_error)
  try {
    __pyx_t_1->scaleErr(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 150, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":147
 *         self.s1ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors 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.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":152
 *         self.s1ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48edges, "Scatter1D.edges(self, i)\n(int) -> list[list[double,double]]\n        Returns point edges along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_49edges = {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_48edges};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 152, __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, "edges") < 0)) __PYX_ERR(31, 152, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edges", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 152, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_48edges(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_48edges(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  size_t __pyx_t_2;
  std::vector<std::pair<double,double> >  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edges", 1);

  /* "include/generated/Scatter1D.pyx":155
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 *         return self.s1ptr().edges(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(31, 155, __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(31, 155, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->edges(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 155, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":152
 *         self.s1ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50vals, "Scatter1D.vals(self, i)\n(int) -> list[double]\n        Returns list of values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_51vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_50vals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 158, __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, "vals") < 0)) __PYX_ERR(31, 158, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("vals", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_50vals(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_50vals(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter1D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vals", 1);

  /* "include/generated/Scatter1D.pyx":161
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 *         return self._mknp(self.s1ptr().vals(i))             # <<<<<<<<<<<<<<
 * 
 *     def mins(self, i):
 */
  __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(31, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 161, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 161, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->vals(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 161, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 161, __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/generated/Scatter1D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

  /* 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.Scatter1D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":163
 *         return self._mknp(self.s1ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52mins, "Scatter1D.mins(self, i)\n(int) -> list[double]\n        Returns list of lowest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_53mins = {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_52mins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 163, __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, "mins") < 0)) __PYX_ERR(31, 163, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mins", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_52mins(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_52mins(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter1D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mins", 1);

  /* "include/generated/Scatter1D.pyx":166
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 *         return self._mknp(self.s1ptr().mins(i))             # <<<<<<<<<<<<<<
 * 
 *     def maxs(self, i):
 */
  __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(31, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 166, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 166, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->mins(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 166, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 166, __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/generated/Scatter1D.pyx":163
 *         return self._mknp(self.s1ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

  /* 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.Scatter1D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":168
 *         return self._mknp(self.s1ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54maxs, "Scatter1D.maxs(self, i)\n(int) -> list[double]\n        Returns list of largest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_55maxs = {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_54maxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 168, __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, "maxs") < 0)) __PYX_ERR(31, 168, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxs", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_54maxs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_54maxs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter1D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxs", 1);

  /* "include/generated/Scatter1D.pyx":171
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 *         return self._mknp(self.s1ptr().maxs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(31, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 171, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 171, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->maxs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 171, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 171, __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/generated/Scatter1D.pyx":168
 *         return self._mknp(self.s1ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

  /* 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.Scatter1D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":173
 *         return self._mknp(self.s1ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56errs, "Scatter1D.errs(self, i)\n(int) -> list[(double,double)]\n        Returns list of (neg,pos) error pairs along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_57errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_56errs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 173, __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, "errs") < 0)) __PYX_ERR(31, 173, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 173, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_56errs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_56errs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter1D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<std::pair<double,double> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Scatter1D.pyx":176
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 *         return self._mknp(self.s1ptr().errs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errAvgs(self, i):
 */
  __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(31, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 176, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 176, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 176, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 176, __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/generated/Scatter1D.pyx":173
 *         return self._mknp(self.s1ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

  /* 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.Scatter1D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":178
 *         return self._mknp(self.s1ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58errAvgs, "Scatter1D.errAvgs(self, i)\n(int) -> list[double]\n        Returns list of average errors along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_59errAvgs = {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_58errAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 178, __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, "errAvgs") < 0)) __PYX_ERR(31, 178, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvgs", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 178, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_58errAvgs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter1D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errAvgs", 1);

  /* "include/generated/Scatter1D.pyx":181
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 *         return self._mknp(self.s1ptr().errAvgs(i))             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = 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(31, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 181, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(31, 181, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errAvgs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 181, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 181, __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/generated/Scatter1D.pyx":178
 *         return self._mknp(self.s1ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

  /* 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.Scatter1D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":183
 *         return self._mknp(self.s1ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60lengthContent, "Scatter1D.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_61lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_60lengthContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "lengthContent") < 0)) __PYX_ERR(31, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_60lengthContent(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/Scatter1D.pyx":185
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(31, 185, __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_lengthContent); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_fixed_length};
    __pyx_t_1 = __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_1)) __PYX_ERR(31, 185, __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/Scatter1D.pyx":183
 *         return self._mknp(self.s1ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

  /* 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_AddTraceback("yoda.core.Scatter1D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62lengthMeta, "Scatter1D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_63lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_62lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 187, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "lengthMeta") < 0)) __PYX_ERR(31, 187, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(31, 187, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_62lengthMeta(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/Scatter1D.pyx":189
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(31, 189, __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_lengthMeta); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_skipPath, __pyx_v_skipTitle};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 189, __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/Scatter1D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

  /* 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_AddTraceback("yoda.core.Scatter1D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s1ptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64serializeContent, "Scatter1D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_65serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_64serializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 191, __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, "serializeContent") < 0)) __PYX_ERR(31, 191, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_64serializeContent(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  bool __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/Scatter1D.pyx":193
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         return self.s1ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __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(31, 193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(31, 193, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 193, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s1ptr().serializeContent(fixed_length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":195
 *         return self.s1ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66deserializeContent, "Scatter1D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_67deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_66deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 195, __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, "deserializeContent") < 0)) __PYX_ERR(31, 195, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_66deserializeContent(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Scatter1D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/Scatter1D.pyx":198
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s1ptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 198, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(31, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(31, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(31, 198, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter1D.pyx":199
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.s1ptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 199, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 199, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":195
 *         return self.s1ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter1D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":201
 *         self.s1ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_68serializeMeta, "Scatter1D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_69serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_68serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 201, __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, "serializeMeta") < 0)) __PYX_ERR(31, 201, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(31, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_68serializeMeta(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::string>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/Scatter1D.pyx":203
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __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(31, 203, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(31, 203, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(31, 203, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 203, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter1D.pyx":201
 *         self.s1ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Scatter1D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":205
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70deserializeMeta, "Scatter1D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_71deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_70deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 205, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 205, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 205, __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, "deserializeMeta") < 0)) __PYX_ERR(31, 205, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 205, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_70deserializeMeta(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Scatter1D *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/Scatter1D.pyx":208
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 208, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(31, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(31, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(31, 208, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter1D.pyx":209
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 209, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(31, 209, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(31, 209, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 209, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":205
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter1D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":211
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72scaleX, "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_73scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_72scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 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, "scaleX") < 0)) __PYX_ERR(31, 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_a = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_72scaleX(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_72scaleX(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", 1);

  /* "include/generated/Scatter1D.pyx":214
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s1ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformX(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 214, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(31, 214, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 214, __pyx_L1_error)
  }

  /* "include/generated/Scatter1D.pyx":211
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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/generated/Scatter1D.pyx":227
 *     #    c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s1ptr().xVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74xVals, "Scatter1D.xVals(self)\nAll x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_75xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_74xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_74xVals(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_74xVals(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;
  YODA::Scatter1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 1);

  /* "include/generated/Scatter1D.pyx":229
 *     def xVals(self):
 *         """All x values."""
 *         return self._mknp(self.s1ptr().xVals())             # <<<<<<<<<<<<<<
 * 
 *     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(31, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 229, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 229, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 229, __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/generated/Scatter1D.pyx":227
 *     #    c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s1ptr().xVals())
 */

  /* 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.Scatter1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":231
 *         return self._mknp(self.s1ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s1ptr().xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_76xMins, "Scatter1D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_77xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_76xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_76xMins(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_76xMins(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;
  YODA::Scatter1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 1);

  /* "include/generated/Scatter1D.pyx":233
 *     def xMins(self):
 *         """All x low values."""
 *         return self._mknp(self.s1ptr().xMins())             # <<<<<<<<<<<<<<
 * 
 *     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(31, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 233, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 233, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 233, __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/generated/Scatter1D.pyx":231
 *         return self._mknp(self.s1ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s1ptr().xMins())
 */

  /* 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.Scatter1D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":235
 *         return self._mknp(self.s1ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s1ptr().xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_78xMaxs, "Scatter1D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_79xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_78xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_78xMaxs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_78xMaxs(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;
  YODA::Scatter1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 1);

  /* "include/generated/Scatter1D.pyx":237
 *     def xMaxs(self):
 *         """All x high values."""
 *         return self._mknp(self.s1ptr().xMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(31, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 237, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 237, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 237, __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/generated/Scatter1D.pyx":235
 *         return self._mknp(self.s1ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s1ptr().xMaxs())
 */

  /* 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.Scatter1D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":239
 *         return self._mknp(self.s1ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s1ptr().xMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_80xMin, "Scatter1D.xMin(self)\nThe lowest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_81xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_80xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_80xMin(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_80xMin(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;
  YODA::Scatter1D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Scatter1D.pyx":241
 *     def xMin(self):
 *         """The lowest central x values."""
 *         return self._mknp(self.s1ptr().xMin())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(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(31, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 241, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 241, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 241, __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/generated/Scatter1D.pyx":239
 *         return self._mknp(self.s1ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s1ptr().xMin())
 */

  /* 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.Scatter1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":243
 *         return self._mknp(self.s1ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s1ptr().xMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_82xMax, "Scatter1D.xMax(self)\nThe highest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_83xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_82xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_82xMax(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_82xMax(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;
  YODA::Scatter1D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Scatter1D.pyx":245
 *     def xMax(self):
 *         """The highest central x values."""
 *         return self._mknp(self.s1ptr().xMax())             # <<<<<<<<<<<<<<
 * 
 *     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(31, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 245, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 245, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 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/generated/Scatter1D.pyx":243
 *         return self._mknp(self.s1ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s1ptr().xMax())
 */

  /* 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.Scatter1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":247
 *         return self._mknp(self.s1ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_84xErrs, "Scatter1D.xErrs(self)\nThe error pairs along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_85xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_84xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter1D_84xErrs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_84xErrs(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;
  YODA::Scatter1D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Scatter1D.pyx":249
 *     def xErrs(self):
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     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(31, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 249, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 249, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 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/generated/Scatter1D.pyx":247
 *         return self._mknp(self.s1ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrs())
 */

  /* 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.Scatter1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter1D.pyx":251
 *         return self._mknp(self.s1ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_86xErrAvgs, "Scatter1D.xErrAvgs(self)\nThe average error along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_87xErrAvgs = {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_86xErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter1D_86xErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_86xErrAvgs(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;
  YODA::Scatter1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvgs", 1);

  /* "include/generated/Scatter1D.pyx":253
 *     def xErrAvgs(self):
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrAvgs())             # <<<<<<<<<<<<<<
 * 
 * ## Convenience alias
 */
  __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(31, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(31, 253, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(31, 253, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(31, 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/generated/Scatter1D.pyx":251
 *         return self._mknp(self.s1ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrAvgs())
 */

  /* 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.Scatter1D.xErrAvgs", __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_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_9Scatter1D_88__reduce_cython__, "Scatter1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_89__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_88__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_88__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_88__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__", 1);

  /* "(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(1, 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_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_9Scatter1D_90__setstate_cython__, "Scatter1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_91__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_90__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_90__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_90__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__", 1);

  /* "(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(1, 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/generated/Scatter2D.pyx":25
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Scatter2D.pyx":26
 * 
 *     cdef inline c.Scatter2D* s2ptr(self) except NULL:
 *         return <c.Scatter2D*> 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(32, 26, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":25
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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 Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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__", 1);

  /* "include/generated/Scatter2D.pyx":30
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_1(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 30, __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(32, 30, __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_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__init_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(32, 30, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(32, 30, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(32, 30, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 30, __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(32, 30, __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(32, 30, __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/generated/Scatter2D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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/generated/Scatter2D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_1, "Scatter2D.__init_1(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_3_Scatter2D__init_1 = {"_Scatter2D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_2__init_1};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__init_1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 32, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 32, __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_1") < 0)) __PYX_ERR(32, 32, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__init_1", 0, 0, 2, __pyx_nargs); __PYX_ERR(32, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__init_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_2__init_1(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_2__init_1(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_1", 1);

  /* "include/generated/Scatter2D.pyx":33
 * 
 *     def __init_1(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 33, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 33, __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(32, 33, __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(32, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Scatter2D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>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_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_5_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_4__init_2, "Scatter2D.__init_2(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_5_Scatter2D__init_2 = {"_Scatter2D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_4__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_5_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_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "_Scatter2D__init_2") < 0)) __PYX_ERR(32, 35, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__init_2", 0, 1, 3, __pyx_nargs); __PYX_ERR(32, 35, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_4__init_2(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_4__init_2(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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__init_2", 1);

  /* "include/generated/Scatter2D.pyx":36
 * 
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__init_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 36, __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/generated/Scatter2D.pyx":37
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(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(32, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 37, __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/generated/Scatter2D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(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_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         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() -> Scatter1D.\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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/generated/Scatter2D.pyx":42
 *         """() -> Scatter1D.
 *         Clone this Scatter2D."""
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(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(32, 42, __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(32, 42, __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(32, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         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/generated/Scatter2D.pyx":44
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_9__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_9__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_8__iter__(((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__iter__(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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/Scatter2D.pyx":45
 * 
 *     def __iter__(self):
 *         return iter(self.points())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(32, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 45, __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/generated/Scatter2D.pyx":44
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

  /* 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.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_10__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_10__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter2D.pyx":48
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(32, 48, __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(32, 48, __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(32, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(32, 48, __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_numPoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(32, 48, __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(32, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(32, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(32, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(32, 48, __pyx_L1_error);
  __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(32, 48, __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/Scatter2D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), 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_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/generated/Scatter2D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_12reset, "Scatter2D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_13reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_12reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_12reset(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_12reset(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", 1);

  /* "include/generated/Scatter2D.pyx":53
 *     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(32, 53, __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(32, 53, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":51
 * 
 * 
 *     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/generated/Scatter2D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14numPoints, "Scatter2D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_15numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_14numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_14numPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_14numPoints(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", 1);

  /* "include/generated/Scatter2D.pyx":59
 *         """() -> 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(32, 59, __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(32, 59, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":56
 * 
 * 
 *     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/generated/Scatter2D.pyx":61
 *         return self.s2ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter2D_17__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter2D_17__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_16__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_16__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter2D.pyx":62
 * 
 *     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(32, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(32, 62, __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(32, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":61
 *         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/generated/Scatter2D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18points, "Scatter2D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_19points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_18points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18points(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_18points(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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned 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("points", 1);

  /* "include/generated/Scatter2D.pyx":67
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __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(32, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(32, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 67, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(32, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(32, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_9(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(32, 67, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_i};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(32, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 67, __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/generated/Scatter2D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __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/generated/Scatter2D.pyx":69
 *         return self._mknp([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_21point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20point, "Scatter2D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_21point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_20point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_21point(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "point") < 0)) __PYX_ERR(32, 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_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 69, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_20point(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_20point(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;
  __Pyx_FakeReference<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("point", 1);

  /* "include/generated/Scatter2D.pyx":71
 *     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(32, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 71, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), (&__pyx_t_2), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":69
 *         return self._mknp([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_3);
  __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/generated/Scatter2D.pyx":73
 *         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_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_22__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_22__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter2D *__pyx_t_8;
  __Pyx_FakeReference<YODA::Point2D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/Scatter2D.pyx":74
 * 
 *     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(32, 74, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(32, 74, __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(32, 74, __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(32, 74, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/Scatter2D.pyx":75
 *     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(32, 75, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 75, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":73
 *         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/generated/Scatter2D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_24addPoint, "Scatter2D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point2D object, or the\n        two args: x, xerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_25addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_24addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_24addPoint(((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_24addPoint(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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 1);

  /* "include/generated/Scatter2D.pyx":84
 *         two args: x, xerrs=0.
 *         """
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, *args):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 84, __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(32, 84, __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__addPoint_point); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__addPoint_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(32, 84, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(32, 84, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(32, 84, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 84, __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(32, 84, __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(32, 84, __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/generated/Scatter2D.pyx":78
 * 
 * 
 *     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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Scatter2D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(*args))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_explicit, "Scatter2D.__addPoint_explicit(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit = {"_Scatter2D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_explicit (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Scatter2D__addPoint_explicit", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_26__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_explicit", 1);

  /* "include/generated/Scatter2D.pyx":87
 * 
 *     def __addPoint_explicit(self, *args):
 *         self.__addPoint_point(Point2D(*args))             # <<<<<<<<<<<<<<
 * 
 *     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(32, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(32, 87, __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/generated/Scatter2D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(*args))
 * 
 */

  /* 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/generated/Scatter2D.pyx":89
 *         self.__addPoint_point(Point2D(*args))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_29_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_28__addPoint_point, "Scatter2D.__addPoint_point(self, Point2D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_29_Scatter2D__addPoint_point = {"_Scatter2D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_29_Scatter2D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_28__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_29_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 89, __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(32, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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(32, 89, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_28__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:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_28__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", 1);

  /* "include/generated/Scatter2D.pyx":90
 * 
 *     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(32, 90, __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(32, 90, __pyx_L1_error)
  try {
    __pyx_t_1->addPoint((__pyx_t_2[0]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 90, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":89
 *         self.__addPoint_point(Point2D(*args))
 * 
 *     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/generated/Scatter2D.pyx":92
 *         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_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30addPoints, "Scatter2D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_31addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_30addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 92, __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(32, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_30addPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_30addPoints(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;
  unsigned int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 1);

  /* "include/generated/Scatter2D.pyx":94
 *     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(32, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(32, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(32, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 94, __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(32, 94, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/Scatter2D.pyx":95
 *         """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/generated/Scatter2D.pyx":96
 *         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(32, 96, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 96, __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(32, 96, __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/generated/Scatter2D.pyx":95
 *         """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/generated/Scatter2D.pyx":97
 *           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(32, 97, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/generated/Scatter2D.pyx":98
 *             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(32, 98, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_14 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __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(32, 98, __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/generated/Scatter2D.pyx":95
 *         """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/generated/Scatter2D.pyx":94
 *     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/generated/Scatter2D.pyx":92
 *         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/generated/Scatter2D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32rmPoint, "Scatter2D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_33rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_32rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "rmPoint") < 0)) __PYX_ERR(32, 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_idx = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_32rmPoint(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_32rmPoint(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", 1);

  /* "include/generated/Scatter2D.pyx":101
 * 
 *     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(32, 101, __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(32, 101, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoint(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 101, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":100
 *             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/generated/Scatter2D.pyx":103
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34rmPoints, "Scatter2D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_35rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_34rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 103, __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(32, 103, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_34rmPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_34rmPoints(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", 1);

  /* "include/generated/Scatter2D.pyx":104
 * 
 *     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(32, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 104, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoints(__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(32, 104, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":103
 *         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/generated/Scatter2D.pyx":106
 *         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_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36combineWith, "Scatter2D.combineWith(self, others)\nTry to add points from other Scatter2Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_37combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_36combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "combineWith") < 0)) __PYX_ERR(32, 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_others = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_36combineWith(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_36combineWith(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", 1);

  /* "include/generated/Scatter2D.pyx":109
 *         """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/generated/Scatter2D.pyx":111
 *         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(32, 111, __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/generated/Scatter2D.pyx":109
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter2D?
 *             other = others
 */
    }

    /* "include/generated/Scatter2D.pyx":117
 *                 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(32, 117, __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(32, 117, __pyx_L5_except_error)
      try {
        __pyx_t_5->combineWith((*__pyx_t_6));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(32, 117, __pyx_L5_except_error)
      }
    }
    __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/generated/Scatter2D.pyx":112
 *             # 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(32, 112, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/generated/Scatter2D.pyx":114
 *         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(32, 114, __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(32, 114, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(32, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(32, 114, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(32, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(32, 114, __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(32, 114, __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(32, 114, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/Scatter2D.pyx":115
 *             # 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(32, 115, __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(32, 115, __pyx_L5_except_error)
        try {
          __pyx_t_6->combineWith((*__pyx_t_5));
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(32, 115, __pyx_L5_except_error)
        }

        /* "include/generated/Scatter2D.pyx":114
 *         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/generated/Scatter2D.pyx":109
 *         """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/generated/Scatter2D.pyx":106
 *         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/generated/Scatter2D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_39_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_38_mknp, "Scatter2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_39_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_38_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_39_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 120, __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(32, 120, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_38_mknp(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_38_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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/Scatter2D.pyx":121
 * 
 *     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/generated/Scatter2D.pyx":122
 *     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(32, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/Scatter2D.pyx":123
 *         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(32, 123, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(32, 123, __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/generated/Scatter2D.pyx":121
 * 
 *     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/generated/Scatter2D.pyx":124
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __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(32, 124, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/Scatter2D.pyx":125
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):
 */
      __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/generated/Scatter2D.pyx":121
 * 
 *     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/generated/Scatter2D.pyx":120
 * 
 * 
 *     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/generated/Scatter2D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40mkScatter, "Scatter2D.mkScatter(self, path=None, includeOverflows=None, includeMaskedBins=None)\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_41mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_40mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  CYTHON_UNUSED PyObject *__pyx_v_includeOverflows = 0;
  CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 127, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 127, __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(32, 127, __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_path = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 3, __pyx_nargs); __PYX_ERR(32, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_40mkScatter(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_path, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins) {
  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;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/Scatter2D.pyx":131
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         rtn = self.clone()             # <<<<<<<<<<<<<<
 *         if path is not None:
 *             rtn.setPath(path)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(32, 131, __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/generated/Scatter2D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  __pyx_t_5 = (__pyx_v_path != Py_None);
  if (__pyx_t_5) {

    /* "include/generated/Scatter2D.pyx":133
 *         rtn = self.clone()
 *         if path is not None:
 *             rtn.setPath(path)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setPath); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_path};
      __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(32, 133, __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/generated/Scatter2D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  }

  /* "include/generated/Scatter2D.pyx":134
 *         if path is not None:
 *             rtn.setPath(path)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* 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.mkScatter", __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/generated/Scatter2D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scale, "Scatter2D.scale(self, i, scale)\n(int, float) -> None\n        Scale values and errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_43scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_42scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(32, 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(32, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scale(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_42scale(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", 1);

  /* "include/generated/Scatter2D.pyx":140
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 *         self.s2ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleVal(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(32, 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(32, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(32, 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(32, 140, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors 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/generated/Scatter2D.pyx":142
 *         self.s2ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44scaleVal, "Scatter2D.scaleVal(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_45scaleVal = {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_44scaleVal};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 142, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, 1); __PYX_ERR(32, 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, "scaleVal") < 0)) __PYX_ERR(32, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_44scaleVal(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_44scaleVal(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("scaleVal", 1);

  /* "include/generated/Scatter2D.pyx":145
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s2ptr().scaleVal(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleErr(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(32, 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(32, 145, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(32, 145, __pyx_L1_error)
  try {
    __pyx_t_1->scaleVal(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 145, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":142
 *         self.s2ptr().scale(i, scale)
 * 
 *     def scaleVal(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.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":147
 *         self.s2ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46scaleErr, "Scatter2D.scaleErr(self, i, scale)\n(int, float) -> None\n        Scale errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_47scaleErr = {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_46scaleErr};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 147, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 147, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, 1); __PYX_ERR(32, 147, __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, "scaleErr") < 0)) __PYX_ERR(32, 147, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_46scaleErr(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_46scaleErr(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("scaleErr", 1);

  /* "include/generated/Scatter2D.pyx":150
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 *         self.s2ptr().scaleErr(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def edges(self, i):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(32, 150, __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(32, 150, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(32, 150, __pyx_L1_error)
  try {
    __pyx_t_1->scaleErr(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 150, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":147
 *         self.s2ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors 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.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":152
 *         self.s2ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48edges, "Scatter2D.edges(self, i)\n(int) -> list[list[double,double]]\n        Returns point edges along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_49edges = {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_48edges};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 152, __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, "edges") < 0)) __PYX_ERR(32, 152, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edges", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 152, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_48edges(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_48edges(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  size_t __pyx_t_2;
  std::vector<std::pair<double,double> >  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edges", 1);

  /* "include/generated/Scatter2D.pyx":155
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 *         return self.s2ptr().edges(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(32, 155, __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(32, 155, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->edges(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 155, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":152
 *         self.s2ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50vals, "Scatter2D.vals(self, i)\n(int) -> list[double]\n        Returns list of values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_51vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_50vals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 158, __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, "vals") < 0)) __PYX_ERR(32, 158, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("vals", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_50vals(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_50vals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vals", 1);

  /* "include/generated/Scatter2D.pyx":161
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 *         return self._mknp(self.s2ptr().vals(i))             # <<<<<<<<<<<<<<
 * 
 *     def mins(self, i):
 */
  __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(32, 161, __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(32, 161, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 161, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->vals(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 161, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 161, __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/generated/Scatter2D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

  /* 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.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":163
 *         return self._mknp(self.s2ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52mins, "Scatter2D.mins(self, i)\n(int) -> list[double]\n        Returns list of lowest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_53mins = {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_52mins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 163, __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, "mins") < 0)) __PYX_ERR(32, 163, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mins", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_52mins(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_52mins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mins", 1);

  /* "include/generated/Scatter2D.pyx":166
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 *         return self._mknp(self.s2ptr().mins(i))             # <<<<<<<<<<<<<<
 * 
 *     def maxs(self, i):
 */
  __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(32, 166, __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(32, 166, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 166, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->mins(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 166, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 166, __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/generated/Scatter2D.pyx":163
 *         return self._mknp(self.s2ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

  /* 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.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":168
 *         return self._mknp(self.s2ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54maxs, "Scatter2D.maxs(self, i)\n(int) -> list[double]\n        Returns list of largest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_55maxs = {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_54maxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 168, __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, "maxs") < 0)) __PYX_ERR(32, 168, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxs", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_54maxs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_54maxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxs", 1);

  /* "include/generated/Scatter2D.pyx":171
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 *         return self._mknp(self.s2ptr().maxs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(32, 171, __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(32, 171, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 171, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->maxs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 171, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 171, __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/generated/Scatter2D.pyx":168
 *         return self._mknp(self.s2ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

  /* 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.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":173
 *         return self._mknp(self.s2ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56errs, "Scatter2D.errs(self, i)\n(int) -> list[(double,double)]\n        Returns list of (neg,pos) error pairs along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_57errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_56errs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 173, __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, "errs") < 0)) __PYX_ERR(32, 173, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 173, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_56errs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_56errs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<std::pair<double,double> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Scatter2D.pyx":176
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 *         return self._mknp(self.s2ptr().errs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errAvgs(self, i):
 */
  __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(32, 176, __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(32, 176, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 176, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 176, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 176, __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/generated/Scatter2D.pyx":173
 *         return self._mknp(self.s2ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

  /* 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.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":178
 *         return self._mknp(self.s2ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58errAvgs, "Scatter2D.errAvgs(self, i)\n(int) -> list[double]\n        Returns list of average errors along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_59errAvgs = {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_58errAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 178, __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, "errAvgs") < 0)) __PYX_ERR(32, 178, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvgs", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 178, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_58errAvgs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errAvgs", 1);

  /* "include/generated/Scatter2D.pyx":181
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 *         return self._mknp(self.s2ptr().errAvgs(i))             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = 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(32, 181, __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(32, 181, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(32, 181, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errAvgs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 181, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 181, __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/generated/Scatter2D.pyx":178
 *         return self._mknp(self.s2ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

  /* 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.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":183
 *         return self._mknp(self.s2ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60lengthContent, "Scatter2D.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_61lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_60lengthContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "lengthContent") < 0)) __PYX_ERR(32, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(32, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_60lengthContent(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/Scatter2D.pyx":185
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(32, 185, __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_lengthContent); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_fixed_length};
    __pyx_t_1 = __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_1)) __PYX_ERR(32, 185, __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/Scatter2D.pyx":183
 *         return self._mknp(self.s2ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

  /* 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_AddTraceback("yoda.core.Scatter2D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62lengthMeta, "Scatter2D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_63lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_62lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 187, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "lengthMeta") < 0)) __PYX_ERR(32, 187, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(32, 187, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_62lengthMeta(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/Scatter2D.pyx":189
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(32, 189, __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_lengthMeta); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_skipPath, __pyx_v_skipTitle};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 189, __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/Scatter2D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

  /* 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_AddTraceback("yoda.core.Scatter2D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s2ptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64serializeContent, "Scatter2D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_65serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_64serializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 191, __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, "serializeContent") < 0)) __PYX_ERR(32, 191, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(32, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_64serializeContent(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  bool __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/Scatter2D.pyx":193
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         return self.s2ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __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(32, 193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(32, 193, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 193, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s2ptr().serializeContent(fixed_length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":195
 *         return self.s2ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66deserializeContent, "Scatter2D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_67deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_66deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 195, __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, "deserializeContent") < 0)) __PYX_ERR(32, 195, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_66deserializeContent(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Scatter2D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/Scatter2D.pyx":198
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s2ptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 198, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(32, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(32, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(32, 198, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(32, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter2D.pyx":199
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.s2ptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(32, 199, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 199, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":195
 *         return self.s2ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter2D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":201
 *         self.s2ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_68serializeMeta, "Scatter2D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_69serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_68serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 201, __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, "serializeMeta") < 0)) __PYX_ERR(32, 201, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(32, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_68serializeMeta(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::string>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/Scatter2D.pyx":203
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __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(32, 203, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(32, 203, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(32, 203, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 203, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter2D.pyx":201
 *         self.s2ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Scatter2D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":205
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70deserializeMeta, "Scatter2D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_71deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_70deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 205, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 205, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 205, __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, "deserializeMeta") < 0)) __PYX_ERR(32, 205, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(32, 205, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_70deserializeMeta(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Scatter2D *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/Scatter2D.pyx":208
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 208, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(32, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(32, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(32, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(32, 208, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(32, 208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter2D.pyx":209
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(32, 209, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(32, 209, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(32, 209, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 209, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":205
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter2D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":211
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72scaleX, "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_73scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_72scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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, "scaleX") < 0)) __PYX_ERR(32, 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_a = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_72scaleX(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_72scaleX(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", 1);

  /* "include/generated/Scatter2D.pyx":214
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s2ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformX(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(32, 214, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(32, 214, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 214, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":211
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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/generated/Scatter2D.pyx":227
 *     #    c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s2ptr().xVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74xVals, "Scatter2D.xVals(self)\nAll x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_75xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_74xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_74xVals(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_74xVals(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 1);

  /* "include/generated/Scatter2D.pyx":229
 *     def xVals(self):
 *         """All x values."""
 *         return self._mknp(self.s2ptr().xVals())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 229, __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(32, 229, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 229, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 229, __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/generated/Scatter2D.pyx":227
 *     #    c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s2ptr().xVals())
 */

  /* 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.Scatter2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":231
 *         return self._mknp(self.s2ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s2ptr().xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_76xMins, "Scatter2D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_77xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_76xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_76xMins(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_76xMins(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 1);

  /* "include/generated/Scatter2D.pyx":233
 *     def xMins(self):
 *         """All x low values."""
 *         return self._mknp(self.s2ptr().xMins())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 233, __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(32, 233, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 233, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 233, __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/generated/Scatter2D.pyx":231
 *         return self._mknp(self.s2ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s2ptr().xMins())
 */

  /* 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.Scatter2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":235
 *         return self._mknp(self.s2ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s2ptr().xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_78xMaxs, "Scatter2D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_79xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_78xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_78xMaxs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_78xMaxs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 1);

  /* "include/generated/Scatter2D.pyx":237
 *     def xMaxs(self):
 *         """All x high values."""
 *         return self._mknp(self.s2ptr().xMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 237, __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(32, 237, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 237, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 237, __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/generated/Scatter2D.pyx":235
 *         return self._mknp(self.s2ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s2ptr().xMaxs())
 */

  /* 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.Scatter2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":239
 *         return self._mknp(self.s2ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s2ptr().xMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_80xMin, "Scatter2D.xMin(self)\nThe lowest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_81xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_80xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_80xMin(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_80xMin(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;
  YODA::Scatter2D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Scatter2D.pyx":241
 *     def xMin(self):
 *         """The lowest central x values."""
 *         return self._mknp(self.s2ptr().xMin())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(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(32, 241, __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(32, 241, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 241, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 241, __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/generated/Scatter2D.pyx":239
 *         return self._mknp(self.s2ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s2ptr().xMin())
 */

  /* 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.Scatter2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":243
 *         return self._mknp(self.s2ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s2ptr().xMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_82xMax, "Scatter2D.xMax(self)\nThe highest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_83xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_82xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_82xMax(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_82xMax(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;
  YODA::Scatter2D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Scatter2D.pyx":245
 *     def xMax(self):
 *         """The highest central x values."""
 *         return self._mknp(self.s2ptr().xMax())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 245, __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(32, 245, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 245, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":243
 *         return self._mknp(self.s2ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s2ptr().xMax())
 */

  /* 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.Scatter2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":247
 *         return self._mknp(self.s2ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_84xErrs, "Scatter2D.xErrs(self)\nThe error pairs along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_85xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_84xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_84xErrs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_84xErrs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Scatter2D.pyx":249
 *     def xErrs(self):
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 249, __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(32, 249, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 249, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":247
 *         return self._mknp(self.s2ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrs())
 */

  /* 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.Scatter2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":251
 *         return self._mknp(self.s2ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_86xErrAvgs, "Scatter2D.xErrAvgs(self)\nThe average error along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_87xErrAvgs = {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_86xErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_86xErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_86xErrAvgs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvgs", 1);

  /* "include/generated/Scatter2D.pyx":253
 *     def xErrAvgs(self):
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrAvgs())             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __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(32, 253, __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(32, 253, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 253, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":251
 *         return self._mknp(self.s2ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrAvgs())
 */

  /* 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.Scatter2D.xErrAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":255
 *         return self._mknp(self.s2ptr().xErrAvgs())
 * 
 *     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_89scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_88scaleY, "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_89scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_89scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_88scaleY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_89scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 255, __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(32, 255, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 255, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_88scaleY(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_88scaleY(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", 1);

  /* "include/generated/Scatter2D.pyx":258
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 *         self.s2ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformY(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(32, 258, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(32, 258, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 258, __pyx_L1_error)
  }

  /* "include/generated/Scatter2D.pyx":255
 *         return self._mknp(self.s2ptr().xErrAvgs())
 * 
 *     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/generated/Scatter2D.pyx":271
 *     #    c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s2ptr().yVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_91yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_90yVals, "Scatter2D.yVals(self)\nAll y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_91yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_91yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_90yVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_91yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_90yVals(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_90yVals(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 1);

  /* "include/generated/Scatter2D.pyx":273
 *     def yVals(self):
 *         """All y values."""
 *         return self._mknp(self.s2ptr().yVals())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 273, __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(32, 273, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 273, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":271
 *     #    c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s2ptr().yVals())
 */

  /* 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.Scatter2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":275
 *         return self._mknp(self.s2ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s2ptr().yMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_93yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_92yMins, "Scatter2D.yMins(self)\nAll y low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_93yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_93yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_92yMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_93yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_92yMins(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_92yMins(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 1);

  /* "include/generated/Scatter2D.pyx":277
 *     def yMins(self):
 *         """All y low values."""
 *         return self._mknp(self.s2ptr().yMins())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 277, __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(32, 277, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 277, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":275
 *         return self._mknp(self.s2ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s2ptr().yMins())
 */

  /* 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.Scatter2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":279
 *         return self._mknp(self.s2ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s2ptr().yMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_95yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_94yMaxs, "Scatter2D.yMaxs(self)\nAll y high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_95yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_95yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_94yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_95yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_94yMaxs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_94yMaxs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 1);

  /* "include/generated/Scatter2D.pyx":281
 *     def yMaxs(self):
 *         """All y high values."""
 *         return self._mknp(self.s2ptr().yMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 281, __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(32, 281, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 281, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":279
 *         return self._mknp(self.s2ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s2ptr().yMaxs())
 */

  /* 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.Scatter2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":283
 *         return self._mknp(self.s2ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s2ptr().yMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_97yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_96yMin, "Scatter2D.yMin(self)\nThe lowest central y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_97yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_97yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_96yMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_97yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_96yMin(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_96yMin(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;
  YODA::Scatter2D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/Scatter2D.pyx":285
 *     def yMin(self):
 *         """The lowest central y values."""
 *         return self._mknp(self.s2ptr().yMin())             # <<<<<<<<<<<<<<
 * 
 *     def yMax(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(32, 285, __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(32, 285, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 285, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":283
 *         return self._mknp(self.s2ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s2ptr().yMin())
 */

  /* 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.Scatter2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":287
 *         return self._mknp(self.s2ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s2ptr().yMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_99yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_98yMax, "Scatter2D.yMax(self)\nThe highest central y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_99yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_99yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_98yMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_99yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_98yMax(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_98yMax(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;
  YODA::Scatter2D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/Scatter2D.pyx":289
 *     def yMax(self):
 *         """The highest central y values."""
 *         return self._mknp(self.s2ptr().yMax())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 289, __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(32, 289, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 289, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 289, __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/generated/Scatter2D.pyx":287
 *         return self._mknp(self.s2ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s2ptr().yMax())
 */

  /* 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.Scatter2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":291
 *         return self._mknp(self.s2ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_101yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_100yErrs, "Scatter2D.yErrs(self)\nThe error pairs along the y-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_101yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_101yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_100yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_101yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_100yErrs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_100yErrs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 1);

  /* "include/generated/Scatter2D.pyx":293
 *     def yErrs(self):
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrs())             # <<<<<<<<<<<<<<
 * 
 *     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(32, 293, __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(32, 293, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 293, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":291
 *         return self._mknp(self.s2ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrs())
 */

  /* 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.Scatter2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter2D.pyx":295
 *         return self._mknp(self.s2ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_103yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_102yErrAvgs, "Scatter2D.yErrAvgs(self)\nThe average error along the y-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_103yErrAvgs = {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_103yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_102yErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_103yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_102yErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_102yErrAvgs(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;
  YODA::Scatter2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrAvgs", 1);

  /* "include/generated/Scatter2D.pyx":297
 *     def yErrAvgs(self):
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrAvgs())             # <<<<<<<<<<<<<<
 * 
 * ## Convenience alias
 */
  __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(32, 297, __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(32, 297, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(32, 297, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(32, 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/generated/Scatter2D.pyx":295
 *         return self._mknp(self.s2ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrAvgs())
 */

  /* 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.Scatter2D.yErrAvgs", __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_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_9Scatter2D_104__reduce_cython__, "Scatter2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_105__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_105__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_104__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_104__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_104__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__", 1);

  /* "(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(1, 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_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_9Scatter2D_106__setstate_cython__, "Scatter2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_107__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_107__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_106__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_106__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_106__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__", 1);

  /* "(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(1, 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/generated/Scatter3D.pyx":25
 *     """
 * 
 *     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;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Scatter3D.pyx":26
 * 
 *     cdef inline c.Scatter3D* s3ptr(self) except NULL:
 *         return <c.Scatter3D*> 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(33, 26, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":25
 *     """
 * 
 *     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:;
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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 Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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__", 1);

  /* "include/generated/Scatter3D.pyx":30
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_1(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 30, __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(33, 30, __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_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__init_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(33, 30, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(33, 30, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(33, 30, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 30, __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(33, 30, __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(33, 30, __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/generated/Scatter3D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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/generated/Scatter3D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_1, "Scatter3D.__init_1(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_3_Scatter3D__init_1 = {"_Scatter3D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_2__init_1};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__init_1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 32, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 32, __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_1") < 0)) __PYX_ERR(33, 32, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__init_1", 0, 0, 2, __pyx_nargs); __PYX_ERR(33, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__init_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_2__init_1(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_2__init_1(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_1", 1);

  /* "include/generated/Scatter3D.pyx":33
 * 
 *     def __init_1(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 33, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 33, __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(33, 33, __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(33, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Scatter3D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>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_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_5_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_4__init_2, "Scatter3D.__init_2(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_5_Scatter3D__init_2 = {"_Scatter3D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_4__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_5_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_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "_Scatter3D__init_2") < 0)) __PYX_ERR(33, 35, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__init_2", 0, 1, 3, __pyx_nargs); __PYX_ERR(33, 35, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_4__init_2(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_4__init_2(struct __pyx_obj_4yoda_4core_Scatter3D *__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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__init_2", 1);

  /* "include/generated/Scatter3D.pyx":36
 * 
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__init_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 36, __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/generated/Scatter3D.pyx":37
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(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(33, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 37, __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/generated/Scatter3D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(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.Scatter3D._Scatter3D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         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() -> Scatter1D.\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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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", 1);

  /* "include/generated/Scatter3D.pyx":42
 *         """() -> Scatter1D.
 *         Clone this Scatter3D."""
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(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(33, 42, __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(33, 42, __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(33, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         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/generated/Scatter3D.pyx":44
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_9__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_9__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_8__iter__(((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__iter__(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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/Scatter3D.pyx":45
 * 
 *     def __iter__(self):
 *         return iter(self.points())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(33, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 45, __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/generated/Scatter3D.pyx":44
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

  /* 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.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_10__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_10__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter3D.pyx":48
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(33, 48, __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(33, 48, __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(33, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(33, 48, __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_numPoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(33, 48, __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(33, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(33, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(33, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(33, 48, __pyx_L1_error);
  __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(33, 48, __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/Scatter3D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), 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_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/generated/Scatter3D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_12reset, "Scatter3D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_13reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_12reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_12reset(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_12reset(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", 1);

  /* "include/generated/Scatter3D.pyx":53
 *     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(33, 53, __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(33, 53, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":51
 * 
 * 
 *     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/generated/Scatter3D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_14numPoints, "Scatter3D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_15numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_14numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_14numPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_14numPoints(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", 1);

  /* "include/generated/Scatter3D.pyx":59
 *         """() -> 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(33, 59, __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(33, 59, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":56
 * 
 * 
 *     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/generated/Scatter3D.pyx":61
 *         return self.s3ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter3D_17__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter3D_17__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_16__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_16__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter3D.pyx":62
 * 
 *     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(33, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(33, 62, __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(33, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":61
 *         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/generated/Scatter3D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_18points, "Scatter3D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_19points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_18points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_18points(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_18points(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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned 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("points", 1);

  /* "include/generated/Scatter3D.pyx":67
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __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(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(33, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 67, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(33, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(33, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_9(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(33, 67, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_i};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 67, __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/generated/Scatter3D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __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/generated/Scatter3D.pyx":69
 *         return self._mknp([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_21point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_20point, "Scatter3D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_21point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_20point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_21point(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "point") < 0)) __PYX_ERR(33, 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_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 69, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_20point(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_20point(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;
  __Pyx_FakeReference<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("point", 1);

  /* "include/generated/Scatter3D.pyx":71
 *     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(33, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 71, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), (&__pyx_t_2), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":69
 *         return self._mknp([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_3);
  __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/generated/Scatter3D.pyx":73
 *         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_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_22__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_22__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter3D *__pyx_t_8;
  __Pyx_FakeReference<YODA::Point3D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/Scatter3D.pyx":74
 * 
 *     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(33, 74, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(33, 74, __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(33, 74, __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(33, 74, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/Scatter3D.pyx":75
 *     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(33, 75, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 75, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":73
 *         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/generated/Scatter3D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_24addPoint, "Scatter3D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point3D object, or the\n        two args: x, xerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_25addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_24addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_24addPoint(((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_24addPoint(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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 1);

  /* "include/generated/Scatter3D.pyx":84
 *         two args: x, xerrs=0.
 *         """
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, *args):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 84, __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(33, 84, __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__addPoint_point); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__addPoint_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(33, 84, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(33, 84, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(33, 84, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 84, __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(33, 84, __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(33, 84, __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/generated/Scatter3D.pyx":78
 * 
 * 
 *     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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __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/generated/Scatter3D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(*args))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_explicit, "Scatter3D.__addPoint_explicit(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit = {"_Scatter3D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_explicit (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Scatter3D__addPoint_explicit", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_26__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_explicit", 1);

  /* "include/generated/Scatter3D.pyx":87
 * 
 *     def __addPoint_explicit(self, *args):
 *         self.__addPoint_point(Point3D(*args))             # <<<<<<<<<<<<<<
 * 
 *     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(33, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(33, 87, __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/generated/Scatter3D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(*args))
 * 
 */

  /* 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/generated/Scatter3D.pyx":89
 *         self.__addPoint_point(Point3D(*args))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_29_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_28__addPoint_point, "Scatter3D.__addPoint_point(self, Point3D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_29_Scatter3D__addPoint_point = {"_Scatter3D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_29_Scatter3D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_28__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_29_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 89, __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(33, 89, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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(33, 89, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_28__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:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_28__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", 1);

  /* "include/generated/Scatter3D.pyx":90
 * 
 *     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(33, 90, __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(33, 90, __pyx_L1_error)
  try {
    __pyx_t_1->addPoint((__pyx_t_2[0]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 90, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":89
 *         self.__addPoint_point(Point3D(*args))
 * 
 *     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/generated/Scatter3D.pyx":92
 *         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_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_30addPoints, "Scatter3D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_31addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_30addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 92, __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(33, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_30addPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_30addPoints(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;
  unsigned int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 1);

  /* "include/generated/Scatter3D.pyx":94
 *     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(33, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(33, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(33, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 94, __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(33, 94, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/Scatter3D.pyx":95
 *         """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/generated/Scatter3D.pyx":96
 *         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(33, 96, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 96, __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(33, 96, __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/generated/Scatter3D.pyx":95
 *         """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/generated/Scatter3D.pyx":97
 *           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(33, 97, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/generated/Scatter3D.pyx":98
 *             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(33, 98, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_14 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __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(33, 98, __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/generated/Scatter3D.pyx":95
 *         """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/generated/Scatter3D.pyx":94
 *     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/generated/Scatter3D.pyx":92
 *         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/generated/Scatter3D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_32rmPoint, "Scatter3D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_33rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_32rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "rmPoint") < 0)) __PYX_ERR(33, 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_idx = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_32rmPoint(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_32rmPoint(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", 1);

  /* "include/generated/Scatter3D.pyx":101
 * 
 *     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(33, 101, __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(33, 101, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoint(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 101, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":100
 *             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/generated/Scatter3D.pyx":103
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_34rmPoints, "Scatter3D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_35rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_34rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 103, __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(33, 103, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_34rmPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_34rmPoints(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", 1);

  /* "include/generated/Scatter3D.pyx":104
 * 
 *     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(33, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 104, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoints(__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(33, 104, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":103
 *         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/generated/Scatter3D.pyx":106
 *         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_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_36combineWith, "Scatter3D.combineWith(self, others)\nTry to add points from other Scatter3Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_37combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_36combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "combineWith") < 0)) __PYX_ERR(33, 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_others = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_36combineWith(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_36combineWith(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", 1);

  /* "include/generated/Scatter3D.pyx":109
 *         """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/generated/Scatter3D.pyx":111
 *         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(33, 111, __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/generated/Scatter3D.pyx":109
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter3D?
 *             other = others
 */
    }

    /* "include/generated/Scatter3D.pyx":117
 *                 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(33, 117, __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(33, 117, __pyx_L5_except_error)
      try {
        __pyx_t_5->combineWith((*__pyx_t_6));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(33, 117, __pyx_L5_except_error)
      }
    }
    __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/generated/Scatter3D.pyx":112
 *             # 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(33, 112, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/generated/Scatter3D.pyx":114
 *         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(33, 114, __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(33, 114, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(33, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(33, 114, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(33, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(33, 114, __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(33, 114, __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(33, 114, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/Scatter3D.pyx":115
 *             # 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(33, 115, __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(33, 115, __pyx_L5_except_error)
        try {
          __pyx_t_6->combineWith((*__pyx_t_5));
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(33, 115, __pyx_L5_except_error)
        }

        /* "include/generated/Scatter3D.pyx":114
 *         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/generated/Scatter3D.pyx":109
 *         """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/generated/Scatter3D.pyx":106
 *         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/generated/Scatter3D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_39_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_38_mknp, "Scatter3D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_39_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_38_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_39_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 120, __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(33, 120, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_38_mknp(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_38_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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/Scatter3D.pyx":121
 * 
 *     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/generated/Scatter3D.pyx":122
 *     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(33, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/Scatter3D.pyx":123
 *         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(33, 123, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(33, 123, __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/generated/Scatter3D.pyx":121
 * 
 *     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/generated/Scatter3D.pyx":124
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __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(33, 124, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/Scatter3D.pyx":125
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):
 */
      __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/generated/Scatter3D.pyx":121
 * 
 *     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/generated/Scatter3D.pyx":120
 * 
 * 
 *     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/generated/Scatter3D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_40mkScatter, "Scatter3D.mkScatter(self, path=None, includeOverflows=None, includeMaskedBins=None)\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_41mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_40mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  CYTHON_UNUSED PyObject *__pyx_v_includeOverflows = 0;
  CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 127, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 127, __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(33, 127, __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_path = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 3, __pyx_nargs); __PYX_ERR(33, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_40mkScatter(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_path, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins) {
  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;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/Scatter3D.pyx":131
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         rtn = self.clone()             # <<<<<<<<<<<<<<
 *         if path is not None:
 *             rtn.setPath(path)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(33, 131, __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/generated/Scatter3D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  __pyx_t_5 = (__pyx_v_path != Py_None);
  if (__pyx_t_5) {

    /* "include/generated/Scatter3D.pyx":133
 *         rtn = self.clone()
 *         if path is not None:
 *             rtn.setPath(path)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setPath); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_path};
      __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(33, 133, __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/generated/Scatter3D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  }

  /* "include/generated/Scatter3D.pyx":134
 *         if path is not None:
 *             rtn.setPath(path)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* 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.mkScatter", __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/generated/Scatter3D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_42scale, "Scatter3D.scale(self, i, scale)\n(int, float) -> None\n        Scale values and errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_43scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_42scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(33, 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(33, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_42scale(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_42scale(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", 1);

  /* "include/generated/Scatter3D.pyx":140
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 *         self.s3ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleVal(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(33, 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(33, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 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(33, 140, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors 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/generated/Scatter3D.pyx":142
 *         self.s3ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_44scaleVal, "Scatter3D.scaleVal(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_45scaleVal = {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_44scaleVal};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 142, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, 1); __PYX_ERR(33, 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, "scaleVal") < 0)) __PYX_ERR(33, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_44scaleVal(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_44scaleVal(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("scaleVal", 1);

  /* "include/generated/Scatter3D.pyx":145
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s3ptr().scaleVal(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleErr(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(33, 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(33, 145, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 145, __pyx_L1_error)
  try {
    __pyx_t_1->scaleVal(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 145, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":142
 *         self.s3ptr().scale(i, scale)
 * 
 *     def scaleVal(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.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":147
 *         self.s3ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_46scaleErr, "Scatter3D.scaleErr(self, i, scale)\n(int, float) -> None\n        Scale errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_47scaleErr = {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_46scaleErr};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 147, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 147, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, 1); __PYX_ERR(33, 147, __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, "scaleErr") < 0)) __PYX_ERR(33, 147, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_46scaleErr(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_46scaleErr(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("scaleErr", 1);

  /* "include/generated/Scatter3D.pyx":150
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 *         self.s3ptr().scaleErr(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def edges(self, i):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 150, __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(33, 150, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 150, __pyx_L1_error)
  try {
    __pyx_t_1->scaleErr(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 150, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":147
 *         self.s3ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors 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.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":152
 *         self.s3ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_48edges, "Scatter3D.edges(self, i)\n(int) -> list[list[double,double]]\n        Returns point edges along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_49edges = {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_48edges};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 152, __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, "edges") < 0)) __PYX_ERR(33, 152, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edges", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 152, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_48edges(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_48edges(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  size_t __pyx_t_2;
  std::vector<std::pair<double,double> >  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edges", 1);

  /* "include/generated/Scatter3D.pyx":155
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 *         return self.s3ptr().edges(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(33, 155, __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(33, 155, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->edges(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 155, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":152
 *         self.s3ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_50vals, "Scatter3D.vals(self, i)\n(int) -> list[double]\n        Returns list of values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_51vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_50vals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 158, __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, "vals") < 0)) __PYX_ERR(33, 158, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("vals", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_50vals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_50vals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter3D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vals", 1);

  /* "include/generated/Scatter3D.pyx":161
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 *         return self._mknp(self.s3ptr().vals(i))             # <<<<<<<<<<<<<<
 * 
 *     def mins(self, i):
 */
  __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(33, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 161, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 161, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->vals(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 161, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 161, __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/generated/Scatter3D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

  /* 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.Scatter3D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":163
 *         return self._mknp(self.s3ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_52mins, "Scatter3D.mins(self, i)\n(int) -> list[double]\n        Returns list of lowest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_53mins = {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_52mins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 163, __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, "mins") < 0)) __PYX_ERR(33, 163, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mins", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_52mins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_52mins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter3D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mins", 1);

  /* "include/generated/Scatter3D.pyx":166
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 *         return self._mknp(self.s3ptr().mins(i))             # <<<<<<<<<<<<<<
 * 
 *     def maxs(self, i):
 */
  __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(33, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 166, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 166, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->mins(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 166, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 166, __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/generated/Scatter3D.pyx":163
 *         return self._mknp(self.s3ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

  /* 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.Scatter3D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":168
 *         return self._mknp(self.s3ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_54maxs, "Scatter3D.maxs(self, i)\n(int) -> list[double]\n        Returns list of largest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_55maxs = {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_54maxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 168, __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, "maxs") < 0)) __PYX_ERR(33, 168, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxs", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_54maxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_54maxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter3D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxs", 1);

  /* "include/generated/Scatter3D.pyx":171
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 *         return self._mknp(self.s3ptr().maxs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(33, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 171, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 171, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->maxs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 171, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 171, __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/generated/Scatter3D.pyx":168
 *         return self._mknp(self.s3ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

  /* 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.Scatter3D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":173
 *         return self._mknp(self.s3ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_56errs, "Scatter3D.errs(self, i)\n(int) -> list[(double,double)]\n        Returns list of (neg,pos) error pairs along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_57errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_56errs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 173, __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, "errs") < 0)) __PYX_ERR(33, 173, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 173, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_56errs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_56errs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter3D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<std::pair<double,double> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Scatter3D.pyx":176
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 *         return self._mknp(self.s3ptr().errs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errAvgs(self, i):
 */
  __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(33, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 176, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 176, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 176, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 176, __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/generated/Scatter3D.pyx":173
 *         return self._mknp(self.s3ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

  /* 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.Scatter3D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":178
 *         return self._mknp(self.s3ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_58errAvgs, "Scatter3D.errAvgs(self, i)\n(int) -> list[double]\n        Returns list of average errors along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_59errAvgs = {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_58errAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 178, __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, "errAvgs") < 0)) __PYX_ERR(33, 178, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvgs", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 178, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_58errAvgs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter3D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errAvgs", 1);

  /* "include/generated/Scatter3D.pyx":181
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 *         return self._mknp(self.s3ptr().errAvgs(i))             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = 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(33, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 181, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(33, 181, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errAvgs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 181, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 181, __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/generated/Scatter3D.pyx":178
 *         return self._mknp(self.s3ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

  /* 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.Scatter3D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":183
 *         return self._mknp(self.s3ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_60lengthContent, "Scatter3D.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_61lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_60lengthContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "lengthContent") < 0)) __PYX_ERR(33, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(33, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_60lengthContent(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/Scatter3D.pyx":185
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(33, 185, __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_lengthContent); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_fixed_length};
    __pyx_t_1 = __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_1)) __PYX_ERR(33, 185, __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/Scatter3D.pyx":183
 *         return self._mknp(self.s3ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

  /* 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_AddTraceback("yoda.core.Scatter3D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_62lengthMeta, "Scatter3D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_63lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_62lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 187, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "lengthMeta") < 0)) __PYX_ERR(33, 187, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(33, 187, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_62lengthMeta(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/Scatter3D.pyx":189
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(33, 189, __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_lengthMeta); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_skipPath, __pyx_v_skipTitle};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 189, __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/Scatter3D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

  /* 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_AddTraceback("yoda.core.Scatter3D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s3ptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_64serializeContent, "Scatter3D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_65serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_64serializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 191, __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, "serializeContent") < 0)) __PYX_ERR(33, 191, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(33, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_64serializeContent(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  bool __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/Scatter3D.pyx":193
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         return self.s3ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __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(33, 193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(33, 193, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 193, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s3ptr().serializeContent(fixed_length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":195
 *         return self.s3ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_66deserializeContent, "Scatter3D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_67deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_66deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 195, __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, "deserializeContent") < 0)) __PYX_ERR(33, 195, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_66deserializeContent(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Scatter3D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/Scatter3D.pyx":198
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s3ptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 198, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(33, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(33, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(33, 198, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter3D.pyx":199
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.s3ptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 199, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 199, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":195
 *         return self.s3ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter3D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":201
 *         self.s3ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_68serializeMeta, "Scatter3D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_69serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_68serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 201, __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, "serializeMeta") < 0)) __PYX_ERR(33, 201, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(33, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_68serializeMeta(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::string>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/Scatter3D.pyx":203
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __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(33, 203, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(33, 203, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(33, 203, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 203, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter3D.pyx":201
 *         self.s3ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Scatter3D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":205
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_70deserializeMeta, "Scatter3D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_71deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_70deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 205, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 205, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 205, __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, "deserializeMeta") < 0)) __PYX_ERR(33, 205, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(33, 205, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_70deserializeMeta(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Scatter3D *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/Scatter3D.pyx":208
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 208, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(33, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(33, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(33, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(33, 208, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(33, 208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter3D.pyx":209
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, a):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 209, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(33, 209, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(33, 209, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 209, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":205
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter3D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":211
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_72scaleX, "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_73scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_72scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_73scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 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, "scaleX") < 0)) __PYX_ERR(33, 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_a = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 211, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_72scaleX(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_72scaleX(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", 1);

  /* "include/generated/Scatter3D.pyx":214
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformX(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 214, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 214, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 214, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":211
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     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/generated/Scatter3D.pyx":227
 *     #    c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s3ptr().xVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_74xVals, "Scatter3D.xVals(self)\nAll x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_75xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_74xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_75xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_74xVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_74xVals(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 1);

  /* "include/generated/Scatter3D.pyx":229
 *     def xVals(self):
 *         """All x values."""
 *         return self._mknp(self.s3ptr().xVals())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 229, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 229, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 229, __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/generated/Scatter3D.pyx":227
 *     #    c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s3ptr().xVals())
 */

  /* 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.Scatter3D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":231
 *         return self._mknp(self.s3ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s3ptr().xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_76xMins, "Scatter3D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_77xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_76xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_77xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_76xMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_76xMins(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 1);

  /* "include/generated/Scatter3D.pyx":233
 *     def xMins(self):
 *         """All x low values."""
 *         return self._mknp(self.s3ptr().xMins())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 233, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 233, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 233, __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/generated/Scatter3D.pyx":231
 *         return self._mknp(self.s3ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s3ptr().xMins())
 */

  /* 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.Scatter3D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":235
 *         return self._mknp(self.s3ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s3ptr().xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_78xMaxs, "Scatter3D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_79xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_78xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_79xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_78xMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_78xMaxs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 1);

  /* "include/generated/Scatter3D.pyx":237
 *     def xMaxs(self):
 *         """All x high values."""
 *         return self._mknp(self.s3ptr().xMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 237, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 237, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 237, __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/generated/Scatter3D.pyx":235
 *         return self._mknp(self.s3ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s3ptr().xMaxs())
 */

  /* 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.Scatter3D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":239
 *         return self._mknp(self.s3ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s3ptr().xMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_80xMin, "Scatter3D.xMin(self)\nThe lowest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_81xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_80xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_81xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_80xMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_80xMin(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 1);

  /* "include/generated/Scatter3D.pyx":241
 *     def xMin(self):
 *         """The lowest central x values."""
 *         return self._mknp(self.s3ptr().xMin())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(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(33, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 241, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 241, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 241, __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/generated/Scatter3D.pyx":239
 *         return self._mknp(self.s3ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s3ptr().xMin())
 */

  /* 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.Scatter3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":243
 *         return self._mknp(self.s3ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s3ptr().xMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_82xMax, "Scatter3D.xMax(self)\nThe highest central x values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_83xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_82xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_83xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_82xMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_82xMax(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 1);

  /* "include/generated/Scatter3D.pyx":245
 *     def xMax(self):
 *         """The highest central x values."""
 *         return self._mknp(self.s3ptr().xMax())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 245, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 245, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":243
 *         return self._mknp(self.s3ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s3ptr().xMax())
 */

  /* 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.Scatter3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":247
 *         return self._mknp(self.s3ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_84xErrs, "Scatter3D.xErrs(self)\nThe error pairs along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_85xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_84xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_85xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_84xErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_84xErrs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 1);

  /* "include/generated/Scatter3D.pyx":249
 *     def xErrs(self):
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 249, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 249, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":247
 *         return self._mknp(self.s3ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrs())
 */

  /* 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.Scatter3D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":251
 *         return self._mknp(self.s3ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_86xErrAvgs, "Scatter3D.xErrAvgs(self)\nThe average error along the x-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_87xErrAvgs = {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_86xErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_87xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter3D_86xErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_86xErrAvgs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvgs", 1);

  /* "include/generated/Scatter3D.pyx":253
 *     def xErrAvgs(self):
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrAvgs())             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __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(33, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 253, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 253, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":251
 *         return self._mknp(self.s3ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrAvgs())
 */

  /* 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.Scatter3D.xErrAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":255
 *         return self._mknp(self.s3ptr().xErrAvgs())
 * 
 *     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_89scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_88scaleY, "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_89scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_89scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_88scaleY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_89scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 255, __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(33, 255, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 255, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_88scaleY(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_88scaleY(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", 1);

  /* "include/generated/Scatter3D.pyx":258
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformY(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 258, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 258, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 258, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":255
 *         return self._mknp(self.s3ptr().xErrAvgs())
 * 
 *     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/generated/Scatter3D.pyx":271
 *     #    c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s3ptr().yVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_91yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_90yVals, "Scatter3D.yVals(self)\nAll y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_91yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_91yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_90yVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_91yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_90yVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_90yVals(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 1);

  /* "include/generated/Scatter3D.pyx":273
 *     def yVals(self):
 *         """All y values."""
 *         return self._mknp(self.s3ptr().yVals())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 273, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 273, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":271
 *     #    c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s3ptr().yVals())
 */

  /* 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.Scatter3D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":275
 *         return self._mknp(self.s3ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s3ptr().yMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_93yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_92yMins, "Scatter3D.yMins(self)\nAll y low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_93yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_93yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_92yMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_93yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_92yMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_92yMins(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 1);

  /* "include/generated/Scatter3D.pyx":277
 *     def yMins(self):
 *         """All y low values."""
 *         return self._mknp(self.s3ptr().yMins())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 277, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 277, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":275
 *         return self._mknp(self.s3ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s3ptr().yMins())
 */

  /* 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.Scatter3D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":279
 *         return self._mknp(self.s3ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s3ptr().yMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_95yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_94yMaxs, "Scatter3D.yMaxs(self)\nAll y high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_95yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_95yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_94yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_95yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_94yMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_94yMaxs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 1);

  /* "include/generated/Scatter3D.pyx":281
 *     def yMaxs(self):
 *         """All y high values."""
 *         return self._mknp(self.s3ptr().yMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 281, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 281, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":279
 *         return self._mknp(self.s3ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s3ptr().yMaxs())
 */

  /* 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.Scatter3D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":283
 *         return self._mknp(self.s3ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s3ptr().yMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_97yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_96yMin, "Scatter3D.yMin(self)\nThe lowest central y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_97yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_97yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_96yMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_97yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_96yMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_96yMin(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 1);

  /* "include/generated/Scatter3D.pyx":285
 *     def yMin(self):
 *         """The lowest central y values."""
 *         return self._mknp(self.s3ptr().yMin())             # <<<<<<<<<<<<<<
 * 
 *     def yMax(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(33, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 285, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 285, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":283
 *         return self._mknp(self.s3ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s3ptr().yMin())
 */

  /* 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.Scatter3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":287
 *         return self._mknp(self.s3ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s3ptr().yMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_99yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_98yMax, "Scatter3D.yMax(self)\nThe highest central y values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_99yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_99yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_98yMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_99yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_98yMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_98yMax(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 1);

  /* "include/generated/Scatter3D.pyx":289
 *     def yMax(self):
 *         """The highest central y values."""
 *         return self._mknp(self.s3ptr().yMax())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 289, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 289, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 289, __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/generated/Scatter3D.pyx":287
 *         return self._mknp(self.s3ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s3ptr().yMax())
 */

  /* 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.Scatter3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":291
 *         return self._mknp(self.s3ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_101yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_100yErrs, "Scatter3D.yErrs(self)\nThe error pairs along the y-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_101yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_101yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_100yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_101yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_100yErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_100yErrs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 1);

  /* "include/generated/Scatter3D.pyx":293
 *     def yErrs(self):
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrs())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 293, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 293, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":291
 *         return self._mknp(self.s3ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrs())
 */

  /* 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.Scatter3D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":295
 *         return self._mknp(self.s3ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_103yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_102yErrAvgs, "Scatter3D.yErrAvgs(self)\nThe average error along the y-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_103yErrAvgs = {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_103yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_102yErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_103yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter3D_102yErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_102yErrAvgs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrAvgs", 1);

  /* "include/generated/Scatter3D.pyx":297
 *     def yErrAvgs(self):
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrAvgs())             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, a):
 */
  __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(33, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 297, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 297, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":295
 *         return self._mknp(self.s3ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrAvgs())
 */

  /* 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.Scatter3D.yErrAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":299
 *         return self._mknp(self.s3ptr().yErrAvgs())
 * 
 *     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_105scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_104scaleZ, "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_105scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_105scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_104scaleZ};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_105scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 299, __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(33, 299, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 299, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_104scaleZ(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_104scaleZ(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", 1);

  /* "include/generated/Scatter3D.pyx":302
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scale(0, a)             # <<<<<<<<<<<<<<
 * 
 *     #def transformZ(self, f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 302, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(33, 302, __pyx_L1_error)
  try {
    __pyx_t_1->scale(0, __pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 302, __pyx_L1_error)
  }

  /* "include/generated/Scatter3D.pyx":299
 *         return self._mknp(self.s3ptr().yErrAvgs())
 * 
 *     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/generated/Scatter3D.pyx":315
 *     #    c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         """All z values."""
 *         return self._mknp(self.s3ptr().zVals())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_107zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_106zVals, "Scatter3D.zVals(self)\nAll z values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_107zVals = {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_107zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_106zVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_107zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_106zVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_106zVals(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zVals", 1);

  /* "include/generated/Scatter3D.pyx":317
 *     def zVals(self):
 *         """All z values."""
 *         return self._mknp(self.s3ptr().zVals())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 317, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zVals();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 317, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 317, __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/generated/Scatter3D.pyx":315
 *     #    c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         """All z values."""
 *         return self._mknp(self.s3ptr().zVals())
 */

  /* 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.Scatter3D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":319
 *         return self._mknp(self.s3ptr().zVals())
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp(self.s3ptr().zMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_109zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_108zMins, "Scatter3D.zMins(self)\nAll z low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_109zMins = {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_109zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_108zMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_109zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_108zMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_108zMins(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMins", 1);

  /* "include/generated/Scatter3D.pyx":321
 *     def zMins(self):
 *         """All z low values."""
 *         return self._mknp(self.s3ptr().zMins())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 321, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zMins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 321, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 321, __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/generated/Scatter3D.pyx":319
 *         return self._mknp(self.s3ptr().zVals())
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp(self.s3ptr().zMins())
 */

  /* 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.Scatter3D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":323
 *         return self._mknp(self.s3ptr().zMins())
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp(self.s3ptr().zMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_111zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_110zMaxs, "Scatter3D.zMaxs(self)\nAll z high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_111zMaxs = {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_111zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_110zMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_111zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMaxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_110zMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_110zMaxs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMaxs", 1);

  /* "include/generated/Scatter3D.pyx":325
 *     def zMaxs(self):
 *         """All z high values."""
 *         return self._mknp(self.s3ptr().zMaxs())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 325, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zMaxs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 325, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 325, __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/generated/Scatter3D.pyx":323
 *         return self._mknp(self.s3ptr().zMins())
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp(self.s3ptr().zMaxs())
 */

  /* 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.Scatter3D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":327
 *         return self._mknp(self.s3ptr().zMaxs())
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central z values."""
 *         return self._mknp(self.s3ptr().zMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_113zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_112zMin, "Scatter3D.zMin(self)\nThe lowest central z values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_113zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_113zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_112zMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_113zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_112zMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_112zMin(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 1);

  /* "include/generated/Scatter3D.pyx":329
 *     def zMin(self):
 *         """The lowest central z values."""
 *         return self._mknp(self.s3ptr().zMin())             # <<<<<<<<<<<<<<
 * 
 *     def zMax(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(33, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 329, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 329, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 329, __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/generated/Scatter3D.pyx":327
 *         return self._mknp(self.s3ptr().zMaxs())
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central z values."""
 *         return self._mknp(self.s3ptr().zMin())
 */

  /* 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.Scatter3D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":331
 *         return self._mknp(self.s3ptr().zMin())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central z values."""
 *         return self._mknp(self.s3ptr().zMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_115zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_114zMax, "Scatter3D.zMax(self)\nThe highest central z values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_115zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_115zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_114zMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_115zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_114zMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_114zMax(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;
  YODA::Scatter3D *__pyx_t_3;
  double __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 1);

  /* "include/generated/Scatter3D.pyx":333
 *     def zMax(self):
 *         """The highest central z values."""
 *         return self._mknp(self.s3ptr().zMax())             # <<<<<<<<<<<<<<
 * 
 *     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(33, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 333, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 333, __pyx_L1_error)
  }
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 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/generated/Scatter3D.pyx":331
 *         return self._mknp(self.s3ptr().zMin())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central z values."""
 *         return self._mknp(self.s3ptr().zMax())
 */

  /* 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.Scatter3D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":335
 *         return self._mknp(self.s3ptr().zMax())
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_117zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_116zErrs, "Scatter3D.zErrs(self)\nThe error pairs along the z-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_117zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_117zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_116zErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_117zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_116zErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_116zErrs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<std::pair<double,double> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 1);

  /* "include/generated/Scatter3D.pyx":337
 *     def zErrs(self):
 *         """The error pairs along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrs())             # <<<<<<<<<<<<<<
 * 
 *     def zErrAvgs(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(33, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 337, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 337, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 337, __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/generated/Scatter3D.pyx":335
 *         return self._mknp(self.s3ptr().zMax())
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrs())
 */

  /* 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.Scatter3D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter3D.pyx":339
 *         return self._mknp(self.s3ptr().zErrs())
 * 
 *     def zErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrAvgs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_119zErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_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_118zErrAvgs, "Scatter3D.zErrAvgs(self)\nThe average error along the z-axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_119zErrAvgs = {"zErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_119zErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_118zErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_119zErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrAvgs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrAvgs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_118zErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_118zErrAvgs(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;
  YODA::Scatter3D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrAvgs", 1);

  /* "include/generated/Scatter3D.pyx":341
 *     def zErrAvgs(self):
 *         """The average error along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrAvgs())             # <<<<<<<<<<<<<<
 * 
 * ## Convenience alias
 */
  __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(33, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(33, 341, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->zErrAvgs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(33, 341, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(33, 341, __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/generated/Scatter3D.pyx":339
 *         return self._mknp(self.s3ptr().zErrs())
 * 
 *     def zErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrAvgs())
 */

  /* 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.Scatter3D.zErrAvgs", __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_121__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_120__reduce_cython__, "Scatter3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_121__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_121__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_120__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_121__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_120__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_120__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__", 1);

  /* "(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(1, 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_123__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_122__setstate_cython__, "Scatter3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_123__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_123__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_122__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_123__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __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_122__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_122__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__", 1);

  /* "(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(1, 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/generated/Scatter4D.pyx":25
 *     """
 * 
 *     cdef inline c.Scatter4D* s4ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter4D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Scatter4D *__pyx_f_4yoda_4core_9Scatter4D_s4ptr(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self) {
  YODA::Scatter4D *__pyx_r;
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "include/generated/Scatter4D.pyx":26
 * 
 *     cdef inline c.Scatter4D* s4ptr(self) except NULL:
 *         return <c.Scatter4D*> 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(34, 26, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter4D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":25
 *     """
 * 
 *     cdef inline c.Scatter4D* s4ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter4D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.s4ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Scatter4D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Scatter4D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_9Scatter4D___init__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__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_9Scatter4D___init__(struct __pyx_obj_4yoda_4core_Scatter4D *__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__", 1);

  /* "include/generated/Scatter4D.pyx":30
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_1(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 30, __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(34, 30, __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_Scatter4D__init_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter4D__init_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(34, 30, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(34, 30, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(34, 30, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 30, __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(34, 30, __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(34, 30, __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/generated/Scatter4D.pyx":29
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_1, self.__init_2], *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.Scatter4D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_3_Scatter4D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_2__init_1, "Scatter4D.__init_1(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_3_Scatter4D__init_1 = {"_Scatter4D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_3_Scatter4D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_2__init_1};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_3_Scatter4D__init_1(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter4D__init_1 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 32, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 32, __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, "_Scatter4D__init_1") < 0)) __PYX_ERR(34, 32, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter4D__init_1", 0, 0, 2, __pyx_nargs); __PYX_ERR(34, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D._Scatter4D__init_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_2__init_1(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_2__init_1(struct __pyx_obj_4yoda_4core_Scatter4D *__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::Scatter4D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter4D__init_1", 1);

  /* "include/generated/Scatter4D.pyx":33
 * 
 *     def __init_1(self, path="", title=""):
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 33, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_6libcpp_6string_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 33, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Scatter4D(((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(34, 33, __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(34, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/generated/Scatter4D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>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.Scatter4D._Scatter4D__init_1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_5_Scatter4D__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_9Scatter4D_4__init_2, "Scatter4D.__init_2(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_5_Scatter4D__init_2 = {"_Scatter4D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_5_Scatter4D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_4__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_5_Scatter4D__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_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter4D__init_2 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s__2));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 35, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "_Scatter4D__init_2") < 0)) __PYX_ERR(34, 35, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter4D__init_2", 0, 1, 3, __pyx_nargs); __PYX_ERR(34, 35, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D._Scatter4D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_4__init_2(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_4__init_2(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter4D__init_2", 1);

  /* "include/generated/Scatter4D.pyx":36
 * 
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter4D__init_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 36, __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/generated/Scatter4D.pyx":37
 *     def __init_2(self, points, path="", title=""):
 *         self.__init_1(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(34, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 37, __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/generated/Scatter4D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(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.Scatter4D._Scatter4D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter4D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_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_9Scatter4D_6clone, "Scatter4D.clone(self)\n() -> Scatter1D.\n        Clone this Scatter4D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_7clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_6clone};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter4D_6clone(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_6clone(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  YODA::Scatter4D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 1);

  /* "include/generated/Scatter4D.pyx":42
 *         """() -> Scatter1D.
 *         Clone this Scatter4D."""
 *         return cutil.new_owned_cls(Scatter4D, self.s4ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 42, __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(34, 42, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter4D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter4D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":44
 *         return cutil.new_owned_cls(Scatter4D, self.s4ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_9__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_9__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_8__iter__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_8__iter__(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "include/generated/Scatter4D.pyx":45
 * 
 *     def __iter__(self):
 *         return iter(self.points())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(34, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 45, __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/generated/Scatter4D.pyx":44
 *         return cutil.new_owned_cls(Scatter4D, self.s4ptr().newclone())
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.points())
 * 
 */

  /* 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.Scatter4D.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_10__repr__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_10__repr__(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter4D.pyx":48
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), self.numPoints())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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(34, 48, __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(34, 48, __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(34, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(34, 48, __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_numPoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(34, 48, __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(34, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(34, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(34, 48, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(34, 48, __pyx_L1_error);
  __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(34, 48, __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/Scatter4D.pyx":47
 *         return iter(self.points())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), 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_6);
  __Pyx_AddTraceback("yoda.core.Scatter4D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s4ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_12reset, "Scatter4D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_13reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_12reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_13reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter4D_12reset(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_12reset(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 1);

  /* "include/generated/Scatter4D.pyx":53
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         self.s4ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 53, __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(34, 53, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s4ptr().reset()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_14numPoints, "Scatter4D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_15numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_14numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_15numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter4D_14numPoints(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_14numPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__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", 1);

  /* "include/generated/Scatter4D.pyx":59
 *         """() -> int
 *         Number of points in this scatter."""
 *         return self.s4ptr().numPoints()             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 59, __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(34, 59, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":56
 * 
 * 
 *     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.Scatter4D.numPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":61
 *         return self.s4ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter4D_17__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter4D_17__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_16__len__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter4D_16__len__(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned 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__", 1);

  /* "include/generated/Scatter4D.pyx":62
 * 
 *     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(34, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(34, 62, __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(34, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":61
 *         return self.s4ptr().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.Scatter4D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_18points, "Scatter4D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_19points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_18points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_19points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter4D_18points(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_18points(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned 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("points", 1);

  /* "include/generated/Scatter4D.pyx":67
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __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(34, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __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(34, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 67, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(34, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 67, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(34, 67, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 67, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_9(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(34, 67, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_i};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_5))) __PYX_ERR(34, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 67, __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/generated/Scatter4D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter4D.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/generated/Scatter4D.pyx":69
 *         return self._mknp([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(Point4D, &self.s4ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_21point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_20point, "Scatter4D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_21point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_20point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_21point(PyObject *__pyx_v_self, 
#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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "point") < 0)) __PYX_ERR(34, 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_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 69, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_20point(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_20point(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  __Pyx_FakeReference<YODA::Point4D> __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("point", 1);

  /* "include/generated/Scatter4D.pyx":71
 *     def point(self, size_t i):
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 71, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point4D), (&__pyx_t_2), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":69
 *         return self._mknp([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(Point4D, &self.s4ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter4D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":73
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_22__getitem__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_22__getitem__(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter4D *__pyx_t_8;
  __Pyx_FakeReference<YODA::Point4D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "include/generated/Scatter4D.pyx":74
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().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(34, 74, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(34, 74, __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(34, 74, __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(34, 74, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/generated/Scatter4D.pyx":75
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 75, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->point(__pyx_v_i);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 75, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point4D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":73
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point4D, &self.s4ptr().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.Scatter4D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_24addPoint, "Scatter4D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point4D object, or the\n        two args: x, xerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_25addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_24addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_25addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  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_9Scatter4D_24addPoint(((struct __pyx_obj_4yoda_4core_Scatter4D *)__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_9Scatter4D_24addPoint(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 1);

  /* "include/generated/Scatter4D.pyx":84
 *         two args: x, xerrs=0.
 *         """
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, *args):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 84, __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(34, 84, __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_Scatter4D__addPoint_point); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter4D__addPoint_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(34, 84, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(34, 84, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(34, 84, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 84, __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(34, 84, __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(34, 84, __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/generated/Scatter4D.pyx":78
 * 
 * 
 *     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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter4D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point4D(*args))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_26__addPoint_explicit, "Scatter4D.__addPoint_explicit(self, *args)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit = {"_Scatter4D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_26__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter4D__addPoint_explicit (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_Scatter4D__addPoint_explicit", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_26__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_26__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_args) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter4D__addPoint_explicit", 1);

  /* "include/generated/Scatter4D.pyx":87
 * 
 *     def __addPoint_explicit(self, *args):
 *         self.__addPoint_point(Point4D(*args))             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_point(self, Point4D p):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter4D__addPoint_point); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point4D), __pyx_v_args, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(34, 87, __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/generated/Scatter4D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point4D(*args))
 * 
 */

  /* 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.Scatter4D._Scatter4D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":89
 *         self.__addPoint_point(Point4D(*args))
 * 
 *     def __addPoint_point(self, Point4D p):             # <<<<<<<<<<<<<<
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_29_Scatter4D__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_9Scatter4D_28__addPoint_point, "Scatter4D.__addPoint_point(self, Point4D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_29_Scatter4D__addPoint_point = {"_Scatter4D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_29_Scatter4D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_28__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_29_Scatter4D__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_Point4D *__pyx_v_p = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter4D__addPoint_point (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 89, __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, "_Scatter4D__addPoint_point") < 0)) __PYX_ERR(34, 89, __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_Point4D *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter4D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 89, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D._Scatter4D__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_Point4D, 1, "p", 0))) __PYX_ERR(34, 89, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_28__addPoint_point(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_p);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_28__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point4D *__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  YODA::Point4D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter4D__addPoint_point", 1);

  /* "include/generated/Scatter4D.pyx":90
 * 
 *     def __addPoint_point(self, Point4D p):
 *         self.s4ptr().addPoint(p.p4ptr()[0])             # <<<<<<<<<<<<<<
 * 
 *     def addPoints(self, iterable):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 90, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point4D *)__pyx_v_p->__pyx_base.__pyx_base.__pyx_vtab)->p4ptr(__pyx_v_p); if (unlikely(__pyx_t_2 == ((YODA::Point4D *)NULL))) __PYX_ERR(34, 90, __pyx_L1_error)
  try {
    __pyx_t_1->addPoint((__pyx_t_2[0]));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 90, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":89
 *         self.__addPoint_point(Point4D(*args))
 * 
 *     def __addPoint_point(self, Point4D p):             # <<<<<<<<<<<<<<
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D._Scatter4D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":92
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_30addPoints, "Scatter4D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_31addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_30addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_31addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 92, __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(34, 92, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_30addPoints(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_30addPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 1);

  /* "include/generated/Scatter4D.pyx":94
 *     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(34, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 94, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(34, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 94, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) 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(34, 94, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 94, __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(34, 94, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/generated/Scatter4D.pyx":95
 *         """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/generated/Scatter4D.pyx":96
 *         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(34, 96, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 96, __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(34, 96, __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/generated/Scatter4D.pyx":95
 *         """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/generated/Scatter4D.pyx":97
 *           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.Scatter4D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(34, 97, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/generated/Scatter4D.pyx":98
 *             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(34, 98, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_14 = 0;
        #if CYTHON_UNPACK_METHODS
        if (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;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __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(34, 98, __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/generated/Scatter4D.pyx":95
 *         """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/generated/Scatter4D.pyx":94
 *     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/generated/Scatter4D.pyx":92
 *         self.s4ptr().addPoint(p.p4ptr()[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.Scatter4D.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/generated/Scatter4D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_32rmPoint, "Scatter4D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_33rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_32rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_33rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "rmPoint") < 0)) __PYX_ERR(34, 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_idx = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_32rmPoint(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_32rmPoint(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_idx) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  size_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoint", 1);

  /* "include/generated/Scatter4D.pyx":101
 * 
 *     def rmPoint(self, idx):
 *         self.s4ptr().rmPoint(idx)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoints(self, idxs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 101, __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(34, 101, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoint(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 101, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoint(idx)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":103
 *         self.s4ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_34rmPoints, "Scatter4D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_35rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_34rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_35rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 103, __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(34, 103, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_34rmPoints(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_34rmPoints(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_idxs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__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", 1);

  /* "include/generated/Scatter4D.pyx":104
 * 
 *     def rmPoints(self, idxs):
 *         self.s4ptr().rmPoints(idxs)             # <<<<<<<<<<<<<<
 * 
 *     def combineWith(self, others):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 104, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 104, __pyx_L1_error)
  try {
    __pyx_t_1->rmPoints(__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(34, 104, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":103
 *         self.s4ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoints(idxs)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":106
 *         self.s4ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_36combineWith, "Scatter4D.combineWith(self, others)\nTry to add points from other Scatter4Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_37combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_36combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_37combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "combineWith") < 0)) __PYX_ERR(34, 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_others = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_36combineWith(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_36combineWith(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_others) {
  struct __pyx_obj_4yoda_4core_Scatter4D *__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::Scatter4D *__pyx_t_5;
  YODA::Scatter4D *__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", 1);

  /* "include/generated/Scatter4D.pyx":109
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter4D?
 *             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/generated/Scatter4D.pyx":111
 *         try:
 *             # Can we type it as a Scatter4D?
 *             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_Scatter4D))))) __PYX_ERR(34, 111, __pyx_L3_error)
      __pyx_t_4 = __pyx_v_others;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/generated/Scatter4D.pyx":109
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter4D?
 *             other = others
 */
    }

    /* "include/generated/Scatter4D.pyx":117
 *                 self.s4ptr().combineWith(deref(other.s4ptr()))
 *         else:
 *             self.s4ptr().combineWith(deref(other.s4ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 117, __pyx_L5_except_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 117, __pyx_L5_except_error)
      try {
        __pyx_t_5->combineWith((*__pyx_t_6));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(34, 117, __pyx_L5_except_error)
      }
    }
    __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/generated/Scatter4D.pyx":112
 *             # Can we type it as a Scatter4D?
 *             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.Scatter4D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(34, 112, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/generated/Scatter4D.pyx":114
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s4ptr().combineWith(deref(other.s4ptr()))
 *         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(34, 114, __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(34, 114, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(34, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(34, 114, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_10);
              #if !CYTHON_ASSUME_SAFE_MACROS
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 114, __pyx_L5_except_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) 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(34, 114, __pyx_L5_except_error)
            #else
            __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(34, 114, __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(34, 114, __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_Scatter4D))))) __PYX_ERR(34, 114, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/generated/Scatter4D.pyx":115
 *             # Could be an iterable...
 *             for other in others:
 *                 self.s4ptr().combineWith(deref(other.s4ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             self.s4ptr().combineWith(deref(other.s4ptr()))
 */
        __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 115, __pyx_L5_except_error)
        __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 115, __pyx_L5_except_error)
        try {
          __pyx_t_6->combineWith((*__pyx_t_5));
        } catch(...) {
          translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
          __PYX_ERR(34, 115, __pyx_L5_except_error)
        }

        /* "include/generated/Scatter4D.pyx":114
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s4ptr().combineWith(deref(other.s4ptr()))
 *         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/generated/Scatter4D.pyx":109
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter4D?
 *             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/generated/Scatter4D.pyx":106
 *         self.s4ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D 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.Scatter4D.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/generated/Scatter4D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_39_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_9Scatter4D_38_mknp, "Scatter4D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_39_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_38_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_39_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 120, __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(34, 120, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_38_mknp(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_38_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__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;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 1);

  /* "include/generated/Scatter4D.pyx":121
 * 
 *     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/generated/Scatter4D.pyx":122
 *     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(34, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/generated/Scatter4D.pyx":123
 *         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(34, 123, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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;
        }
      }
      #endif
      {
        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(34, 123, __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/generated/Scatter4D.pyx":121
 * 
 *     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/generated/Scatter4D.pyx":124
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("yoda.core.Scatter4D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(34, 124, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/generated/Scatter4D.pyx":125
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):
 */
      __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/generated/Scatter4D.pyx":121
 * 
 *     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/generated/Scatter4D.pyx":120
 * 
 * 
 *     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.Scatter4D._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/generated/Scatter4D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 *         Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_40mkScatter, "Scatter4D.mkScatter(self, path=None, includeOverflows=None, includeMaskedBins=None)\nNone -> Scatter4D.\n        Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,\n        even if it already is a scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_41mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_40mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_41mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  CYTHON_UNUSED PyObject *__pyx_v_includeOverflows = 0;
  CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_includeOverflows,&__pyx_n_s_includeMaskedBins,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((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 (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 127, __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] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeMaskedBins);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 127, __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(34, 127, __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_path = values[0];
    __pyx_v_includeOverflows = values[1];
    __pyx_v_includeMaskedBins = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 3, __pyx_nargs); __PYX_ERR(34, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_40mkScatter(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_path, __pyx_v_includeOverflows, __pyx_v_includeMaskedBins);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_40mkScatter(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_path, CYTHON_UNUSED PyObject *__pyx_v_includeOverflows, CYTHON_UNUSED PyObject *__pyx_v_includeMaskedBins) {
  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;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 1);

  /* "include/generated/Scatter4D.pyx":131
 *         Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         rtn = self.clone()             # <<<<<<<<<<<<<<
 *         if path is not None:
 *             rtn.setPath(path)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __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(34, 131, __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/generated/Scatter4D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  __pyx_t_5 = (__pyx_v_path != Py_None);
  if (__pyx_t_5) {

    /* "include/generated/Scatter4D.pyx":133
 *         rtn = self.clone()
 *         if path is not None:
 *             rtn.setPath(path)             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_setPath); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_path};
      __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(34, 133, __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/generated/Scatter4D.pyx":132
 *         even if it already is a scatter."""
 *         rtn = self.clone()
 *         if path is not None:             # <<<<<<<<<<<<<<
 *             rtn.setPath(path)
 *         return rtn
 */
  }

  /* "include/generated/Scatter4D.pyx":134
 *         if path is not None:
 *             rtn.setPath(path)
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 *         Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* 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.Scatter4D.mkScatter", __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/generated/Scatter4D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_42scale, "Scatter4D.scale(self, i, scale)\n(int, float) -> None\n        Scale values and errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_43scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_42scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_43scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(34, 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(34, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(34, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_42scale(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_42scale(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__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", 1);

  /* "include/generated/Scatter4D.pyx":140
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 *         self.s4ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleVal(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 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(34, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(34, 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(34, 140, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":142
 *         self.s4ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_44scaleVal, "Scatter4D.scaleVal(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_45scaleVal = {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_44scaleVal};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_45scaleVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 142, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, 1); __PYX_ERR(34, 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, "scaleVal") < 0)) __PYX_ERR(34, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(34, 142, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_44scaleVal(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_44scaleVal(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__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("scaleVal", 1);

  /* "include/generated/Scatter4D.pyx":145
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s4ptr().scaleVal(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def scaleErr(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 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(34, 145, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(34, 145, __pyx_L1_error)
  try {
    __pyx_t_1->scaleVal(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 145, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":142
 *         self.s4ptr().scale(i, scale)
 * 
 *     def scaleVal(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.Scatter4D.scaleVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":147
 *         self.s4ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_46scaleErr, "Scatter4D.scaleErr(self, i, scale)\n(int, float) -> None\n        Scale errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_47scaleErr = {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_46scaleErr};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_47scaleErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleErr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 147, __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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 147, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, 1); __PYX_ERR(34, 147, __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, "scaleErr") < 0)) __PYX_ERR(34, 147, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleErr", 1, 2, 2, __pyx_nargs); __PYX_ERR(34, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_46scaleErr(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_46scaleErr(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__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("scaleErr", 1);

  /* "include/generated/Scatter4D.pyx":150
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 *         self.s4ptr().scaleErr(i, scale)             # <<<<<<<<<<<<<<
 * 
 *     def edges(self, i):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 150, __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(34, 150, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(34, 150, __pyx_L1_error)
  try {
    __pyx_t_1->scaleErr(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 150, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":147
 *         self.s4ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter4D.scaleErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":152
 *         self.s4ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_48edges, "Scatter4D.edges(self, i)\n(int) -> list[list[double,double]]\n        Returns point edges along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_49edges = {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_48edges};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_49edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("edges (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 152, __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, "edges") < 0)) __PYX_ERR(34, 152, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("edges", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 152, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_48edges(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_48edges(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  size_t __pyx_t_2;
  std::vector<std::pair<double,double> >  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("edges", 1);

  /* "include/generated/Scatter4D.pyx":155
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 *         return self.s4ptr().edges(i)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 155, __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(34, 155, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->edges(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 155, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":152
 *         self.s4ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter4D.edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_50vals, "Scatter4D.vals(self, i)\n(int) -> list[double]\n        Returns list of values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_51vals = {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_50vals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_51vals(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vals (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 158, __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, "vals") < 0)) __PYX_ERR(34, 158, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("vals", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_50vals(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_50vals(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter4D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vals", 1);

  /* "include/generated/Scatter4D.pyx":161
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 *         return self._mknp(self.s4ptr().vals(i))             # <<<<<<<<<<<<<<
 * 
 *     def mins(self, i):
 */
  __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(34, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 161, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 161, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->vals(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 161, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 161, __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/generated/Scatter4D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */

  /* 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.Scatter4D.vals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":163
 *         return self._mknp(self.s4ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_52mins, "Scatter4D.mins(self, i)\n(int) -> list[double]\n        Returns list of lowest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_53mins = {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_52mins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_53mins(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 163, __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, "mins") < 0)) __PYX_ERR(34, 163, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mins", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_52mins(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_52mins(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter4D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mins", 1);

  /* "include/generated/Scatter4D.pyx":166
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 *         return self._mknp(self.s4ptr().mins(i))             # <<<<<<<<<<<<<<
 * 
 *     def maxs(self, i):
 */
  __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(34, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 166, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 166, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->mins(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 166, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 166, __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/generated/Scatter4D.pyx":163
 *         return self._mknp(self.s4ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */

  /* 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.Scatter4D.mins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":168
 *         return self._mknp(self.s4ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_54maxs, "Scatter4D.maxs(self, i)\n(int) -> list[double]\n        Returns list of largest values along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_55maxs = {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_54maxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_55maxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 168, __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, "maxs") < 0)) __PYX_ERR(34, 168, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxs", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_54maxs(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_54maxs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter4D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxs", 1);

  /* "include/generated/Scatter4D.pyx":171
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 *         return self._mknp(self.s4ptr().maxs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errs(self, i):
 */
  __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(34, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 171, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 171, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->maxs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 171, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 171, __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/generated/Scatter4D.pyx":168
 *         return self._mknp(self.s4ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */

  /* 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.Scatter4D.maxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":173
 *         return self._mknp(self.s4ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_56errs, "Scatter4D.errs(self, i)\n(int) -> list[(double,double)]\n        Returns list of (neg,pos) error pairs along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_57errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_56errs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_57errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 173, __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, "errs") < 0)) __PYX_ERR(34, 173, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 173, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_56errs(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_56errs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter4D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<std::pair<double,double> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 1);

  /* "include/generated/Scatter4D.pyx":176
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 *         return self._mknp(self.s4ptr().errs(i))             # <<<<<<<<<<<<<<
 * 
 *     def errAvgs(self, i):
 */
  __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(34, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 176, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 176, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 176, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 176, __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/generated/Scatter4D.pyx":173
 *         return self._mknp(self.s4ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */

  /* 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.Scatter4D.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":178
 *         return self._mknp(self.s4ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_58errAvgs, "Scatter4D.errAvgs(self, i)\n(int) -> list[double]\n        Returns list of average errors along axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_59errAvgs = {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_58errAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_59errAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvgs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 178, __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, "errAvgs") < 0)) __PYX_ERR(34, 178, __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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvgs", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 178, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_58errAvgs(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_58errAvgs(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter4D *__pyx_t_3;
  size_t __pyx_t_4;
  std::vector<double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errAvgs", 1);

  /* "include/generated/Scatter4D.pyx":181
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 *         return self._mknp(self.s4ptr().errAvgs(i))             # <<<<<<<<<<<<<<
 * 
 *     def lengthContent(self, fixed_length = 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(34, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 181, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(34, 181, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->errAvgs(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 181, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_double(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    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(34, 181, __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/generated/Scatter4D.pyx":178
 *         return self._mknp(self.s4ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */

  /* 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.Scatter4D.errAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":183
 *         return self._mknp(self.s4ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_60lengthContent, "Scatter4D.lengthContent(self, fixed_length=False)\nLength of serialisaed data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_61lengthContent = {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_60lengthContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_61lengthContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "lengthContent") < 0)) __PYX_ERR(34, 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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(34, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_60lengthContent(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_60lengthContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthContent", 1);

  /* "include/generated/Scatter4D.pyx":185
 *     def lengthContent(self, fixed_length = False):
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(34, 185, __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_lengthContent); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_fixed_length};
    __pyx_t_1 = __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_1)) __PYX_ERR(34, 185, __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/Scatter4D.pyx":183
 *         return self._mknp(self.s4ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */

  /* 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_AddTraceback("yoda.core.Scatter4D.lengthContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_62lengthMeta, "Scatter4D.lengthMeta(self, skipPath=True, skipTitle=True)\nLength of serialisaed meta-data vector for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_63lengthMeta = {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_62lengthMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_63lengthMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lengthMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 187, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "lengthMeta") < 0)) __PYX_ERR(34, 187, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lengthMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(34, 187, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_62lengthMeta(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_62lengthMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lengthMeta", 1);

  /* "include/generated/Scatter4D.pyx":189
 *     def lengthMeta(self, skipPath = True, skipTitle = True):
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def serializeContent(self, fixed_length = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_estptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __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(34, 189, __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_lengthMeta); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_skipPath, __pyx_v_skipTitle};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 189, __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/Scatter4D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */

  /* 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_AddTraceback("yoda.core.Scatter4D.lengthMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s4ptr().serializeContent(fixed_length)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_64serializeContent, "Scatter4D.serializeContent(self, fixed_length=False)\nData serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_65serializeContent = {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_64serializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_65serializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_fixed_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fixed_length,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((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_fixed_length);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 191, __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, "serializeContent") < 0)) __PYX_ERR(34, 191, __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_fixed_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeContent", 0, 0, 1, __pyx_nargs); __PYX_ERR(34, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_64serializeContent(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_fixed_length);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_64serializeContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_fixed_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  bool __pyx_t_2;
  std::vector<double>  __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeContent", 1);

  /* "include/generated/Scatter4D.pyx":193
 *     def serializeContent(self, fixed_length = False):
 *         """Data serialisation for MPI communication."""
 *         return self.s4ptr().serializeContent(fixed_length)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeContent(self, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fixed_length); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(34, 193, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->serializeContent(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 193, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_convert_vector_to_py_double(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s4ptr().serializeContent(fixed_length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter4D.serializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":195
 *         return self.s4ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_66deserializeContent, "Scatter4D.deserializeContent(self, data)\nData deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_67deserializeContent = {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_66deserializeContent};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_67deserializeContent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeContent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 195, __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, "deserializeContent") < 0)) __PYX_ERR(34, 195, __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_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeContent", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_66deserializeContent(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_66deserializeContent(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_data) {
  std::vector<double>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  YODA::Scatter4D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeContent", 1);

  /* "include/generated/Scatter4D.pyx":198
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s4ptr().deserializeContent(cdata)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 198, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 198, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 198, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(34, 198, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(34, 198, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter4D.pyx":199
 *         cdef vector[double] cdata
 *         cdata = [ float(x) for x in data ]
 *         self.s4ptr().deserializeContent(cdata)             # <<<<<<<<<<<<<<
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 199, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeContent(__pyx_v_cdata);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 199, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":195
 *         return self.s4ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter4D.deserializeContent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":201
 *         self.s4ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_68serializeMeta, "Scatter4D.serializeMeta(self, skipPath=True, skipTitle=True)\nMeta-data serialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_69serializeMeta = {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_68serializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_69serializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_skipPath = 0;
  PyObject *__pyx_v_skipTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("serializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_skipPath,&__pyx_n_s_skipTitle,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((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_skipPath);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 201, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skipTitle);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 201, __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, "serializeMeta") < 0)) __PYX_ERR(34, 201, __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_skipPath = values[0];
    __pyx_v_skipTitle = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("serializeMeta", 0, 0, 2, __pyx_nargs); __PYX_ERR(34, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_68serializeMeta(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_skipPath, __pyx_v_skipTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_68serializeMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_skipPath, PyObject *__pyx_v_skipTitle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter4D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::string>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serializeMeta", 1);

  /* "include/generated/Scatter4D.pyx":203
 *     def serializeMeta(self, skipPath = True, skipTitle = True):
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)             # <<<<<<<<<<<<<<
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 203, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skipPath); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(34, 203, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_skipTitle); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(34, 203, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->serializeMeta(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 203, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Scatter4D.pyx":201
 *         self.s4ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Scatter4D.serializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Scatter4D.pyx":205
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter4D_70deserializeMeta, "Scatter4D.deserializeMeta(self, data, resetPath=False, resetTitle=False)\nMeta-data deserialisation for MPI communication.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_71deserializeMeta = {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_70deserializeMeta};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_71deserializeMeta(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_resetPath = 0;
  PyObject *__pyx_v_resetTitle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deserializeMeta (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_resetPath,&__pyx_n_s_resetTitle,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    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_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 205, __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_resetPath);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 205, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_resetTitle);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 205, __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, "deserializeMeta") < 0)) __PYX_ERR(34, 205, __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_data = values[0];
    __pyx_v_resetPath = values[1];
    __pyx_v_resetTitle = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deserializeMeta", 0, 1, 3, __pyx_nargs); __PYX_ERR(34, 205, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_70deserializeMeta(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v_data, __pyx_v_resetPath, __pyx_v_resetTitle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_70deserializeMeta(struct __pyx_obj_4yoda_4core_Scatter4D *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_resetPath, PyObject *__pyx_v_resetTitle) {
  std::vector<std::string>  __pyx_v_cdata;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<std::string>  __pyx_t_6;
  YODA::Scatter4D *__pyx_t_7;
  bool __pyx_t_8;
  bool __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserializeMeta", 1);

  /* "include/generated/Scatter4D.pyx":208
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]             # <<<<<<<<<<<<<<
 *         self.s4ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 208, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 208, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 208, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(34, 208, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Str(__pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(34, 208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_convert_vector_from_py_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdata = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/generated/Scatter4D.pyx":209
 *         cdef vector[string] cdata
 *         cdata = [ str(x) for x in data ]
 *         self.s4ptr().deserializeMeta(cdata, resetPath, resetTitle)             # <<<<<<<<<<<<<<
 * 
 * ## Convenience alias
 */
  __pyx_t_7 = __pyx_f_4yoda_4core_9Scatter4D_s4ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Scatter4D *)NULL))) __PYX_ERR(34, 209, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_resetPath); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(34, 209, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_resetTitle); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(34, 209, __pyx_L1_error)
  try {
    __pyx_t_7->deserializeMeta(__pyx_v_cdata, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(34, 209, __pyx_L1_error)
  }

  /* "include/generated/Scatter4D.pyx":205
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */

  /* 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_5);
  __Pyx_AddTraceback("yoda.core.Scatter4D.deserializeMeta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __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_9Scatter4D_73__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_9Scatter4D_72__reduce_cython__, "Scatter4D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_73__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_73__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_72__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_73__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  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_9Scatter4D_72__reduce_cython__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_72__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__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__", 1);

  /* "(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(1, 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.Scatter4D.__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_9Scatter4D_75__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_9Scatter4D_74__setstate_cython__, "Scatter4D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter4D_75__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_75__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_74__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter4D_75__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 Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  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);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,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)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 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(1, 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_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("yoda.core.Scatter4D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter4D_74__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter4D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter4D_74__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter4D *__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__", 1);

  /* "(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(1, 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.Scatter4D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
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);
  }
  #if PY_MAJOR_VERSION < 3
  if (!(__pyx_ptype_4yoda_4util_Base) || PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #else
  if (PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #endif
  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},
  {"name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_21name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_20name},
  {"path", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_23path, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_22path},
  {"setPath", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_25setPath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_24setPath},
  {"title", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_27title, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_26title},
  {"setTitle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_29setTitle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_28setTitle},
  {"axisConfig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_31axisConfig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_30axisConfig},
  {"__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_51__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_53__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_55__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_57__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},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_11set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_10set},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_13numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_12numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_15effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_14effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_17sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_16sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_19sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_18sumW2},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_21val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_20val},
  {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_23err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_22err},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_25relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_24relErr},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_27scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_26scaleW},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_29mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_28mkEstimate},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_31mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_30mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_33divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_32divideBy},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_35lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_34lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_37serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_36serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_39deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_38deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_41lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_40lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_43serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_42serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_45deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_44deserializeMeta},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_59__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_58__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_61__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_60__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_47__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_7Counter_49__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_47__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_7Counter_49__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_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 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_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn0D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn0D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn0D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_4copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_6reset},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_8set},
  {"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_repr, (void *)__pyx_pw_4yoda_4core_5Dbn0D_3__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_1__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*/
  0, /*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_3__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_1__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_Estimate __pyx_vtable_4yoda_4core_Estimate;

static PyObject *__pyx_tp_new_4yoda_4core_Estimate(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Estimate *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_Estimate *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Estimate;
  return o;
}

static int __pyx_tp_traverse_4yoda_4core_Estimate(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_Estimate)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Estimate(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_Estimate);
  return 0;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Estimate_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_Estimate(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_Estimate)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_8Estimate_97__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_Estimate)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Estimate_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Estimate_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_Estimate(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_Estimate)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_8Estimate_99__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_Estimate)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Estimate_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_8Estimate_95__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_8Estimate_95__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Estimate[] = {
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_2copy},
  {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_5setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_4setVal},
  {"setErr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_8Estimate_7setErr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_6setErr},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_8set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_10reset},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_13val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_12val},
  {"valMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_15valMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_14valMax},
  {"valMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_17valMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_16valMin},
  {"errDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_19errDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_18errDownUp},
  {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_21err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_20err},
  {"errNegPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_23errNegPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_22errNegPos},
  {"errDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_25errDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_24errDown},
  {"errUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_27errUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_26errUp},
  {"errNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_29errNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_28errNeg},
  {"errPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_31errPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_30errPos},
  {"errAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_33errAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_32errAvg},
  {"errEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_35errEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_34errEnv},
  {"relErrDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_37relErrDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_36relErrDownUp},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_39relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_38relErr},
  {"relErrDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_41relErrDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_40relErrDown},
  {"relErrUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_43relErrUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_42relErrUp},
  {"relErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_45relErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_44relErrAvg},
  {"relErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_47relErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_46relErrEnv},
  {"quadSum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_49quadSum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_48quadSum},
  {"quadSumNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_51quadSumNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_50quadSumNeg},
  {"quadSumPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_53quadSumPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_52quadSumPos},
  {"quadSumAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_55quadSumAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_54quadSumAvg},
  {"quadSumEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_57quadSumEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_56quadSumEnv},
  {"totalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_59totalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_58totalErr},
  {"totalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_61totalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_60totalErrNeg},
  {"totalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_63totalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_62totalErrPos},
  {"totalErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_65totalErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_64totalErrAvg},
  {"totalErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_67totalErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_66totalErrEnv},
  {"relTotalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_69relTotalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_68relTotalErr},
  {"relTotalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_71relTotalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_70relTotalErrNeg},
  {"relTotalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_73relTotalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_72relTotalErrPos},
  {"relTotalErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_75relTotalErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_74relTotalErrAvg},
  {"relTotalErrEnv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_77relTotalErrEnv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_76relTotalErrEnv},
  {"hasSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_79hasSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_78hasSource},
  {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_81sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_80sources},
  {"numErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_83numErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_82numErrs},
  {"rmSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_85rmSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_84rmSource},
  {"rmErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_87rmErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_86rmErrs},
  {"serializeSources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_89serializeSources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_88serializeSources},
  {"deserializeSources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_91deserializeSources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_90deserializeSources},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_93scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_92scale},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_8Estimate_95__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_101__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_100__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_8Estimate_103__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8Estimate_102__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Estimate_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_8Estimate_95__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Estimate},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Estimate},
  {Py_tp_doc, (void *)PyDoc_STR("Estimate()\n\n    A point estimate, consisting of a central value and an error breakdown.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Estimate},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Estimate},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Estimate},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_8Estimate_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Estimate},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Estimate_spec = {
  "yoda.core.Estimate",
  sizeof(struct __pyx_obj_4yoda_4core_Estimate),
  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_Estimate_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Estimate = {
  __pyx_nb_add_4yoda_4core_Estimate, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Estimate, /*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_Estimate = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Estimate", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Estimate), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*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_8Estimate_95__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Estimate, /*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("Estimate()\n\n    A point estimate, consisting of a central value and an error breakdown.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Estimate, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Estimate, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Estimate, /*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_8Estimate_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Estimate, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_Estimate0D __pyx_vtable_4yoda_4core_Estimate0D;

static PyObject *__pyx_tp_new_4yoda_4core_Estimate0D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Estimate0D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Estimate0D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Estimate0D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Estimate0D_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_Estimate0D(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_Estimate0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10Estimate0D_83__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_Estimate0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Estimate0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate0D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Estimate0D_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_Estimate0D(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_Estimate0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10Estimate0D_85__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_Estimate0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Estimate0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate0D, 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_Estimate0D_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_Estimate0D(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_Estimate0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10Estimate0D_87__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_Estimate0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Estimate0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate0D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Estimate0D_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_Estimate0D(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_Estimate0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10Estimate0D_89__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_Estimate0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Estimate0D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Estimate0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Estimate0D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_10Estimate0D_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_10Estimate0D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Estimate0D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_10Estimate0D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_5clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_4clone},
  {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_7setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_6setVal},
  {"setErr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_9setErr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_8setErr},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_11set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_10set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_12reset},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_14val},
  {"errDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_17errDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_16errDownUp},
  {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_19err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_18err},
  {"errNegPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_21errNegPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_20errNegPos},
  {"errDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_23errDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_22errDown},
  {"errUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_25errUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_24errUp},
  {"errNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_27errNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_26errNeg},
  {"errPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_29errPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_28errPos},
  {"relErrDownUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_31relErrDownUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_30relErrDownUp},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_33relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_32relErr},
  {"relErrDown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_35relErrDown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_34relErrDown},
  {"relErrUp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_37relErrUp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_36relErrUp},
  {"quadSum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_39quadSum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_38quadSum},
  {"quadSumNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_41quadSumNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_40quadSumNeg},
  {"quadSumPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_43quadSumPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_42quadSumPos},
  {"totalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_45totalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_44totalErr},
  {"relTotalErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_47relTotalErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_46relTotalErr},
  {"relTotalErrNeg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_49relTotalErrNeg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_48relTotalErrNeg},
  {"relTotalErrPos", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_51relTotalErrPos, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_50relTotalErrPos},
  {"hasSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_53hasSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_52hasSource},
  {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_59sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_58sources},
  {"numErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_61numErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_60numErrs},
  {"rmSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_63rmSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_62rmSource},
  {"rmErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_65rmErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_64rmErrs},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_66lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_68serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_70deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_72lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_74serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_76deserializeMeta},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_79scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_78scale},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_81mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_80mkScatter},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_91__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_90__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10Estimate0D_93__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10Estimate0D_92__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Estimate0D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_10Estimate0D_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Estimate0D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Estimate0D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Estimate0D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_10Estimate0D_55__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_10Estimate0D_57__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Estimate0D},
  {Py_tp_doc, (void *)PyDoc_STR("Estimate0D(path='', title='')\n\n    An Estimate0D, consisting of a central value and an error breakdown.\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_Estimate0D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_10Estimate0D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Estimate0D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Estimate0D_spec = {
  "yoda.core.Estimate0D",
  sizeof(struct __pyx_obj_4yoda_4core_Estimate0D),
  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_Estimate0D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Estimate0D = {
  __pyx_nb_add_4yoda_4core_Estimate0D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Estimate0D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Estimate0D, /*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_10Estimate0D_55__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_10Estimate0D_57__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_Estimate0D, /*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_Estimate0D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Estimate0D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Estimate0D), /*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_10Estimate0D_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Estimate0D, /*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("Estimate0D(path='', title='')\n\n    An Estimate0D, consisting of a central value and an error breakdown.\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_Estimate0D, /*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_10Estimate0D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Estimate0D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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);
  }
  #if PY_MAJOR_VERSION < 3
  if (!(__pyx_ptype_4yoda_4util_Base) || PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #else
  if (PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #endif
  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},
  {"setErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_9setErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_8setErr},
  {"setErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_11setErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_10setErrs},
  {"setErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_13setErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_12setErrMinus},
  {"setErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_15setErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_14setErrPlus},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_17scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_16scale},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_18__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_20__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_Axis __pyx_vtable_4yoda_4core_Axis;

static PyObject *__pyx_tp_new_4yoda_4core_Axis(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Axis *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_Axis *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Axis;
  p->axisT = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Axis(PyObject *o) {
  struct __pyx_obj_4yoda_4core_Axis *p = (struct __pyx_obj_4yoda_4core_Axis *)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_Axis) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->axisT);
  #if PY_MAJOR_VERSION < 3
  if (!(__pyx_ptype_4yoda_4util_Base) || PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #else
  if (PyType_IS_GC(__pyx_ptype_4yoda_4util_Base)) PyObject_GC_Track(o);
  #endif
  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_Axis);
}

static int __pyx_tp_traverse_4yoda_4core_Axis(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_Axis)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Axis(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_Axis);
  return 0;
}

static PyObject *__pyx_getprop_4yoda_4core_4Axis_axisT(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_4Axis_5axisT_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_4Axis_axisT(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_4Axis_5axisT_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_4Axis_5axisT_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_4Axis_23__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_4Axis_23__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Axis[] = {
  {"_Axis__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_3_Axis__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_2__init1},
  {"_Axis__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_5_Axis__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_4__init2},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_7numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_6numBins},
  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_9type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_8type},
  {"index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_11index, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_10index},
  {"width", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_13width, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_12width},
  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_15max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_14max},
  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_17min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_16min},
  {"mid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_19mid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_18mid},
  {"edge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_21edge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_20edge},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_4Axis_23__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_25__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_24__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_4Axis_27__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_4Axis_26__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_Axis[] = {
  {(char *)"axisT", __pyx_getprop_4yoda_4core_4Axis_axisT, __pyx_setprop_4yoda_4core_4Axis_axisT, (char *)PyDoc_STR("axisT: str"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Axis_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Axis},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_4Axis_23__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Axis(*args, **kwargs)\n\n    A discrete or continuous axis, depending on the edge type.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Axis},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Axis},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Axis},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_Axis},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_4Axis_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Axis},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Axis_spec = {
  "yoda.core.Axis",
  sizeof(struct __pyx_obj_4yoda_4core_Axis),
  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_Axis_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Axis = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Axis", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Axis), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Axis, /*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_4Axis_23__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("Axis(*args, **kwargs)\n\n    A discrete or continuous axis, depending on the edge type.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Axis, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Axis, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Axis, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_Axis, /*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_4Axis_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Axis, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedEstimate1D __pyx_vtable_4yoda_4core_BinnedEstimate1D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedEstimate1D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedEstimate1D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate1D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)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_BinnedEstimate1D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedEstimate1D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedEstimate1D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedEstimate1D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedEstimate1D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate1D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedEstimate1D(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_tp_richcompare_4yoda_4core_BinnedEstimate1D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate1D_119__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate1D_121__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedEstimate1D_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_BinnedEstimate1D(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_BinnedEstimate1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate1D_111__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_BinnedEstimate1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedEstimate1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedEstimate1D_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_BinnedEstimate1D(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_BinnedEstimate1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate1D_115__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_BinnedEstimate1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedEstimate1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate1D, 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_BinnedEstimate1D_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_BinnedEstimate1D(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_BinnedEstimate1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate1D_61__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_BinnedEstimate1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedEstimate1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedEstimate1D_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_BinnedEstimate1D(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_BinnedEstimate1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate1D_63__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_BinnedEstimate1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate1D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedEstimate1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate1D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate1D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate1D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate1D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate1D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate1D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate1D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedEstimate1D[] = {
  {"_BinnedEstimate1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_2__init1},
  {"_BinnedEstimate1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_4__init2},
  {"_BinnedEstimate1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_6__init3},
  {"_BinnedEstimate1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_52maskSlice},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_56mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_58divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_64_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_66lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_68serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_70deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_72lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_74serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_76deserializeMeta},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_78vals},
  {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_80auc},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_82scale},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_84indexAt},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_86maskedBins},
  {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_88sources},
  {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_90areaUnderCurve},
  {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_92covarianceMatrix},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_94numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_96xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_98xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_100xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_102xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_104rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_106rebinXTo},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_108rebinX},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_123__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_122__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate1D_125__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate1D_124__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedEstimate1D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_16BinnedEstimate1D__config, __pyx_setprop_4yoda_4core_16BinnedEstimate1D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_16BinnedEstimate1D__binning, __pyx_setprop_4yoda_4core_16BinnedEstimate1D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedEstimate1D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedEstimate1D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedEstimate1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedEstimate1D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedEstimate1D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_113__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_117__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedEstimate1D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedEstimate1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedEstimate1D(*args, **kwargs)\n\n    BinnedEstimate1D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate1D, with optional path and title.\n\n    BinnedEstimate1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedEstimate1D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedEstimate1D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedEstimate1D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedEstimate1D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedEstimate1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedEstimate1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedEstimate1D_spec = {
  "yoda.core.BinnedEstimate1D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate1D),
  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_BinnedEstimate1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedEstimate1D = {
  __pyx_nb_add_4yoda_4core_BinnedEstimate1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedEstimate1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedEstimate1D, /*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_16BinnedEstimate1D_113__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_16BinnedEstimate1D_117__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_BinnedEstimate1D, /*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_BinnedEstimate1D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedEstimate1D, /*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_BinnedEstimate1D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate1D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_16BinnedEstimate1D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedEstimate1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedEstimate1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedEstimate1D, /*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_16BinnedEstimate1D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedEstimate1D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedEstimate1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedEstimate1D, /*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("BinnedEstimate1D(*args, **kwargs)\n\n    BinnedEstimate1D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate1D, with optional path and title.\n\n    BinnedEstimate1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedEstimate1D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedEstimate1D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedEstimate1D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_16BinnedEstimate1D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedEstimate1D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedEstimate1D, /*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_16BinnedEstimate1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedEstimate1D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedEstimate2D __pyx_vtable_4yoda_4core_BinnedEstimate2D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedEstimate2D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedEstimate2D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate2D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)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_BinnedEstimate2D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedEstimate2D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedEstimate2D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedEstimate2D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedEstimate2D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate2D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedEstimate2D(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_tp_richcompare_4yoda_4core_BinnedEstimate2D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate2D_135__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate2D_137__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedEstimate2D_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_BinnedEstimate2D(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_BinnedEstimate2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate2D_127__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_BinnedEstimate2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedEstimate2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedEstimate2D_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_BinnedEstimate2D(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_BinnedEstimate2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate2D_131__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_BinnedEstimate2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedEstimate2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate2D, 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_BinnedEstimate2D_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_BinnedEstimate2D(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_BinnedEstimate2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate2D_61__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_BinnedEstimate2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedEstimate2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedEstimate2D_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_BinnedEstimate2D(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_BinnedEstimate2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate2D_63__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_BinnedEstimate2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate2D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedEstimate2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate2D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate2D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate2D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate2D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate2D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate2D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate2D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedEstimate2D[] = {
  {"_BinnedEstimate2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_2__init1},
  {"_BinnedEstimate2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_4__init2},
  {"_BinnedEstimate2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_6__init3},
  {"_BinnedEstimate2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_52maskSlice},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_56mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_58divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_64_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_66lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_68serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_70deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_72lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_74serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_76deserializeMeta},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_78vals},
  {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_80auc},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_82scale},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_84indexAt},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_86maskedBins},
  {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_88sources},
  {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_90areaUnderCurve},
  {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_92covarianceMatrix},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_94numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_96xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_98xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_100xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_102xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_104rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_106rebinXTo},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_108rebinX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_111numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_110numBinsY},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_113yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_112yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_115yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_114yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_117yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_116yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_119yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_118yMax},
  {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_121rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_120rebinYBy},
  {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_123rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_122rebinYTo},
  {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_125rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_124rebinY},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_139__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_138__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate2D_141__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate2D_140__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedEstimate2D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_16BinnedEstimate2D__config, __pyx_setprop_4yoda_4core_16BinnedEstimate2D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_16BinnedEstimate2D__binning, __pyx_setprop_4yoda_4core_16BinnedEstimate2D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedEstimate2D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedEstimate2D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedEstimate2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedEstimate2D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedEstimate2D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_129__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_133__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedEstimate2D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedEstimate2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedEstimate2D(*args, **kwargs)\n\n    BinnedEstimate2D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate2D, with optional path and title.\n\n    BinnedEstimate2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedEstimate2D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedEstimate2D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedEstimate2D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedEstimate2D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedEstimate2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedEstimate2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedEstimate2D_spec = {
  "yoda.core.BinnedEstimate2D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate2D),
  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_BinnedEstimate2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedEstimate2D = {
  __pyx_nb_add_4yoda_4core_BinnedEstimate2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedEstimate2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedEstimate2D, /*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_16BinnedEstimate2D_129__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_16BinnedEstimate2D_133__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_BinnedEstimate2D, /*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_BinnedEstimate2D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedEstimate2D, /*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_BinnedEstimate2D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate2D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_16BinnedEstimate2D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedEstimate2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedEstimate2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedEstimate2D, /*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_16BinnedEstimate2D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedEstimate2D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedEstimate2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedEstimate2D, /*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("BinnedEstimate2D(*args, **kwargs)\n\n    BinnedEstimate2D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate2D, with optional path and title.\n\n    BinnedEstimate2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedEstimate2D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedEstimate2D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedEstimate2D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_16BinnedEstimate2D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedEstimate2D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedEstimate2D, /*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_16BinnedEstimate2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedEstimate2D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedEstimate3D __pyx_vtable_4yoda_4core_BinnedEstimate3D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedEstimate3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate3D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedEstimate3D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedEstimate3D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedEstimate3D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)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_BinnedEstimate3D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedEstimate3D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedEstimate3D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedEstimate3D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedEstimate3D *p = (struct __pyx_obj_4yoda_4core_BinnedEstimate3D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedEstimate3D(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_tp_richcompare_4yoda_4core_BinnedEstimate3D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate3D_151__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_16BinnedEstimate3D_153__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedEstimate3D_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_BinnedEstimate3D(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_BinnedEstimate3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate3D_143__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_BinnedEstimate3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedEstimate3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedEstimate3D_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_BinnedEstimate3D(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_BinnedEstimate3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate3D_147__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_BinnedEstimate3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedEstimate3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate3D, 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_BinnedEstimate3D_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_BinnedEstimate3D(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_BinnedEstimate3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate3D_61__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_BinnedEstimate3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedEstimate3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedEstimate3D_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_BinnedEstimate3D(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_BinnedEstimate3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_16BinnedEstimate3D_63__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_BinnedEstimate3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedEstimate3D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedEstimate3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedEstimate3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate3D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate3D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate3D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_16BinnedEstimate3D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_16BinnedEstimate3D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_16BinnedEstimate3D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate3D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_16BinnedEstimate3D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedEstimate3D[] = {
  {"_BinnedEstimate3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_2__init1},
  {"_BinnedEstimate3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_4__init2},
  {"_BinnedEstimate3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_6__init3},
  {"_BinnedEstimate3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_16BinnedEstimate3D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_52maskSlice},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_57mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_56mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_59divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_58divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_65_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_64_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_67lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_66lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_69serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_68serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_71deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_70deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_73lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_72lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_75serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_74serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_77deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_76deserializeMeta},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_79vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_78vals},
  {"auc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_81auc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_80auc},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_83scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_82scale},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_84indexAt},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_87maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_86maskedBins},
  {"sources", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_89sources, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_88sources},
  {"areaUnderCurve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_90areaUnderCurve},
  {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_92covarianceMatrix},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_95numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_94numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_96xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_98xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_101xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_100xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_103xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_102xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_105rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_104rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_107rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_106rebinXTo},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_109rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_108rebinX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_111numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_110numBinsY},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_113yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_112yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_115yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_114yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_117yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_116yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_119yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_118yMax},
  {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_121rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_120rebinYBy},
  {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_123rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_122rebinYTo},
  {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_125rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_124rebinY},
  {"numBinsZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_127numBinsZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_126numBinsZ},
  {"zEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_129zEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_128zEdges},
  {"zWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_131zWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_130zWidths},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_133zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_132zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_135zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_134zMax},
  {"rebinZBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_137rebinZBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_136rebinZBy},
  {"rebinZTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_139rebinZTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_138rebinZTo},
  {"rebinZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_141rebinZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_140rebinZ},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_155__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_154__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_16BinnedEstimate3D_157__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16BinnedEstimate3D_156__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedEstimate3D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_16BinnedEstimate3D__config, __pyx_setprop_4yoda_4core_16BinnedEstimate3D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_16BinnedEstimate3D__binning, __pyx_setprop_4yoda_4core_16BinnedEstimate3D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedEstimate3D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedEstimate3D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedEstimate3D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedEstimate3D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedEstimate3D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_145__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_149__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedEstimate3D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedEstimate3D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedEstimate3D(*args, **kwargs)\n\n    BinnedEstimate3D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate3D[AxisT1,AxisT2,AxisT3](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate3D, with optional path and title.\n\n    BinnedEstimate3D[AxisT1,AxisT2,AxisT3](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate3D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedEstimate3D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedEstimate3D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedEstimate3D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedEstimate3D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedEstimate3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_16BinnedEstimate3D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedEstimate3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedEstimate3D_spec = {
  "yoda.core.BinnedEstimate3D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate3D),
  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_BinnedEstimate3D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedEstimate3D = {
  __pyx_nb_add_4yoda_4core_BinnedEstimate3D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedEstimate3D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedEstimate3D, /*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_16BinnedEstimate3D_145__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_16BinnedEstimate3D_149__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_BinnedEstimate3D, /*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_BinnedEstimate3D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedEstimate3D, /*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_BinnedEstimate3D = {
  __pyx_pw_4yoda_4core_16BinnedEstimate3D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_16BinnedEstimate3D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedEstimate3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedEstimate3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedEstimate3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedEstimate3D, /*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_16BinnedEstimate3D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedEstimate3D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedEstimate3D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedEstimate3D, /*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("BinnedEstimate3D(*args, **kwargs)\n\n    BinnedEstimate3D, i.e. a collection of Estimate objects.\n\n    Constructor calling idioms:\n\n    BinnedEstimate3D[AxisT1,AxisT2,AxisT3](path=\"\", title=\"\")\n      Create a new empty BinnedEstimate3D, with optional path and title.\n\n    BinnedEstimate3D[AxisT1,AxisT2,AxisT3](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedEstimate3D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedEstimate3D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedEstimate3D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedEstimate3D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_16BinnedEstimate3D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedEstimate3D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedEstimate3D, /*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_16BinnedEstimate3D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedEstimate3D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedHisto1D __pyx_vtable_4yoda_4core_BinnedHisto1D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedHisto1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedHisto1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedHisto1D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedHisto1D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedHisto1D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto1D *)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_BinnedHisto1D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedHisto1D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedHisto1D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto1D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedHisto1D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedHisto1D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto1D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedHisto1D(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_tp_richcompare_4yoda_4core_BinnedHisto1D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_13BinnedHisto1D_153__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_13BinnedHisto1D_155__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedHisto1D_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_BinnedHisto1D(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_BinnedHisto1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto1D_145__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_BinnedHisto1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedHisto1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedHisto1D_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_BinnedHisto1D(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_BinnedHisto1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto1D_149__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_BinnedHisto1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedHisto1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto1D, 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_BinnedHisto1D_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_BinnedHisto1D(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_BinnedHisto1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto1D_63__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_BinnedHisto1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedHisto1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedHisto1D_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_BinnedHisto1D(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_BinnedHisto1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto1D_65__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_BinnedHisto1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto1D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedHisto1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto1D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto1D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto1D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto1D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto1D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto1D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto1D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_13BinnedHisto1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedHisto1D[] = {
  {"_BinnedHisto1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_2__init1},
  {"_BinnedHisto1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_4__init2},
  {"_BinnedHisto1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_6__init3},
  {"_BinnedHisto1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_52maskSlice},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_56mkEstimate},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_58mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_60divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_66_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_68lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_70serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_72deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_74lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_76serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_78deserializeMeta},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_80fill},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_82indexAt},
  {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_84fillDim},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_86normalize},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_88scaleW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_90sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_92sumW2},
  {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_94sumWA},
  {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_96sumWA2},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_98numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_100effNumEntries},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_102integral},
  {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_104integralError},
  {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_106dVol},
  {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_108density},
  {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_110densityError},
  {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_112densitySum},
  {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_114maxDensity},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_116maskedBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_118numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_120xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_122xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_124xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_126xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_128rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_130rebinXTo},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_132xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_134xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_136xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_138xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_140xRMS},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_142rebinX},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_157__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_156__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto1D_159__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto1D_158__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedHisto1D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_13BinnedHisto1D__config, __pyx_setprop_4yoda_4core_13BinnedHisto1D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_13BinnedHisto1D__binning, __pyx_setprop_4yoda_4core_13BinnedHisto1D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedHisto1D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedHisto1D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedHisto1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedHisto1D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedHisto1D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_147__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_151__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedHisto1D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedHisto1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedHisto1D(*args, **kwargs)\n\n    BinnedHisto1D, i.e. a collection of Dbn1D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedHisto1D, with optional path and title.\n\n    BinnedHisto1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedHisto1D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedHisto1D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedHisto1D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedHisto1D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedHisto1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_13BinnedHisto1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedHisto1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedHisto1D_spec = {
  "yoda.core.BinnedHisto1D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto1D),
  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_BinnedHisto1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedHisto1D = {
  __pyx_nb_add_4yoda_4core_BinnedHisto1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedHisto1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedHisto1D, /*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_13BinnedHisto1D_147__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_13BinnedHisto1D_151__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_BinnedHisto1D, /*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_BinnedHisto1D = {
  __pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedHisto1D, /*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_BinnedHisto1D = {
  __pyx_pw_4yoda_4core_13BinnedHisto1D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_13BinnedHisto1D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedHisto1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedHisto1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedHisto1D, /*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_13BinnedHisto1D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedHisto1D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedHisto1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedHisto1D, /*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("BinnedHisto1D(*args, **kwargs)\n\n    BinnedHisto1D, i.e. a collection of Dbn1D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedHisto1D, with optional path and title.\n\n    BinnedHisto1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedHisto1D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedHisto1D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedHisto1D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_13BinnedHisto1D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedHisto1D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedHisto1D, /*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_13BinnedHisto1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedHisto1D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedHisto2D __pyx_vtable_4yoda_4core_BinnedHisto2D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedHisto2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedHisto2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedHisto2D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedHisto2D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedHisto2D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto2D *)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_BinnedHisto2D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedHisto2D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedHisto2D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto2D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedHisto2D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedHisto2D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto2D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedHisto2D(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_tp_richcompare_4yoda_4core_BinnedHisto2D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_13BinnedHisto2D_179__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_13BinnedHisto2D_181__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedHisto2D_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_BinnedHisto2D(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_BinnedHisto2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto2D_171__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_BinnedHisto2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedHisto2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedHisto2D_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_BinnedHisto2D(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_BinnedHisto2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto2D_175__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_BinnedHisto2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedHisto2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto2D, 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_BinnedHisto2D_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_BinnedHisto2D(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_BinnedHisto2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto2D_63__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_BinnedHisto2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedHisto2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedHisto2D_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_BinnedHisto2D(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_BinnedHisto2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto2D_65__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_BinnedHisto2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto2D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedHisto2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto2D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto2D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto2D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto2D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto2D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto2D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto2D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_13BinnedHisto2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedHisto2D[] = {
  {"_BinnedHisto2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_2__init1},
  {"_BinnedHisto2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_4__init2},
  {"_BinnedHisto2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_6__init3},
  {"_BinnedHisto2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_52maskSlice},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_56mkEstimate},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_58mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_60divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_66_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_68lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_70serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_72deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_74lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_76serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_78deserializeMeta},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_80fill},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_82indexAt},
  {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_84fillDim},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_86normalize},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_88scaleW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_90sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_92sumW2},
  {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_94sumWA},
  {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_96sumWA2},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_98numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_100effNumEntries},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_102integral},
  {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_104integralError},
  {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_106dVol},
  {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_108density},
  {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_110densityError},
  {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_112densitySum},
  {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_114maxDensity},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_116maskedBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_118numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_120xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_122xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_124xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_126xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_128rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_130rebinXTo},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_132xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_134xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_136xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_138xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_140xRMS},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_142rebinX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_145numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_144numBinsY},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_147yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_146yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_149yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_148yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_151yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_150yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_153yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_152yMax},
  {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_155rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_154rebinYBy},
  {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_157rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_156rebinYTo},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_159yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_158yMean},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_161yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_160yVariance},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_163yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_162yStdDev},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_165yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_164yStdErr},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_167yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_166yRMS},
  {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_169rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_168rebinY},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_183__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_182__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto2D_185__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto2D_184__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedHisto2D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_13BinnedHisto2D__config, __pyx_setprop_4yoda_4core_13BinnedHisto2D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_13BinnedHisto2D__binning, __pyx_setprop_4yoda_4core_13BinnedHisto2D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedHisto2D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedHisto2D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedHisto2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedHisto2D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedHisto2D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_173__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_177__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedHisto2D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedHisto2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedHisto2D(*args, **kwargs)\n\n    BinnedHisto2D, i.e. a collection of Dbn2D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedHisto2D, with optional path and title.\n\n    BinnedHisto2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedHisto2D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedHisto2D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedHisto2D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedHisto2D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedHisto2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_13BinnedHisto2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedHisto2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedHisto2D_spec = {
  "yoda.core.BinnedHisto2D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto2D),
  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_BinnedHisto2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedHisto2D = {
  __pyx_nb_add_4yoda_4core_BinnedHisto2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedHisto2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedHisto2D, /*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_13BinnedHisto2D_173__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_13BinnedHisto2D_177__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_BinnedHisto2D, /*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_BinnedHisto2D = {
  __pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedHisto2D, /*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_BinnedHisto2D = {
  __pyx_pw_4yoda_4core_13BinnedHisto2D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_13BinnedHisto2D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedHisto2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedHisto2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedHisto2D, /*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_13BinnedHisto2D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedHisto2D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedHisto2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedHisto2D, /*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("BinnedHisto2D(*args, **kwargs)\n\n    BinnedHisto2D, i.e. a collection of Dbn2D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedHisto2D, with optional path and title.\n\n    BinnedHisto2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedHisto2D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedHisto2D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedHisto2D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_13BinnedHisto2D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedHisto2D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedHisto2D, /*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_13BinnedHisto2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedHisto2D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedHisto3D __pyx_vtable_4yoda_4core_BinnedHisto3D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedHisto3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedHisto3D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedHisto3D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedHisto3D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedHisto3D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedHisto3D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto3D *)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_BinnedHisto3D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedHisto3D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedHisto3D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto3D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedHisto3D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedHisto3D *p = (struct __pyx_obj_4yoda_4core_BinnedHisto3D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedHisto3D(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_tp_richcompare_4yoda_4core_BinnedHisto3D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_13BinnedHisto3D_205__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_13BinnedHisto3D_207__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedHisto3D_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_BinnedHisto3D(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_BinnedHisto3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto3D_197__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_BinnedHisto3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedHisto3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedHisto3D_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_BinnedHisto3D(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_BinnedHisto3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto3D_201__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_BinnedHisto3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedHisto3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto3D, 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_BinnedHisto3D_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_BinnedHisto3D(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_BinnedHisto3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto3D_63__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_BinnedHisto3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedHisto3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedHisto3D_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_BinnedHisto3D(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_BinnedHisto3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_13BinnedHisto3D_65__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_BinnedHisto3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedHisto3D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedHisto3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedHisto3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto3D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto3D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto3D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_13BinnedHisto3D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_13BinnedHisto3D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_13BinnedHisto3D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto3D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_13BinnedHisto3D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedHisto3D[] = {
  {"_BinnedHisto3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_2__init1},
  {"_BinnedHisto3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_4__init2},
  {"_BinnedHisto3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_6__init3},
  {"_BinnedHisto3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_13BinnedHisto3D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_52maskSlice},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_56mkEstimate},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_59mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_58mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_61divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_60divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_66_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_69lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_68lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_71serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_70serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_73deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_72deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_75lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_74lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_77serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_76serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_79deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_78deserializeMeta},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_81fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_80fill},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_83indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_82indexAt},
  {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_85fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_84fillDim},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_87normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_86normalize},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_89scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_88scaleW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_91sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_90sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_93sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_92sumW2},
  {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_95sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_94sumWA},
  {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_97sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_96sumWA2},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_99numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_98numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_101effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_100effNumEntries},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_103integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_102integral},
  {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_105integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_104integralError},
  {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_107dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_106dVol},
  {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_109density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_108density},
  {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_111densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_110densityError},
  {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_113densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_112densitySum},
  {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_115maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_114maxDensity},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_117maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_116maskedBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_119numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_118numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_121xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_120xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_123xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_122xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_125xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_124xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_127xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_126xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_129rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_128rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_131rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_130rebinXTo},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_133xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_132xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_135xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_134xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_137xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_136xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_139xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_138xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_141xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_140xRMS},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_143rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_142rebinX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_145numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_144numBinsY},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_147yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_146yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_149yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_148yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_151yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_150yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_153yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_152yMax},
  {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_155rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_154rebinYBy},
  {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_157rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_156rebinYTo},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_159yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_158yMean},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_161yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_160yVariance},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_163yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_162yStdDev},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_165yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_164yStdErr},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_167yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_166yRMS},
  {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_169rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_168rebinY},
  {"numBinsZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_171numBinsZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_170numBinsZ},
  {"zEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_173zEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_172zEdges},
  {"zWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_175zWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_174zWidths},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_177zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_176zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_179zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_178zMax},
  {"rebinZBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_181rebinZBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_180rebinZBy},
  {"rebinZTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_183rebinZTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_182rebinZTo},
  {"zMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_185zMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_184zMean},
  {"zVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_187zVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_186zVariance},
  {"zStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_189zStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_188zStdDev},
  {"zStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_191zStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_190zStdErr},
  {"zRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_193zRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_192zRMS},
  {"rebinZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_195rebinZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_194rebinZ},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_209__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_208__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13BinnedHisto3D_211__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_13BinnedHisto3D_210__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedHisto3D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_13BinnedHisto3D__config, __pyx_setprop_4yoda_4core_13BinnedHisto3D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_13BinnedHisto3D__binning, __pyx_setprop_4yoda_4core_13BinnedHisto3D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedHisto3D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedHisto3D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedHisto3D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedHisto3D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedHisto3D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_199__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_203__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedHisto3D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedHisto3D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedHisto3D(*args, **kwargs)\n\n    BinnedHisto3D, i.e. a collection of Dbn3D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto3D[AxisT1,AxisT2,AxisT3](path=\"\", title=\"\")\n      Create a new empty BinnedHisto3D, with optional path and title.\n\n    BinnedHisto3D[AxisT1,AxisT2,AxisT3](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto3D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedHisto3D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedHisto3D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedHisto3D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedHisto3D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedHisto3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_13BinnedHisto3D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedHisto3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedHisto3D_spec = {
  "yoda.core.BinnedHisto3D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto3D),
  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_BinnedHisto3D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedHisto3D = {
  __pyx_nb_add_4yoda_4core_BinnedHisto3D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedHisto3D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedHisto3D, /*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_13BinnedHisto3D_199__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_13BinnedHisto3D_203__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_BinnedHisto3D, /*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_BinnedHisto3D = {
  __pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedHisto3D, /*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_BinnedHisto3D = {
  __pyx_pw_4yoda_4core_13BinnedHisto3D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_13BinnedHisto3D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedHisto3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedHisto3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedHisto3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedHisto3D, /*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_13BinnedHisto3D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedHisto3D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedHisto3D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedHisto3D, /*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("BinnedHisto3D(*args, **kwargs)\n\n    BinnedHisto3D, i.e. a collection of Dbn3D objects.\n\n    Constructor calling idioms:\n\n    BinnedHisto3D[AxisT1,AxisT2,AxisT3](path=\"\", title=\"\")\n      Create a new empty BinnedHisto3D, with optional path and title.\n\n    BinnedHisto3D[AxisT1,AxisT2,AxisT3](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedHisto3D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedHisto3D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedHisto3D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedHisto3D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_13BinnedHisto3D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedHisto3D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedHisto3D, /*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_13BinnedHisto3D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedHisto3D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedProfile1D __pyx_vtable_4yoda_4core_BinnedProfile1D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedProfile1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedProfile1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedProfile1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedProfile1D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedProfile1D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedProfile1D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile1D *)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_BinnedProfile1D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedProfile1D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedProfile1D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile1D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedProfile1D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedProfile1D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile1D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedProfile1D(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_tp_richcompare_4yoda_4core_BinnedProfile1D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_15BinnedProfile1D_155__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_15BinnedProfile1D_157__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedProfile1D_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_BinnedProfile1D(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_BinnedProfile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile1D_147__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_BinnedProfile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedProfile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedProfile1D_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_BinnedProfile1D(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_BinnedProfile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile1D_151__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_BinnedProfile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedProfile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile1D, 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_BinnedProfile1D_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_BinnedProfile1D(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_BinnedProfile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile1D_65__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_BinnedProfile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedProfile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedProfile1D_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_BinnedProfile1D(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_BinnedProfile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile1D_67__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_BinnedProfile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedProfile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_15BinnedProfile1D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_15BinnedProfile1D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_15BinnedProfile1D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_15BinnedProfile1D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_15BinnedProfile1D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_15BinnedProfile1D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_15BinnedProfile1D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_15BinnedProfile1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedProfile1D[] = {
  {"_BinnedProfile1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_2__init1},
  {"_BinnedProfile1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_4__init2},
  {"_BinnedProfile1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_6__init3},
  {"_BinnedProfile1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_15BinnedProfile1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_52maskSlice},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_56mkEstimate},
  {"mkHisto", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_59mkHisto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_58mkHisto},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_61mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_60mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_63divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_62divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_69_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_68_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_71lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_70lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_73serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_72serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_75deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_74deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_77lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_76lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_79serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_78serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_81deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_80deserializeMeta},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_83fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_82fill},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_84indexAt},
  {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_87fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_86fillDim},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_89normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_88normalize},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_91scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_90scaleW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_93sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_92sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_95sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_94sumW2},
  {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_97sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_96sumWA},
  {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_99sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_98sumWA2},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_101numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_100numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_103effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_102effNumEntries},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_105integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_104integral},
  {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_107integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_106integralError},
  {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_109dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_108dVol},
  {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_111density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_110density},
  {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_113densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_112densityError},
  {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_115densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_114densitySum},
  {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_117maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_116maxDensity},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_119maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_118maskedBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_121numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_120numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_123xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_122xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_125xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_124xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_127xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_126xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_129xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_128xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_131rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_130rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_133rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_132rebinXTo},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_135xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_134xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_137xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_136xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_139xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_138xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_141xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_140xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_143xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_142xRMS},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_145rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_144rebinX},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_159__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_158__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile1D_161__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile1D_160__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedProfile1D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_15BinnedProfile1D__config, __pyx_setprop_4yoda_4core_15BinnedProfile1D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_15BinnedProfile1D__binning, __pyx_setprop_4yoda_4core_15BinnedProfile1D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedProfile1D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedProfile1D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedProfile1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedProfile1D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedProfile1D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_149__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_153__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedProfile1D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedProfile1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedProfile1D(*args, **kwargs)\n\n    BinnedProfile1D, i.e. a collection of Dbn2D objects.\n\n    Constructor calling idioms:\n\n    BinnedProfile1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedProfile1D, with optional path and title.\n\n    BinnedProfile1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedProfile1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedProfile1D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedProfile1D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedProfile1D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedProfile1D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedProfile1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_15BinnedProfile1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedProfile1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedProfile1D_spec = {
  "yoda.core.BinnedProfile1D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedProfile1D),
  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_BinnedProfile1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedProfile1D = {
  __pyx_nb_add_4yoda_4core_BinnedProfile1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedProfile1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedProfile1D, /*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_15BinnedProfile1D_149__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_15BinnedProfile1D_153__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_BinnedProfile1D, /*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_BinnedProfile1D = {
  __pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedProfile1D, /*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_BinnedProfile1D = {
  __pyx_pw_4yoda_4core_15BinnedProfile1D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_15BinnedProfile1D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedProfile1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedProfile1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedProfile1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedProfile1D, /*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_15BinnedProfile1D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedProfile1D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedProfile1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedProfile1D, /*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("BinnedProfile1D(*args, **kwargs)\n\n    BinnedProfile1D, i.e. a collection of Dbn2D objects.\n\n    Constructor calling idioms:\n\n    BinnedProfile1D[AxisT](path=\"\", title=\"\")\n      Create a new empty BinnedProfile1D, with optional path and title.\n\n    BinnedProfile1D[AxisT](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedProfile1D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedProfile1D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedProfile1D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedProfile1D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_15BinnedProfile1D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedProfile1D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedProfile1D, /*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_15BinnedProfile1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedProfile1D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_BinnedProfile2D __pyx_vtable_4yoda_4core_BinnedProfile2D;

static PyObject *__pyx_tp_new_4yoda_4core_BinnedProfile2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_BinnedProfile2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_BinnedProfile2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_BinnedProfile2D;
  p->_config = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_binning = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_BinnedProfile2D(PyObject *o) {
  struct __pyx_obj_4yoda_4core_BinnedProfile2D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile2D *)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_BinnedProfile2D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_config);
  Py_CLEAR(p->_binning);
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject(o);
}

static int __pyx_tp_traverse_4yoda_4core_BinnedProfile2D(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core_BinnedProfile2D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile2D *)o;
  e = __pyx_tp_traverse_4yoda_4core_AnalysisObject(o, v, a); if (e) return e;
  if (p->_binning) {
    e = (*v)(p->_binning, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_BinnedProfile2D(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core_BinnedProfile2D *p = (struct __pyx_obj_4yoda_4core_BinnedProfile2D *)o;
  __pyx_tp_clear_4yoda_4core_AnalysisObject(o);
  tmp = ((PyObject*)p->_binning);
  p->_binning = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4yoda_4core_BinnedProfile2D(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_tp_richcompare_4yoda_4core_BinnedProfile2D(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_4yoda_4core_15BinnedProfile2D_181__eq__(o1, o2);
    }
    case Py_NE: {
      return __pyx_pw_4yoda_4core_15BinnedProfile2D_183__ne__(o1, o2);
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_BinnedProfile2D_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_BinnedProfile2D(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_BinnedProfile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile2D_173__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_BinnedProfile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_BinnedProfile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_BinnedProfile2D_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_BinnedProfile2D(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_BinnedProfile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile2D_177__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_BinnedProfile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_BinnedProfile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile2D, 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_BinnedProfile2D_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_BinnedProfile2D(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_BinnedProfile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile2D_65__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_BinnedProfile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_BinnedProfile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_BinnedProfile2D_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_BinnedProfile2D(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_BinnedProfile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_15BinnedProfile2D_67__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_BinnedProfile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_BinnedProfile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_BinnedProfile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_BinnedProfile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_getprop_4yoda_4core_15BinnedProfile2D__config(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_15BinnedProfile2D__config(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_15BinnedProfile2D_7_config_5__del__(o);
  }
}

static PyObject *__pyx_getprop_4yoda_4core_15BinnedProfile2D__binning(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_1__get__(o);
}

static int __pyx_setprop_4yoda_4core_15BinnedProfile2D__binning(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_3__set__(o, v);
  }
  else {
    return __pyx_pw_4yoda_4core_15BinnedProfile2D_8_binning_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_15BinnedProfile2D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_15BinnedProfile2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_BinnedProfile2D[] = {
  {"_BinnedProfile2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_2__init1},
  {"_BinnedProfile2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_4__init2},
  {"_BinnedProfile2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_6__init3},
  {"_BinnedProfile2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_8__init4},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_15BinnedProfile2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"_set_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_15_set_config, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_14_set_config},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_16clone},
  {"localToGlobalIndex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_18localToGlobalIndex},
  {"_global_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_21_global_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_20_global_set},
  {"_local_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_23_local_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_22_local_set},
  {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_25set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_24set},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_27reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_26reset},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_29numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_28numBins},
  {"isMasked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_31isMasked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_30isMasked},
  {"isVisible", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_33isVisible, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_32isVisible},
  {"binDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_35binDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_34binDim},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_39bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_38bins},
  {"_bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_41_bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_40_bin},
  {"bin", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_43bin, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_42bin},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_45binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_44binAt},
  {"maskBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_47maskBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_46maskBin},
  {"maskBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_49maskBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_48maskBins},
  {"maskBinAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_51maskBinAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_50maskBinAt},
  {"maskSlice", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_53maskSlice, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_52maskSlice},
  {"mkEstimate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_57mkEstimate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_56mkEstimate},
  {"mkHisto", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_59mkHisto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_58mkHisto},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_61mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_60mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_63divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_62divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_69_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_68_mknp},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_71lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_70lengthContent},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_73serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_72serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_75deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_74deserializeContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_77lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_76lengthMeta},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_79serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_78serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_81deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_80deserializeMeta},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_83fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_82fill},
  {"indexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_85indexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_84indexAt},
  {"fillDim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_87fillDim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_86fillDim},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_89normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_88normalize},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_91scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_90scaleW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_93sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_92sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_95sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_94sumW2},
  {"sumWA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_97sumWA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_96sumWA},
  {"sumWA2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_99sumWA2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_98sumWA2},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_101numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_100numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_103effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_102effNumEntries},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_105integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_104integral},
  {"integralError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_107integralError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_106integralError},
  {"dVol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_109dVol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_108dVol},
  {"density", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_111density, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_110density},
  {"densityError", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_113densityError, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_112densityError},
  {"densitySum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_115densitySum, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_114densitySum},
  {"maxDensity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_117maxDensity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_116maxDensity},
  {"maskedBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_119maskedBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_118maskedBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_121numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_120numBinsX},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_123xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_122xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_125xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_124xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_127xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_126xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_129xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_128xMax},
  {"rebinXBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_131rebinXBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_130rebinXBy},
  {"rebinXTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_133rebinXTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_132rebinXTo},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_135xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_134xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_137xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_136xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_139xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_138xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_141xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_140xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_143xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_142xRMS},
  {"rebinX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_145rebinX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_144rebinX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_147numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_146numBinsY},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_149yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_148yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_151yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_150yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_153yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_152yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_155yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_154yMax},
  {"rebinYBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_157rebinYBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_156rebinYBy},
  {"rebinYTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_159rebinYTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_158rebinYTo},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_161yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_160yMean},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_163yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_162yVariance},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_165yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_164yStdDev},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_167yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_166yStdErr},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_169yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_168yRMS},
  {"rebinY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_171rebinY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_170rebinY},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_185__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_184__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15BinnedProfile2D_187__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_15BinnedProfile2D_186__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4yoda_4core_BinnedProfile2D[] = {
  {(char *)"_config", __pyx_getprop_4yoda_4core_15BinnedProfile2D__config, __pyx_setprop_4yoda_4core_15BinnedProfile2D__config, (char *)PyDoc_STR("_config: str"), 0},
  {(char *)"_binning", __pyx_getprop_4yoda_4core_15BinnedProfile2D__binning, __pyx_setprop_4yoda_4core_15BinnedProfile2D__binning, (char *)PyDoc_STR("_binning: object"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_BinnedProfile2D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_BinnedProfile2D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_BinnedProfile2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_BinnedProfile2D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_BinnedProfile2D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_175__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_179__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_BinnedProfile2D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_BinnedProfile2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_55__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("BinnedProfile2D(*args, **kwargs)\n\n    BinnedProfile2D, i.e. a collection of Dbn3D objects.\n\n    Constructor calling idioms:\n\n    BinnedProfile2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedProfile2D, with optional path and title.\n\n    BinnedProfile2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedProfile2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_BinnedProfile2D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_BinnedProfile2D},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_4yoda_4core_BinnedProfile2D},
  {Py_tp_iter, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_11__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_BinnedProfile2D},
  {Py_tp_getset, (void *)__pyx_getsets_4yoda_4core_BinnedProfile2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_15BinnedProfile2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_BinnedProfile2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_BinnedProfile2D_spec = {
  "yoda.core.BinnedProfile2D",
  sizeof(struct __pyx_obj_4yoda_4core_BinnedProfile2D),
  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_BinnedProfile2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_BinnedProfile2D = {
  __pyx_nb_add_4yoda_4core_BinnedProfile2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_BinnedProfile2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_BinnedProfile2D, /*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_15BinnedProfile2D_175__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_15BinnedProfile2D_179__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_BinnedProfile2D, /*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_BinnedProfile2D = {
  __pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_BinnedProfile2D, /*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_BinnedProfile2D = {
  __pyx_pw_4yoda_4core_15BinnedProfile2D_37__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_15BinnedProfile2D_55__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_BinnedProfile2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""BinnedProfile2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_BinnedProfile2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_BinnedProfile2D, /*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_15BinnedProfile2D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_BinnedProfile2D, /*tp_as_number*/
  &__pyx_tp_as_sequence_BinnedProfile2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_BinnedProfile2D, /*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("BinnedProfile2D(*args, **kwargs)\n\n    BinnedProfile2D, i.e. a collection of Dbn3D objects.\n\n    Constructor calling idioms:\n\n    BinnedProfile2D[AxisT1,AxisT2](path=\"\", title=\"\")\n      Create a new empty BinnedProfile2D, with optional path and title.\n\n    BinnedProfile2D[AxisT1,AxisT2](edges, path=\"\", title=\"\"):\n      Create a new empty BinnedProfile2D from an iterable of bin edges, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_BinnedProfile2D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_BinnedProfile2D, /*tp_clear*/
  __pyx_tp_richcompare_4yoda_4core_BinnedProfile2D, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_4yoda_4core_15BinnedProfile2D_11__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_BinnedProfile2D, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4yoda_4core_BinnedProfile2D, /*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_15BinnedProfile2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_BinnedProfile2D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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 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_39__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_41__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_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn1D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn1D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn1D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_4copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_6reset},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_8set},
  {"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},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_14scale},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_16numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_18effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_20sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_22sumW2},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_24errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_26relErrW},
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_28mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_30variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_32stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_34stdErr},
  {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_36RMS},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_42scaleX},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_44xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_46xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_48xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_50xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_52xRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_54sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_56sumWX2},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_59__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_58__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_61__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_60__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn1D_3__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_1__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*/
  0, /*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_3__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_1__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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 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_39__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_41__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_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn2D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn2D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn2D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_4copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_6reset},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_8set},
  {"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},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_14scale},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_16numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_18effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_20sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_22sumW2},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_24errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_26relErrW},
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_28mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_30variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_32stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_34stdErr},
  {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_36RMS},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_42scaleX},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_44xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_46xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_48xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_50xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_52xRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_54sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_56sumWX2},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_59scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_58scaleY},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_61yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_60yMean},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_63yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_62yVariance},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_65yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_64yStdDev},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_67yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_66yStdErr},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_68yRMS},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_71sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_70sumWY},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_73sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_72sumWY2},
  {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_75crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_74crossTerm},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_77__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_76__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_79__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_78__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn2D_3__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 their bins.\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_1__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*/
  0, /*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_3__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 their bins.\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_1__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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 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_39__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_41__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_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn3D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn3D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn3D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_5copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_4copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_6reset},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_9set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_8set},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_10fill},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_12scaleW},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_15scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_14scale},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_17numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_16numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_19effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_18effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_21sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_20sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_23sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_22sumW2},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_25errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_24errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_27relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_26relErrW},
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_29mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_28mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_31variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_30variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_33stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_32stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_35stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_34stdErr},
  {"RMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_37RMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_36RMS},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_42scaleX},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_45xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_44xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_47xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_46xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_49xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_48xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_50xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_53xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_52xRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_55sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_54sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_57sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_56sumWX2},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_59scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_58scaleY},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_61yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_60yMean},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_63yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_62yVariance},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_65yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_64yStdDev},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_67yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_66yStdErr},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_68yRMS},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_71sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_70sumWY},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_73sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_72sumWY2},
  {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_75crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_74crossTerm},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_77scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_76scaleZ},
  {"zMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_79zMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_78zMean},
  {"zVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_81zVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_80zVariance},
  {"zStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_83zStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_82zStdDev},
  {"zStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_85zStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_84zStdErr},
  {"zRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_87zRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_86zRMS},
  {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_89sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_88sumWZ},
  {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_91sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_90sumWZ2},
  {"crossTerm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_93crossTerm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_92crossTerm},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_95__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_94__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_97__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_96__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn3D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn3D_3__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 3D histograms and their bins.\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_1__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*/
  0, /*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_3__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 3D histograms and their bins.\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_1__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point1D[] = {
  {"_Point1D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_3_Point1D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_2__init1},
  {"_Point1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_5_Point1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_4__init2},
  {"_Point1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_7_Point1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_6__init3},
  {"_Point1D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_9_Point1D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_8__init4},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_10copy},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_14val},
  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_16max},
  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_18min},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_20errs},
  {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_24setXErrs},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_26x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_28setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_30xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_32xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_34xMax},
  {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_36xErrMinus},
  {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_38xErrPlus},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_40xErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_42scaleX},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_45__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_44__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_47__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_46__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_13__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point1D(*args, **kwargs)\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_23__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_13__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(*args, **kwargs)\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_23__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point2D[] = {
  {"_Point2D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_3_Point2D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_2__init1},
  {"_Point2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_5_Point2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_4__init2},
  {"_Point2D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_7_Point2D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_6__init3},
  {"_Point2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_9_Point2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_8__init4},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_10copy},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_14val},
  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_16max},
  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_18min},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_20errs},
  {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_24setXErrs},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_26x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_28setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_30xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_32xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_34xMax},
  {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_36xErrMinus},
  {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_38xErrPlus},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_40xErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_42scaleX},
  {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_45setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_44setYErrs},
  {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_47y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_46y},
  {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_49setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_48setY},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_51yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_50yErrs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_53yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_52yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_55yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_54yMax},
  {"yErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_57yErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_56yErrMinus},
  {"yErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_59yErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_58yErrPlus},
  {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_61yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_60yErrAvg},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_63scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_62scaleY},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_65__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_64__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_67__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_66__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_13__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point2D(*args, **kwargs)\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_23__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_13__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(*args, **kwargs)\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_23__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point3D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point3D[] = {
  {"_Point3D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_3_Point3D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_2__init1},
  {"_Point3D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_5_Point3D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_4__init2},
  {"_Point3D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_7_Point3D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_6__init3},
  {"_Point3D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_9_Point3D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_8__init4},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_11copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_10copy},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point3D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_15val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_14val},
  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_17max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_16max},
  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_19min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_18min},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_21errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_20errs},
  {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_25setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_24setXErrs},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_27x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_26x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_29setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_28setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_31xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_30xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_33xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_32xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_35xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_34xMax},
  {"xErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_37xErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_36xErrMinus},
  {"xErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_39xErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_38xErrPlus},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_41xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_40xErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_43scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_42scaleX},
  {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_45setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_44setYErrs},
  {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_47y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_46y},
  {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_49setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_48setY},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_51yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_50yErrs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_53yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_52yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_55yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_54yMax},
  {"yErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_57yErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_56yErrMinus},
  {"yErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_59yErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_58yErrPlus},
  {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_61yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_60yErrAvg},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_63scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_62scaleY},
  {"setZErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_65setZErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_64setZErrs},
  {"z", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_67z, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_66z},
  {"setZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_69setZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_68setZ},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_71zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_70zErrs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_73zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_72zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_75zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_74zMax},
  {"zErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_77zErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_76zErrMinus},
  {"zErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_79zErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_78zErrPlus},
  {"zErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_81zErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_80zErrAvg},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_83scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_82scaleZ},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_85__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_84__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_87__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_86__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_13__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point3D(*args, **kwargs)\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_23__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_13__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(*args, **kwargs)\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_23__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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_Point4D __pyx_vtable_4yoda_4core_Point4D;

static PyObject *__pyx_tp_new_4yoda_4core_Point4D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Point4D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Point(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Point4D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Point4D;
  return o;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Point4D_9__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point4D_9__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point4D[] = {
  {"_Point4D__init1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_3_Point4D__init1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_2__init1},
  {"_Point4D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_5_Point4D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_4__init2},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_6copy},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point4D_9__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_11val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_10val},
  {"max", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_13max, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_12max},
  {"min", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_15min, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_14min},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_17errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_16errs},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_20__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point4D_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point4D_22__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Point4D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Point4D_9__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point4D(*args, **kwargs)\n\n    A 4D point with errors, used by the Scatter4D 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_7Point4D_19__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Point4D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Point4D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Point4D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Point4D_spec = {
  "yoda.core.Point4D",
  sizeof(struct __pyx_obj_4yoda_4core_Point4D),
  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_Point4D_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Point4D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Point4D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Point4D), /*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_7Point4D_9__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("Point4D(*args, **kwargs)\n\n    A 4D point with errors, used by the Scatter4D class.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Point, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Point, /*tp_clear*/
  __pyx_pw_4yoda_4core_7Point4D_19__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Point4D, /*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_7Point4D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Point4D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_11__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter1D_11__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter1D[] = {
  {"_Scatter1D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_2__init_1},
  {"_Scatter1D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_4__init_2},
  {"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_11__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_12reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_14numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_18points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_20point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_24addPoint},
  {"_Scatter1D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_explicit},
  {"_Scatter1D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_29_Scatter1D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_28__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_30addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_32rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_34rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_36combineWith},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_38_mknp},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_40mkScatter},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_42scale},
  {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_44scaleVal},
  {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_46scaleErr},
  {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_48edges},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_50vals},
  {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_52mins},
  {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_54maxs},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_56errs},
  {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_58errAvgs},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_60lengthContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_62lengthMeta},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_64serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_66deserializeContent},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_68serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_70deserializeMeta},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_72scaleX},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_74xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_76xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_78xMaxs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_80xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_82xMax},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_84xErrs},
  {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_86xErrAvgs},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_88__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_90__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_11__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter1D_17__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter1D_17__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter1D_23__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_iter, (void *)__pyx_pw_4yoda_4core_9Scatter1D_9__iter__},
  {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_17__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_17__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter1D_23__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_11__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*/
  __pyx_pw_4yoda_4core_9Scatter1D_9__iter__, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_11__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter2D_11__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter2D[] = {
  {"_Scatter2D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_2__init_1},
  {"_Scatter2D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_4__init_2},
  {"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_11__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_12reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_14numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_18points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_20point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_24addPoint},
  {"_Scatter2D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_explicit},
  {"_Scatter2D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_29_Scatter2D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_28__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_30addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_32rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_34rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_36combineWith},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_38_mknp},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_40mkScatter},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_42scale},
  {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_44scaleVal},
  {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_46scaleErr},
  {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_48edges},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_50vals},
  {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_52mins},
  {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_54maxs},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_56errs},
  {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_58errAvgs},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_60lengthContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_62lengthMeta},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_64serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_66deserializeContent},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_68serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_70deserializeMeta},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_72scaleX},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_74xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_76xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_78xMaxs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_80xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_82xMax},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_84xErrs},
  {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_86xErrAvgs},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_89scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_88scaleY},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_91yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_90yVals},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_93yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_92yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_95yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_94yMaxs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_97yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_96yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_99yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_98yMax},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_101yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_100yErrs},
  {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_103yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_102yErrAvgs},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_105__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_104__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_107__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_106__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_11__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter2D_17__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter2D_17__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter2D_23__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_iter, (void *)__pyx_pw_4yoda_4core_9Scatter2D_9__iter__},
  {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_17__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_17__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter2D_23__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_11__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*/
  __pyx_pw_4yoda_4core_9Scatter2D_9__iter__, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_11__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter3D_11__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter3D[] = {
  {"_Scatter3D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_2__init_1},
  {"_Scatter3D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_4__init_2},
  {"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_11__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_12reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_14numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_18points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_20point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_24addPoint},
  {"_Scatter3D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_explicit},
  {"_Scatter3D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_29_Scatter3D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_28__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_30addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_32rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_34rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_36combineWith},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_38_mknp},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_40mkScatter},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_42scale},
  {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_44scaleVal},
  {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_46scaleErr},
  {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_48edges},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_50vals},
  {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_52mins},
  {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_54maxs},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_56errs},
  {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_58errAvgs},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_60lengthContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_62lengthMeta},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_64serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_66deserializeContent},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_68serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_70deserializeMeta},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_73scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_72scaleX},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_75xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_74xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_77xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_76xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_79xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_78xMaxs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_81xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_80xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_83xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_82xMax},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_85xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_84xErrs},
  {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_87xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_86xErrAvgs},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_89scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_88scaleY},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_91yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_90yVals},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_93yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_92yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_95yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_94yMaxs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_97yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_96yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_99yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_98yMax},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_101yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_100yErrs},
  {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_103yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_102yErrAvgs},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_105scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_104scaleZ},
  {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_107zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_106zVals},
  {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_109zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_108zMins},
  {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_111zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_110zMaxs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_113zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_112zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_115zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_114zMax},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_117zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_116zErrs},
  {"zErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_119zErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_118zErrAvgs},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_121__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_120__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_123__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_122__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_11__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter3D_17__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter3D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter3D_17__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter3D_23__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_iter, (void *)__pyx_pw_4yoda_4core_9Scatter3D_9__iter__},
  {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_17__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_17__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter3D_23__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_11__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*/
  __pyx_pw_4yoda_4core_9Scatter3D_9__iter__, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_Scatter4D __pyx_vtable_4yoda_4core_Scatter4D;

static PyObject *__pyx_tp_new_4yoda_4core_Scatter4D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Scatter4D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Scatter4D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Scatter4D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Scatter4D(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_9Scatter4D_11__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter4D_11__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter4D[] = {
  {"_Scatter4D__init_1", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_3_Scatter4D__init_1, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_2__init_1},
  {"_Scatter4D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_5_Scatter4D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_4__init_2},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_6clone},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter4D_11__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_13reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_12reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_15numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_14numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_19points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_18points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_21point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_20point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_25addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_24addPoint},
  {"_Scatter4D__addPoint_explicit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_26__addPoint_explicit},
  {"_Scatter4D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_29_Scatter4D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_28__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_31addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_30addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_33rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_32rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_35rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_34rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_37combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_36combineWith},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_39_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_38_mknp},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_41mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_40mkScatter},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_43scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_42scale},
  {"scaleVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_45scaleVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_44scaleVal},
  {"scaleErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_47scaleErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_46scaleErr},
  {"edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_49edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_48edges},
  {"vals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_51vals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_50vals},
  {"mins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_53mins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_52mins},
  {"maxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_55maxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_54maxs},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_57errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_56errs},
  {"errAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_59errAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_58errAvgs},
  {"lengthContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_61lengthContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_60lengthContent},
  {"lengthMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_63lengthMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_62lengthMeta},
  {"serializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_65serializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_64serializeContent},
  {"deserializeContent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_67deserializeContent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_66deserializeContent},
  {"serializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_69serializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_68serializeMeta},
  {"deserializeMeta", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_71deserializeMeta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_70deserializeMeta},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_73__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_72__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter4D_75__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter4D_74__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Scatter4D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Scatter4D_11__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter4D_17__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter4D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter4D_17__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter4D_23__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Scatter4D(*args, **kwargs)\n\n    4D scatter plot, i.e. a collection of Point4D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter4D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter4D(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_iter, (void *)__pyx_pw_4yoda_4core_9Scatter4D_9__iter__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Scatter4D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Scatter4D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Scatter4D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Scatter4D_spec = {
  "yoda.core.Scatter4D",
  sizeof(struct __pyx_obj_4yoda_4core_Scatter4D),
  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_Scatter4D_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Scatter4D = {
  __pyx_pw_4yoda_4core_9Scatter4D_17__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Scatter4D, /*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_Scatter4D = {
  __pyx_pw_4yoda_4core_9Scatter4D_17__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter4D_23__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Scatter4D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Scatter4D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Scatter4D), /*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_9Scatter4D_11__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Scatter4D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Scatter4D, /*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("Scatter4D(*args, **kwargs)\n\n    4D scatter plot, i.e. a collection of Point4D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter4D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter4D(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*/
  __pyx_pw_4yoda_4core_9Scatter4D_9__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Scatter4D, /*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_9Scatter4D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Scatter4D, /*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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_a);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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_a) {
    e = (*v)(p->__pyx_v_a, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, 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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_x);
  #if CYTHON_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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_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_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_5_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_5_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_5_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_5_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_5_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_5_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    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_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_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_5_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_5_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_5_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_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_5_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_5_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_5_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_5_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_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_5_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_5_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5_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_5_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_5_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_x);
  #if CYTHON_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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_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_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
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;
#endif

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_USE_FREELISTS
  if (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
  #endif
  {
    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_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_x);
  #if CYTHON_USE_FREELISTS
  if (((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
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

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_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_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_8_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_8_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_8_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_8_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_8_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_8_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_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_8_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_8_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_8_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_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_8_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_8_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_8_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_8_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_8_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_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_8_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_8_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_8_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_8_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_8_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_9_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_9_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_9_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_9_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_9_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_9_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_9_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_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_9_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_9_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_9_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_9_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_9_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_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_9_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_9_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_9_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_9_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_9_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_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_9_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_9_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_9_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_9_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_9_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_9_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_10_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_10_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_10_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_10_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_10_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_10_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_10_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_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_10_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_10_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_10_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_10_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_10_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_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_10_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_10_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_10_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_10_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_10_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_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_10_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_10_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_10_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_10_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_10_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_10_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_11_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_11_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_11_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_11_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_11_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_11_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_11_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_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_11_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_11_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_11_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_11_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_11_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_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_11_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_11_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_11_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_11_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_11_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_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_11_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_11_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_11_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_11_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_11_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_11_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_12_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_12_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_12_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_12_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_12_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_12_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_12_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_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_12_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_12_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_12_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_12_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_12_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_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_12_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_12_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_12_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_12_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_12_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_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_12_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_12_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_12_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_12_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_12_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_12_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_13_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_13_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_13_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_13_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_13_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_13_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_13_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_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_13_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_13_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_13_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_13_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_13_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_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_13_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_13_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_13_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_13_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_13_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_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_13_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_13_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_13_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_13_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_13_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_13_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_14_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_14_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_14_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_14_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_14_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_14_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_14_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_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_14_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_14_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_14_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_14_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_14_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_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_14_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_14_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_14_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_14_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_14_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_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_14_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_14_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_14_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_14_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_14_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_14_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_15_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_15_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_15_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_15_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_15_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_15_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_15_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_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_15_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_15_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_15_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_15_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_15_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_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_15_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_15_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_15_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_15_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_15_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_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_15_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_15_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_15_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_15_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_15_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_15_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_16_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_16_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_16_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_16_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_16_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_16_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_16_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_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_16_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_16_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_16_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_16_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_16_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_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_16_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_16_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_16_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_16_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_16_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_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_16_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_16_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_16_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_16_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_16_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_16_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_17_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_17_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_17_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_17_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_17_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_17_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_17_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_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_17_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_17_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_17_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_17_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_17_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_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_17_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_17_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_17_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_17_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_17_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_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_17_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_17_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_17_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_17_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_17_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_17_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_18_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_18_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_18_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_18_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_18_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_18_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_18_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_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_18_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_18_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_18_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_18_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_18_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_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_18_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_18_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_18_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_18_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_18_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_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_18_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_18_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_18_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_18_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_18_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_18_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_19_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_19_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_19_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_19_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_19_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_19_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_19_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_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_19_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_19_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_19_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_19_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_19_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_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_19_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_19_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_19_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_19_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_19_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_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_19_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_19_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_19_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_19_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_19_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_19_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_20_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_20_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_20_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_20_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_20_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_20_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_20_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_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_20_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_20_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_20_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_20_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_20_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_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_20_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_20_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_20_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_20_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_20_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_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_20_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_20_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_20_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_20_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_20_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_20_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_21_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_21_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_21_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_21_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_21_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_21_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_21_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_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_21_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_21_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_21_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_21_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_21_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_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_21_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_21_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_21_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_21_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_21_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_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_21_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_21_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_21_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_21_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_21_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_21_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_22_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_22_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_22_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_22_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_22_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_22_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_22_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_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_22_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_22_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_22_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_22_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_22_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_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_22_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_22_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_22_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_22_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_22_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_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_22_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_22_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_22_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_22_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_22_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_22_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_23_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_23_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_23_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_23_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_23_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_23_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_23_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_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_23_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_23_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_23_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_23_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_23_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_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_23_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_23_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_23_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_23_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_23_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_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_23_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_23_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_23_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_23_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_23_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_23_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_24_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_24_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_24_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_24_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_24_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_24_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_24_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_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_24_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_24_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_24_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_24_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_24_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_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_24_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_24_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_24_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_24_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_24_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_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_24_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_24_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_24_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_24_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_24_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_24_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_25_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_25_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_25_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_25_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_25_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_25_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_25_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_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_25_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_25_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_25_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_25_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_25_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_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_25_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_25_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_25_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_25_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_25_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_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_25_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_25_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_25_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_25_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_25_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_25_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_26_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_26_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_26_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_26_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_26_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_26_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_26_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_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_26_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_26_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_26_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_26_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_26_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_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_26_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_26_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_26_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_26_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_26_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_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_26_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_26_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_26_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_26_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_26_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_26_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_27_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_27_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_27_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_27_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_27_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_27_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_27_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_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_27_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_27_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_27_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_27_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_27_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_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_27_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_27_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_27_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_27_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_27_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_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_27_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_27_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_27_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_27_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_27_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_27_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_28_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_28_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_28_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_28_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_28_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_28_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_28_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_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_28_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_28_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_28_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_28_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_28_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_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_28_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_28_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_28_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_28_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_28_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_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_28_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_28_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_28_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_28_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_28_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_28_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_29_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_29_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_29_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_29_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_29_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_29_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_29_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_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_29_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_29_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_29_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_29_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_29_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_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_29_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_29_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_29_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_29_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_29_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_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_29_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_29_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_29_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_29_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_29_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_29_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_30_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_30_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_30_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_30_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_30_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_30_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_30_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_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_30_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_30_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_30_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_30_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_30_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_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_30_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_30_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_30_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_30_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_30_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_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_30_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_30_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_30_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_30_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_30_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_30_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_31_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_31_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_31_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_31_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_31_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_31_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_31_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_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_31_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_31_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_31_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_31_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_31_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_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_31_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_31_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_31_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_31_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_31_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_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_31_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_31_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_31_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_31_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_31_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_31_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_32_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_32_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_32_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_32_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_32_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_32_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_32_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_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_32_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_32_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_32_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_32_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_32_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_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_32_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_32_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_32_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_32_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_32_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_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_32_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_32_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_32_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_32_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_32_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_32_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_33_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_33_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_33_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_33_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_33_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_33_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_33_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_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_33_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_33_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_33_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_33_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_33_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_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_33_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_33_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_33_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_33_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_33_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_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_33_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_33_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_33_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_33_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_33_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_33_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_34_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_34_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_34_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_34_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_34_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_34_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_34_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_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_34_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_34_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_34_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_34_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_34_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_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_34_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_34_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_34_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_34_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_34_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_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_34_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_34_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_34_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_34_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_34_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_34_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_35_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_35_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_35_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_35_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_35_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_35_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_35_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_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_35_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_35_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_35_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_35_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_35_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_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_35_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_35_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_35_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_35_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_35_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_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_35_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_35_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_35_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_35_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_35_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_35_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_36_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_36_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_36_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_36_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_36_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_36_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_36_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_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_36_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_36_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_36_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_36_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_36_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_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_36_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_36_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_36_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_36_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_36_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_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_36_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_36_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_36_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_36_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_36_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_36_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_37_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_37_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_37_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_37_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_37_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_37_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_37_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_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_37_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_37_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_37_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_37_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_37_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_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_37_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_37_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_37_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_37_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_37_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_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_37_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_37_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_37_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_37_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_37_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_37_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_38_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_38_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_38_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_38_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_38_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_38_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_38_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_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_38_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_38_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_38_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_38_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_38_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_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_38_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_38_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_38_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_38_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_38_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_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_38_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_38_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_38_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_38_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_38_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_38_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_39_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_39_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_39_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_39_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_39_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_39_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_39_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_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_39_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_39_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_39_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_39_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_39_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_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_39_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_39_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_39_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_39_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_39_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_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_39_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_39_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_39_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_39_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_39_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_39_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_40_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_40_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_40_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_40_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_40_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_40_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_40_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_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_40_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_40_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_40_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_40_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_40_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_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_40_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_40_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_40_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_40_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_40_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_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_40_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_40_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_40_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_40_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_40_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_40_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_41_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_41_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_41_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_41_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_41_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_41_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_41_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_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_41_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_41_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_41_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_41_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_41_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_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_41_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_41_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_41_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_41_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_41_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_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_41_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_41_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_41_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_41_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_41_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_41_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_42_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_42_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_42_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_42_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_42_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_42_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_42_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_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_42_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_42_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_42_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_42_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_42_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_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_42_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_42_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_42_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_42_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_42_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_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_42_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_42_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_42_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_42_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_42_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_42_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_43_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_43_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_43_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_43_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_43_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_43_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_43_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_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_43_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_43_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_43_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_43_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_43_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_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_43_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_43_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_43_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_43_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_43_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_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_43_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_43_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_43_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_43_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_43_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_43_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_44_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_44_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_44_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_44_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_44_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_44_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_44_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_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_44_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_44_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_44_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_44_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_44_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_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_44_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_44_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_44_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_44_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_44_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_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_44_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_44_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_44_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_44_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_44_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_44_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_45_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_45_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_45_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_45_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_45_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_45_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_45_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_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_45_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_45_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_45_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_45_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_45_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_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_45_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_45_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_45_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_45_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_45_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_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_45_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_45_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_45_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_45_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_45_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_45_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_46_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_46_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_46_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_46_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_46_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_46_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_46_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_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_46_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_46_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_46_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_46_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_46_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_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_46_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_46_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_46_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_46_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_46_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_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_46_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_46_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_46_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_46_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_46_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_46_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_47_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_47_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_47_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_47_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_47_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_47_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_47_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_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_47_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_47_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_47_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_47_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_47_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_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_47_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_47_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_47_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_47_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_47_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_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_47_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_47_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_47_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_47_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_47_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_47_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_48_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_48_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_48_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_48_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_48_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_48_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_48_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_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_48_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_48_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_48_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_48_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_48_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_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_48_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_48_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_48_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_48_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_48_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_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_48_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_48_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_48_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_48_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_48_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_48_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_49_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_49_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_49_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_49_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_49_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_49_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_49_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_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_49_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_49_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_49_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_49_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_49_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_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_49_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_49_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_49_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_49_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_49_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_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_49_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_49_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_49_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_49_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_49_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_49_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_50_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_50_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_50_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_50_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_50_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_50_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_50_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_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_50_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_50_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_50_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_50_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_50_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_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_50_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_50_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_50_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_50_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_50_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_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_50_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_50_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_50_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_50_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_50_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_50_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_51_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_51_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_51_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_51_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_51_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_51_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_51_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_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_51_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_51_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_51_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_51_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_51_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_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_51_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_51_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_51_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_51_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_51_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_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_51_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_51_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_51_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_51_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_51_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_51_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_52_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_52_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_52_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_52_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_52_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_52_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_52_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_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_52_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_52_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_52_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_52_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_52_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_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_52_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_52_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_52_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_52_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_52_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_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_52_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_52_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_52_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_52_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_52_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_52_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_53_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_53_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_53_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_53_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_53_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_53_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_53_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_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_53_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_53_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_53_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_53_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_53_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_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_53_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_53_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_53_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_53_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_53_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_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_53_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_53_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_53_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_53_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_53_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_53_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_54_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_54_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_54_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_54_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_54_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_54_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_54_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_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_54_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_54_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_54_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_54_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_54_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_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_54_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_54_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_54_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_54_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_54_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_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_54_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_54_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_54_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_54_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_54_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_54_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_55_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_55_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_55_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_55_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_55_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_55_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_55_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_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_55_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_55_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_55_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_55_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_55_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_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_55_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_55_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_55_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_55_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_55_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_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_55_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_55_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_55_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_55_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_55_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_55_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_56_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_56_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_56_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_56_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_56_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_56_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_56_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_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_56_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_56_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_56_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_56_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_56_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_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_56_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_56_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_56_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_56_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_56_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_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_56_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_56_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_56_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_56_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_56_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_56_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_57_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_57_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_57_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_57_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_57_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_57_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_57_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_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_57_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_57_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_57_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_57_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_57_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_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_57_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_57_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_57_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_57_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_57_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_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_57_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_57_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_57_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_57_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_57_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_57_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_58_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_58_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_58_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_58_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_58_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_58_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_58_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_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_58_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_58_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_58_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_58_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_58_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_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_58_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_58_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_58_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_58_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_58_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_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_58_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_58_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_58_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_58_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_58_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_58_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_59_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_59_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_59_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_59_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_59_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_59_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_59_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_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_59_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_59_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_59_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_59_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_59_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_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_59_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_59_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_59_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_59_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_59_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_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_59_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_59_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_59_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_59_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_59_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_59_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_60_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_60_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_60_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_60_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_60_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_60_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_60_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_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_60_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_60_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_60_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_60_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_60_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_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_60_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_60_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_60_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_60_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_60_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_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_60_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_60_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_60_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_60_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_60_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_60_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_61_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_61_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_61_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_61_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_61_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_61_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_61_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_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_61_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_61_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_61_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_61_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_61_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_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_61_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_61_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_61_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_61_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_61_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_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_61_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_61_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_61_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_61_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_61_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_61_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_62_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_62_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_62_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_62_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_62_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_62_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_62_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_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_62_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_62_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_62_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_62_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_62_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_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_62_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_62_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_62_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_62_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_62_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_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_62_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_62_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_62_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_62_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_62_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_62_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_63_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_63_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_63_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_63_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_63_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_63_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_63_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_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_63_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_63_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_63_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_63_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_63_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_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_63_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_63_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_63_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_63_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_63_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_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_63_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_63_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_63_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_63_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_63_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_63_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_64_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_64_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_64_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_64_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_64_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_64_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_64_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_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_64_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_64_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_64_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_64_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_64_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_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_64_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_64_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_64_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_64_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_64_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_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_64_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_64_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_64_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_64_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_64_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_64_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_65_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_65_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_65_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_65_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_65_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_65_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_65_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_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_65_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_65_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_65_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_65_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_65_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_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_65_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_65_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_65_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_65_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_65_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_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_65_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_65_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_65_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_65_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_65_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_65_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_66_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_66_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_66_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_66_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_66_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_66_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_66_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_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_66_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_66_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_66_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_66_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_66_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_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_66_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_66_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_66_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_66_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_66_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_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_66_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_66_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_66_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_66_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_66_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_66_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_67_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_67_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_67_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_67_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_67_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_67_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_67_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_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_67_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_67_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_67_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_67_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_67_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_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_67_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_67_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_67_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_67_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_67_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_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_67_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_67_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_67_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_67_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_67_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_67_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_68_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_68_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_68_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_68_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_68_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_68_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_68_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_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_68_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_68_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_68_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_68_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_68_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_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_68_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_68_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_68_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_68_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_68_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_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_68_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_68_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_68_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_68_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_68_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_68_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_69_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_69_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_69_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_69_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_69_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_69_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_69_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_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_69_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_69_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_69_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_69_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_69_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_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_69_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_69_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_69_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_69_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_69_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_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_69_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_69_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_69_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_69_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_69_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_69_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_70_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_70_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_70_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_70_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_70_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_70_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_70_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_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_70_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_70_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_70_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_70_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_70_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_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_70_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_70_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_70_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_70_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_70_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_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_70_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_70_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_70_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_70_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_70_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_70_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_71_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_71_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_71_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_71_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_71_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_71_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_71_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_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_71_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_71_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_71_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_71_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_71_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_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_71_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_71_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_71_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_71_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_71_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_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_71_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_71_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_71_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_71_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_71_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_71_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_72_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_72_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_72_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_72_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_72_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_72_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_72_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_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_72_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_72_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_72_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_72_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_72_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_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_72_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_72_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_72_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_72_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_72_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_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_72_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_72_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_72_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_72_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_72_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_72_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_73_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_73_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_73_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_73_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_73_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_73_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_73_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_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_73_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_73_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_73_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_73_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_73_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_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_73_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_73_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_73_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_73_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_73_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_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_73_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_73_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_73_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_73_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_73_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_73_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_74_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_74_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_74_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_74_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_74_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_74_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_74_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_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_74_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_74_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_74_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_74_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_74_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_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_74_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_74_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_74_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_74_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_74_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_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_74_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_74_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_74_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_74_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_74_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_74_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_75_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_75_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_75_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_75_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_75_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_75_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_75_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_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_75_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_75_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_75_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_75_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_75_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_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_75_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_75_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_75_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_75_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_75_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_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_75_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_75_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_75_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_75_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_75_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_75_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_76_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_76_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_76_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_76_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_76_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_76_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_76_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_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_76_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_76_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_76_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_76_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_76_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_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_76_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_76_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_76_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_76_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_76_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_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_76_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_76_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_76_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_76_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_76_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_76_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_77_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_77_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_77_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_77_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_77_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_77_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_77_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_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_77_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_77_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_77_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_77_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_77_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_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_77_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_77_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_77_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_77_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_77_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_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_77_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_77_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_77_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_77_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_77_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_77_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_78_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_78_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_78_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_78_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_78_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_78_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_78_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_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_78_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_78_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_78_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_78_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_78_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_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_78_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_78_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_78_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_78_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_78_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_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_78_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_78_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_78_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_78_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_78_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_78_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_79_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_79_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_79_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_79_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_79_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_79_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_79_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_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_79_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_79_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_79_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_79_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_79_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_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_79_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_79_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_79_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_79_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_79_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_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_79_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_79_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_79_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_79_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_79_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_79_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_80_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_80_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_80_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_80_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_80_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_80_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_80_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_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_80_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_80_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_80_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_80_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_80_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_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_80_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_80_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_80_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_80_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_80_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_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_80_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_80_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_80_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_80_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_80_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_80_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_81_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_81_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_81_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_81_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_81_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_81_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_81_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_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_81_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_81_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_81_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_81_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_81_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_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_81_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_81_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_81_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_81_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_81_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_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_81_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_81_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_81_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_81_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_81_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_81_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_82_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_82_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_82_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_82_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_82_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_82_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_82_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_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_82_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_82_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_82_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_82_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_82_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_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_82_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_82_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_82_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_82_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_82_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_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_82_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_82_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_82_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_82_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_82_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_82_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_83_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_83_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_83_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_83_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_83_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_83_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_83_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_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_83_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_83_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_83_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_83_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_83_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_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_83_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_83_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_83_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_83_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_83_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_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_83_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_83_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_83_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_83_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_83_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_83_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_84_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_84_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_84_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_84_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_84_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_84_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_84_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_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_84_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_84_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_84_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_84_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_84_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_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_84_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_84_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_84_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_84_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_84_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_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_84_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_84_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_84_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_84_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_84_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_84_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_85_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_85_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_85_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_85_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_85_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_85_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_85_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_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_85_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_85_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_85_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_85_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_85_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_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_85_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_85_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_85_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_85_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_85_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_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_85_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_85_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_85_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_85_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_85_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_85_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_86_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_86_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_86_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_86_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_86_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_86_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_86_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_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_86_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_86_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_86_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_86_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_86_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_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_86_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_86_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_86_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_86_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_86_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_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_86_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_86_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_86_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_86_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_86_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_86_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_87_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_87_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_87_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_87_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_87_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_87_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_87_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_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_87_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_87_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_87_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_87_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_87_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_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_87_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_87_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_87_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_87_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_87_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_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_87_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_87_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_87_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_87_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_87_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_87_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_88_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_88_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_88_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_88_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_88_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_88_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_88_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_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_88_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_88_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_88_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_88_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_88_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_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_88_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_88_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_88_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_88_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_88_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_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_88_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_88_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_88_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_88_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_88_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_88_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_89_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_89_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_89_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_89_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_89_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_89_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_89_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_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_89_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_89_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_89_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_89_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_89_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_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_89_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_89_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_89_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_89_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_89_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_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_89_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_89_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_89_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_89_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_89_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_89_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_90_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_90_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_90_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_90_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_90_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_90_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_90_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_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_90_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_90_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_90_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_90_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_90_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_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_90_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_90_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_90_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_90_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_90_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_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_90_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_90_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_90_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_90_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_90_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_90_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_91_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_91_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_91_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_91_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_91_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_91_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_91_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_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_91_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_91_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_91_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_91_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_91_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_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_91_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_91_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_91_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_91_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_91_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_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_91_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_91_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_91_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_91_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_91_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_91_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_92_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_92_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_92_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_92_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_92_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_92_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_92_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_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_92_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_92_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_92_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_92_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_92_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_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_92_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_92_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_92_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_92_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_92_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_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_92_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_92_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_92_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_92_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_92_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_92_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_93_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_93_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_93_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_93_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_93_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_93_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_93_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_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_93_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_93_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_93_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_93_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_93_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_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_93_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_93_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_93_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_93_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_93_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_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_93_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_93_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_93_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_93_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_93_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_93_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_94_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_94_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_94_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_94_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_94_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_94_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_94_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_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_94_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_94_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_94_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_94_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_94_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_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_94_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_94_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_94_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_94_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_94_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_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_94_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_94_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_94_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_94_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_94_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_94_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_95_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_95_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_95_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_95_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_95_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_95_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_95_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_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_95_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_95_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_95_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_95_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_95_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_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_95_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_95_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_95_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_95_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_95_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_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_95_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_95_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_95_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_95_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_95_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_95_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_96_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_96_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_96_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_96_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_96_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_96_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_96_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_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_96_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_96_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_96_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_96_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_96_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_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_96_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_96_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_96_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_96_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_96_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_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_96_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_96_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_96_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_96_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_96_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_96_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_97_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_97_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_97_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_97_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_97_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_97_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_97_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_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_97_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_97_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_97_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_97_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_97_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_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_97_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_97_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_97_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_97_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_97_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_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_97_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_97_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_97_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_97_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_97_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_97_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_98_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_98_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_98_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_98_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_98_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_98_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_98_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_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_98_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_98_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_98_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_98_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_98_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_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_98_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_98_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_98_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_98_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_98_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_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_98_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_98_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_98_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_98_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_98_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_98_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_99_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_99_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_99_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_99_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_99_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_99_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_99_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_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_99_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_99_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_99_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_99_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_99_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_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_99_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_99_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_99_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_99_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_99_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_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_99_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_99_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_99_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_99_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_99_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_99_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_100_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_100_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_100_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_100_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_100_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_100_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_100_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_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_100_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_100_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_100_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_100_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_100_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_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_100_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_100_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_100_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_100_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_100_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_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_100_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_100_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_100_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_100_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_100_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_100_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_101_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_101_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_101_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_101_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_101_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_101_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_101_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_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_101_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_101_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_101_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_101_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_101_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_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_101_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_101_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_101_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_101_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_101_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_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_101_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_101_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_101_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_101_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_101_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_101_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_102_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_102_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_102_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_102_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_102_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_102_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_102_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_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_102_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_102_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_102_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_102_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_102_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_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_102_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_102_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_102_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_102_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_102_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_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_102_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_102_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_102_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_102_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_102_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_102_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_103_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_103_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_103_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_103_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_103_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_103_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_103_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_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_103_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_103_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_103_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_103_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_103_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_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_103_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_103_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_103_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_103_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_103_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_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_103_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_103_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_103_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_103_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_103_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_103_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_104_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_104_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_104_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_104_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_104_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_104_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_104_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_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_104_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_104_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_104_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_104_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_104_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_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_104_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_104_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_104_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_104_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_104_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_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_104_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_104_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_104_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_104_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_104_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_104_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_105_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_105_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_105_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_105_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_105_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_105_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_105_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_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_105_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_105_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_105_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_105_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_105_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_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_105_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_105_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_105_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_105_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_105_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_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_105_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_105_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_105_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_105_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_105_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_105_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_106_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_106_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_106_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_106_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_106_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_106_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_106_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_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_106_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_106_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_106_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_106_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_106_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_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_106_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_106_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_106_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_106_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_106_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_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_106_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_106_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_106_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_106_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_106_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_106_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_107_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_107_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_107_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_107_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_107_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_107_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_107_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_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_107_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_107_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_107_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_107_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_107_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_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_107_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_107_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_107_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_107_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_107_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_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_107_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_107_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_107_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_107_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_107_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_107_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_108_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_108_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_108_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_108_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_108_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_108_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_108_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_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_108_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_108_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_108_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_108_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_108_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_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_108_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_108_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_108_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_108_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_108_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_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_108_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_108_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_108_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_108_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_108_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_108_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_109_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_109_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_109_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_109_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_109_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_109_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_109_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_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_109_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_109_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_109_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_109_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_109_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_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_109_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_109_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_109_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_109_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_109_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_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_109_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_109_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_109_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_109_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_109_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_109_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_110_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_110_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_110_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_110_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_110_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_110_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_110_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_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_110_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_110_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_110_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_110_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_110_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_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_110_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_110_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_110_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_110_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_110_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_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_110_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_110_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_110_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_110_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_110_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_110_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_111_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_111_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_111_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_111_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_111_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_111_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_111_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_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_111_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_111_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_111_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_111_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_111_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_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_111_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_111_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_111_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_111_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_111_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_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_111_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_111_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_111_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_111_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_111_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_111_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_112_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_112_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_112_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_112_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_112_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_112_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_112_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_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_112_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_112_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_112_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_112_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_112_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_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_112_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_112_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_112_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_112_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_112_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_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_112_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_112_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_112_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_112_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_112_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_112_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_113_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_113_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_113_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_113_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_113_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_113_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_113_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_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_113_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_113_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_113_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_113_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_113_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_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_113_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_113_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_113_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_113_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_113_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_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_113_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_113_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_113_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_113_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_113_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_113_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_114_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_114_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_114_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_114_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_114_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_114_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_114_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_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_114_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_114_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_114_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_114_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_114_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_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_114_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_114_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_114_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_114_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_114_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_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_114_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_114_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_114_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_114_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_114_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_114_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_115_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_115_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_115_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_115_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_115_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_115_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_115_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_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_115_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_115_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_115_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_115_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_115_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_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_115_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_115_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_115_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_115_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_115_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_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_115_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_115_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_115_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_115_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_115_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_115_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_116_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_116_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_116_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_116_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_116_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_116_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_116_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_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_116_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_116_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_116_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_116_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_116_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_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_116_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_116_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_116_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_116_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_116_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_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_116_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_116_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_116_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_116_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_116_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_116_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_117_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_117_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_117_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_117_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_117_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_117_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_117_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_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_117_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_117_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_117_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_117_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_117_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_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_117_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_117_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_117_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_117_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_117_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_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_117_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_117_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_117_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_117_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_117_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_117_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_118_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_118_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_118_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_118_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_118_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_118_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_118_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_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_118_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_118_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_118_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_118_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_118_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_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_118_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_118_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_118_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_118_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_118_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_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_118_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_118_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_118_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_118_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_118_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_118_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_119_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_119_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_119_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_119_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_119_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_119_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_119_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_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_119_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_119_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_119_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_119_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_119_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_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_119_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_119_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_119_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_119_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_119_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_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_119_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_119_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_119_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_119_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_119_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_119_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_120_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_120_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_120_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_120_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_120_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_120_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_120_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_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_120_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_120_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_120_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_120_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_120_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_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_120_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_120_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_120_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_120_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_120_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_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_120_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_120_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_120_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_120_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_120_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_120_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_121_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_121_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_121_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_121_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_121_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_121_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_121_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_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_121_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_121_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_121_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_121_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_121_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_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_121_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_121_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_121_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_121_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_121_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_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_121_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_121_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_121_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_121_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_121_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_121_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_122_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_122_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_122_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_122_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_122_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_122_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_122_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_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_122_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_122_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_122_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_122_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_122_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_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_122_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_122_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_122_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_122_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_122_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_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_122_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_122_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_122_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_122_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_122_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_122_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_123_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_123_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_123_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_123_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_123_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_123_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_123_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_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_123_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_123_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_123_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_123_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_123_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_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_123_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_123_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_123_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_123_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_123_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_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_123_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_123_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_123_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_123_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_123_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_123_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_124_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_124_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_124_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_124_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_124_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_124_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_124_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_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_124_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_124_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_124_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_124_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_124_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_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_124_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_124_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_124_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_124_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_124_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_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_124_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_124_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_124_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_124_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_124_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_124_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_125_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_125_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_125_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_125_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_125_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_125_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_125_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_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_125_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_125_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_125_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_125_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_125_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_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_125_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_125_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_125_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_125_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_125_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_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_125_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_125_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_125_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_125_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_125_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_125_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_126_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_126_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_126_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_126_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_126_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_126_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_126_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_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_126_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_126_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_126_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_126_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_126_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_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_126_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_126_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_126_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_126_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_126_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_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_126_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_126_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_126_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_126_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_126_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_126_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_127_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_127_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_127_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_127_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_127_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_127_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_127_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_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_127_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_127_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_127_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_127_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_127_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_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_127_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_127_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_127_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_127_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_127_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_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_127_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_127_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_127_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_127_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_127_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_127_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_128_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_128_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_128_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_128_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_128_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_128_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_128_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_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_128_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_128_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_128_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_128_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_128_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_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_128_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_128_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_128_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_128_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_128_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_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_128_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_128_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_128_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_128_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_128_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_128_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_129_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_129_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_129_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_129_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_129_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_129_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_129_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_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_129_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_129_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_129_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_129_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_129_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_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_129_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_129_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_129_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_129_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_129_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_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_129_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_129_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_129_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_129_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_129_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_129_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_130_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_130_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_130_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_130_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_130_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_130_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_130_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_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_130_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_130_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_130_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_130_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_130_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_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_130_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_130_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_130_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_130_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_130_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_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_130_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_130_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_130_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_130_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_130_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_130_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_131_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_131_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_131_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_131_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_131_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_131_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_131_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_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_131_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_131_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_131_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_131_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_131_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_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_131_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_131_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_131_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_131_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_131_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_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_131_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_131_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_131_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_131_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_131_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_131_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_132_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_132_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_132_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_132_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_132_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_132_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_132_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_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_132_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_132_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_132_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_132_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_132_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_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_132_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_132_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_132_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_132_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_132_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_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_132_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_132_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_132_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_132_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_132_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_132_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_133_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_133_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_133_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_133_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_133_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_133_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_133_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_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_133_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_133_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_133_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_133_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_133_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_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_133_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_133_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_133_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_133_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_133_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_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_133_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_133_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_133_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_133_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_133_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_133_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_134_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_134_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_134_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_134_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_134_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_134_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_134_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_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_134_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_134_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_134_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_134_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_134_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_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_134_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_134_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_134_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_134_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_134_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_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_134_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_134_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_134_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_134_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_134_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_134_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_135_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_135_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_135_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_135_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_135_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_135_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_135_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_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_135_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_135_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_135_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_135_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_135_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_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_135_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_135_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_135_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_135_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_135_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_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_135_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_135_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_135_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_135_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_135_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_135_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_136_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_136_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_136_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_136_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_136_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_136_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_136_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_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_136_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_136_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_136_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_136_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_136_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_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_136_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_136_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_136_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_136_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_136_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_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_136_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_136_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_136_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_136_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_136_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_136_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_137_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_137_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_137_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_137_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_137_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_137_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_137_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_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_137_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_137_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_137_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_137_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_137_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_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_137_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_137_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_137_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_137_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_137_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_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_137_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_137_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_137_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_137_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_137_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_137_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_138_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_138_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_138_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_138_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_138_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_138_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_138_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_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_138_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_138_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_138_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_138_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_138_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_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_138_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_138_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_138_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_138_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_138_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_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_138_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_138_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_138_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_138_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_138_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_138_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_139_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_139_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_139_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_139_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_139_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_139_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_139_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_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_139_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_139_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_139_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_139_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_139_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_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_139_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_139_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_139_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_139_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_139_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_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_139_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_139_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_139_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_139_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_139_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_139_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_140_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_140_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_140_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_140_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_140_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_140_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_140_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_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_140_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_140_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_140_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_140_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_140_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_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_140_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_140_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_140_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_140_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_140_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_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_140_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_140_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_140_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_140_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_140_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_140_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_141_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_141_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_141_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_141_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_141_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_141_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_141_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_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_141_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_141_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_141_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_141_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_141_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_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_141_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_141_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_141_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_141_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_141_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_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_141_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_141_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_141_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_141_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_141_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_141_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_142_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_142_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_142_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_142_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_142_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_142_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_142_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_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_142_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_142_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_142_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_142_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_142_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_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_142_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_142_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_142_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_142_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_142_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_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_142_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_142_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_142_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_142_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_142_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_142_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_143_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_143_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_143_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_143_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_143_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_143_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_143_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_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_143_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_143_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_143_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_143_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_143_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_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_143_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_143_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_143_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_143_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_143_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_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_143_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_143_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_143_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_143_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_143_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_143_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_144_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_144_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_144_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_144_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_144_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_144_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_144_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_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_144_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_144_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_144_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_144_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_144_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_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_144_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_144_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_144_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_144_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_144_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_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_144_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_144_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_144_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_144_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_144_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_144_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_145_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_145_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_145_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_145_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_145_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_145_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_145_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_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_145_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_145_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_145_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_145_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_145_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_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_145_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_145_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_145_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_145_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_145_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_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_145_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_145_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_145_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_145_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_145_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_145_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_146_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_146_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_146_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_146_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_146_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_146_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_146_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_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_146_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_146_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_146_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_146_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_146_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_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_146_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_146_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_146_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_146_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_146_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_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_146_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_146_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_146_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_146_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_146_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_146_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_147_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_147_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_147_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_147_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_147_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_147_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_147_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_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_147_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_147_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_147_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_147_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_147_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_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_147_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_147_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_147_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_147_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_147_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_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_147_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_147_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_147_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_147_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_147_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_147_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_148_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_148_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_148_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_148_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_148_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_148_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_148_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_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_148_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_148_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_148_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_148_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_148_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_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_148_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_148_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_148_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_148_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_148_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_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_148_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_148_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_148_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_148_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_148_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_148_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_149_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_149_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_149_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_149_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_149_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_149_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_149_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_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_149_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_149_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_149_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_149_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_149_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_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_149_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_149_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_149_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_149_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_149_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_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_149_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_149_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_149_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_149_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_149_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_149_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_150_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_150_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_150_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_150_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_150_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_150_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_150_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_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_150_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_150_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_150_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_150_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_150_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_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_150_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_150_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_150_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_150_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_150_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_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_150_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_150_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_150_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_150_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_150_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_150_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_151_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_151_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_151_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_151_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_151_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_151_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_151_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_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_151_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_151_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_151_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_151_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_151_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_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_151_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_151_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_151_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_151_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_151_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_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_151_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_151_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_151_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_151_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_151_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_151_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_152_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_152_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_152_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_152_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_152_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_152_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_152_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_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_152_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_152_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_152_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_152_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_152_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_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_152_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_152_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_152_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_152_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_152_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_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_152_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_152_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_152_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_152_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_152_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_152_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_153_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_153_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_153_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_153_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_153_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_153_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_153_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_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_153_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_153_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_153_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_153_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_153_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_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_153_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_153_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_153_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_153_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_153_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_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_153_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_153_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_153_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_153_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_153_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_153_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_154_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_154_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_154_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_154_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_154_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_154_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_154_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_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_154_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_154_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_154_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_154_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_154_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_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_154_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_154_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_154_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_154_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_154_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_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_154_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_154_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_154_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_154_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_154_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_154_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_155_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_155_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_155_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_155_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_155_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_155_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_155_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_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_155_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_155_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_155_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_155_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_155_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_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_155_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_155_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_155_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_155_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_155_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_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_155_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_155_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_155_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_155_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_155_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_155_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_156_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_156_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_156_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_156_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_156_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_156_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_156_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_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_156_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_156_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_156_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_156_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_156_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_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_156_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_156_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_156_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_156_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_156_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_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_156_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_156_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_156_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_156_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_156_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_156_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_157_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_157_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_157_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_157_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_157_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_157_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_157_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_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_157_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_157_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_157_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_157_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_157_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_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_157_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_157_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_157_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_157_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_157_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_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_157_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_157_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_157_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_157_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_157_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_157_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_158_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_158_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_158_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_158_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_158_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_158_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_158_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_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_158_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_158_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_158_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_158_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_158_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_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_158_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_158_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_158_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_158_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_158_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_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_158_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_158_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_158_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_158_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_158_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_158_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_159_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_159_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_159_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_159_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_159_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_159_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_159_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_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_159_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_159_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_159_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_159_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_159_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_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_159_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_159_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_159_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_159_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_159_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_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_159_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_159_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_159_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_159_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_159_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_159_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_160_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_160_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_160_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_160_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_160_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_160_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_160_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_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_160_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_160_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_160_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_160_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_160_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_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_160_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_160_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_160_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_160_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_160_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_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_160_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_160_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_160_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_160_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_160_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_160_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_161_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_161_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_161_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_161_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_161_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_161_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_161_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_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_161_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_161_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_161_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_161_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_161_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_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_161_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_161_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_161_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_161_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_161_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_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_161_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_161_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_161_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_161_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_161_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_161_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_162_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_162_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_162_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_162_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_162_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_162_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_162_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_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_162_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_162_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_162_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_162_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_162_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_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_162_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_162_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_162_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_162_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_162_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_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_162_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_162_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_162_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_162_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_162_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_162_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_163_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_163_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_163_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_163_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_163_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_163_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_163_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_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_163_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_163_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_163_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_163_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_163_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_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_163_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_163_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_163_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_163_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_163_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_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_163_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_163_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_163_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_163_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_163_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_163_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_164_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_164_genexpr = 0;
#endif

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_164_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_USE_FREELISTS
  if (likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_164_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_164_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_164_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_164_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_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_164_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_USE_FREELISTS
  if (((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_164_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_164_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_164_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_164_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_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_164_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_164_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_164_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_164_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_164_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_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_164_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_164_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_164_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_164_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_164_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_164_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 PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #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_n_s_AO, __pyx_k_AO, sizeof(__pyx_k_AO), 0, 0, 1, 1},
    {&__pyx_kp_s_A_bin_content_wrapper_in_1D, __pyx_k_A_bin_content_wrapper_in_1D, sizeof(__pyx_k_A_bin_content_wrapper_in_1D), 0, 0, 1, 0},
    {&__pyx_kp_s_A_bin_content_wrapper_in_2D, __pyx_k_A_bin_content_wrapper_in_2D, sizeof(__pyx_k_A_bin_content_wrapper_in_2D), 0, 0, 1, 0},
    {&__pyx_kp_s_A_bin_content_wrapper_in_3D, __pyx_k_A_bin_content_wrapper_in_3D, sizeof(__pyx_k_A_bin_content_wrapper_in_3D), 0, 0, 1, 0},
    {&__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_axisConfig, __pyx_k_AnalysisObject_axisConfig, sizeof(__pyx_k_AnalysisObject_axisConfig), 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_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_Axis, __pyx_k_Axis, sizeof(__pyx_k_Axis), 0, 0, 1, 1},
    {&__pyx_n_s_Axis___init1, __pyx_k_Axis___init1, sizeof(__pyx_k_Axis___init1), 0, 0, 1, 1},
    {&__pyx_n_s_Axis___init2, __pyx_k_Axis___init2, sizeof(__pyx_k_Axis___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Axis___reduce_cython, __pyx_k_Axis___reduce_cython, sizeof(__pyx_k_Axis___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Axis___setstate_cython, __pyx_k_Axis___setstate_cython, sizeof(__pyx_k_Axis___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Axis__init1, __pyx_k_Axis__init1, sizeof(__pyx_k_Axis__init1), 0, 0, 1, 1},
    {&__pyx_n_s_Axis__init2, __pyx_k_Axis__init2, sizeof(__pyx_k_Axis__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Axis__init2_locals_genexpr, __pyx_k_Axis__init2_locals_genexpr, sizeof(__pyx_k_Axis__init2_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_edge, __pyx_k_Axis_edge, sizeof(__pyx_k_Axis_edge), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_index, __pyx_k_Axis_index, sizeof(__pyx_k_Axis_index), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_max, __pyx_k_Axis_max, sizeof(__pyx_k_Axis_max), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_mid, __pyx_k_Axis_mid, sizeof(__pyx_k_Axis_mid), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_min, __pyx_k_Axis_min, sizeof(__pyx_k_Axis_min), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_numBins, __pyx_k_Axis_numBins, sizeof(__pyx_k_Axis_numBins), 0, 0, 1, 1},
    {&__pyx_kp_s_Axis_s, __pyx_k_Axis_s, sizeof(__pyx_k_Axis_s), 0, 0, 1, 0},
    {&__pyx_n_s_Axis_type, __pyx_k_Axis_type, sizeof(__pyx_k_Axis_type), 0, 0, 1, 1},
    {&__pyx_n_s_Axis_width, __pyx_k_Axis_width, sizeof(__pyx_k_Axis_width), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper, __pyx_k_Bin1D_locals_BinWrapper, sizeof(__pyx_k_Bin1D_locals_BinWrapper), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper___init, __pyx_k_Bin1D_locals_BinWrapper___init, sizeof(__pyx_k_Bin1D_locals_BinWrapper___init), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_attach, __pyx_k_Bin1D_locals_BinWrapper_attach, sizeof(__pyx_k_Bin1D_locals_BinWrapper_attach), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_dLen, __pyx_k_Bin1D_locals_BinWrapper_dLen, sizeof(__pyx_k_Bin1D_locals_BinWrapper_dLen), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_dVol, __pyx_k_Bin1D_locals_BinWrapper_dVol, sizeof(__pyx_k_Bin1D_locals_BinWrapper_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_edge, __pyx_k_Bin1D_locals_BinWrapper_edge, sizeof(__pyx_k_Bin1D_locals_BinWrapper_edge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_index, __pyx_k_Bin1D_locals_BinWrapper_index, sizeof(__pyx_k_Bin1D_locals_BinWrapper_index), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_isMasked, __pyx_k_Bin1D_locals_BinWrapper_isMasked, sizeof(__pyx_k_Bin1D_locals_BinWrapper_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_max, __pyx_k_Bin1D_locals_BinWrapper_max, sizeof(__pyx_k_Bin1D_locals_BinWrapper_max), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_mid, __pyx_k_Bin1D_locals_BinWrapper_mid, sizeof(__pyx_k_Bin1D_locals_BinWrapper_mid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_min, __pyx_k_Bin1D_locals_BinWrapper_min, sizeof(__pyx_k_Bin1D_locals_BinWrapper_min), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_setBinni, __pyx_k_Bin1D_locals_BinWrapper_setBinni, sizeof(__pyx_k_Bin1D_locals_BinWrapper_setBinni), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_setIndic, __pyx_k_Bin1D_locals_BinWrapper_setIndic, sizeof(__pyx_k_Bin1D_locals_BinWrapper_setIndic), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_width, __pyx_k_Bin1D_locals_BinWrapper_width, sizeof(__pyx_k_Bin1D_locals_BinWrapper_width), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_xEdge, __pyx_k_Bin1D_locals_BinWrapper_xEdge, sizeof(__pyx_k_Bin1D_locals_BinWrapper_xEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_xMax, __pyx_k_Bin1D_locals_BinWrapper_xMax, sizeof(__pyx_k_Bin1D_locals_BinWrapper_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_xMid, __pyx_k_Bin1D_locals_BinWrapper_xMid, sizeof(__pyx_k_Bin1D_locals_BinWrapper_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_xMin, __pyx_k_Bin1D_locals_BinWrapper_xMin, sizeof(__pyx_k_Bin1D_locals_BinWrapper_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_locals_BinWrapper_xWidth, __pyx_k_Bin1D_locals_BinWrapper_xWidth, sizeof(__pyx_k_Bin1D_locals_BinWrapper_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper, __pyx_k_Bin2D_locals_BinWrapper, sizeof(__pyx_k_Bin2D_locals_BinWrapper), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper___init, __pyx_k_Bin2D_locals_BinWrapper___init, sizeof(__pyx_k_Bin2D_locals_BinWrapper___init), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_attach, __pyx_k_Bin2D_locals_BinWrapper_attach, sizeof(__pyx_k_Bin2D_locals_BinWrapper_attach), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_dArea, __pyx_k_Bin2D_locals_BinWrapper_dArea, sizeof(__pyx_k_Bin2D_locals_BinWrapper_dArea), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_dVol, __pyx_k_Bin2D_locals_BinWrapper_dVol, sizeof(__pyx_k_Bin2D_locals_BinWrapper_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_edge, __pyx_k_Bin2D_locals_BinWrapper_edge, sizeof(__pyx_k_Bin2D_locals_BinWrapper_edge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_index, __pyx_k_Bin2D_locals_BinWrapper_index, sizeof(__pyx_k_Bin2D_locals_BinWrapper_index), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_isMasked, __pyx_k_Bin2D_locals_BinWrapper_isMasked, sizeof(__pyx_k_Bin2D_locals_BinWrapper_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_max, __pyx_k_Bin2D_locals_BinWrapper_max, sizeof(__pyx_k_Bin2D_locals_BinWrapper_max), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_mid, __pyx_k_Bin2D_locals_BinWrapper_mid, sizeof(__pyx_k_Bin2D_locals_BinWrapper_mid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_min, __pyx_k_Bin2D_locals_BinWrapper_min, sizeof(__pyx_k_Bin2D_locals_BinWrapper_min), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_setBinni, __pyx_k_Bin2D_locals_BinWrapper_setBinni, sizeof(__pyx_k_Bin2D_locals_BinWrapper_setBinni), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_setIndic, __pyx_k_Bin2D_locals_BinWrapper_setIndic, sizeof(__pyx_k_Bin2D_locals_BinWrapper_setIndic), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_width, __pyx_k_Bin2D_locals_BinWrapper_width, sizeof(__pyx_k_Bin2D_locals_BinWrapper_width), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_xEdge, __pyx_k_Bin2D_locals_BinWrapper_xEdge, sizeof(__pyx_k_Bin2D_locals_BinWrapper_xEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_xMax, __pyx_k_Bin2D_locals_BinWrapper_xMax, sizeof(__pyx_k_Bin2D_locals_BinWrapper_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_xMid, __pyx_k_Bin2D_locals_BinWrapper_xMid, sizeof(__pyx_k_Bin2D_locals_BinWrapper_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_xMin, __pyx_k_Bin2D_locals_BinWrapper_xMin, sizeof(__pyx_k_Bin2D_locals_BinWrapper_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_xWidth, __pyx_k_Bin2D_locals_BinWrapper_xWidth, sizeof(__pyx_k_Bin2D_locals_BinWrapper_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_yEdge, __pyx_k_Bin2D_locals_BinWrapper_yEdge, sizeof(__pyx_k_Bin2D_locals_BinWrapper_yEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_yMax, __pyx_k_Bin2D_locals_BinWrapper_yMax, sizeof(__pyx_k_Bin2D_locals_BinWrapper_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_yMid, __pyx_k_Bin2D_locals_BinWrapper_yMid, sizeof(__pyx_k_Bin2D_locals_BinWrapper_yMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_yMin, __pyx_k_Bin2D_locals_BinWrapper_yMin, sizeof(__pyx_k_Bin2D_locals_BinWrapper_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_locals_BinWrapper_yWidth, __pyx_k_Bin2D_locals_BinWrapper_yWidth, sizeof(__pyx_k_Bin2D_locals_BinWrapper_yWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper, __pyx_k_Bin3D_locals_BinWrapper, sizeof(__pyx_k_Bin3D_locals_BinWrapper), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper___init, __pyx_k_Bin3D_locals_BinWrapper___init, sizeof(__pyx_k_Bin3D_locals_BinWrapper___init), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_attach, __pyx_k_Bin3D_locals_BinWrapper_attach, sizeof(__pyx_k_Bin3D_locals_BinWrapper_attach), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_dVol, __pyx_k_Bin3D_locals_BinWrapper_dVol, sizeof(__pyx_k_Bin3D_locals_BinWrapper_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_edge, __pyx_k_Bin3D_locals_BinWrapper_edge, sizeof(__pyx_k_Bin3D_locals_BinWrapper_edge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_index, __pyx_k_Bin3D_locals_BinWrapper_index, sizeof(__pyx_k_Bin3D_locals_BinWrapper_index), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_isMasked, __pyx_k_Bin3D_locals_BinWrapper_isMasked, sizeof(__pyx_k_Bin3D_locals_BinWrapper_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_max, __pyx_k_Bin3D_locals_BinWrapper_max, sizeof(__pyx_k_Bin3D_locals_BinWrapper_max), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_mid, __pyx_k_Bin3D_locals_BinWrapper_mid, sizeof(__pyx_k_Bin3D_locals_BinWrapper_mid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_min, __pyx_k_Bin3D_locals_BinWrapper_min, sizeof(__pyx_k_Bin3D_locals_BinWrapper_min), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_setBinni, __pyx_k_Bin3D_locals_BinWrapper_setBinni, sizeof(__pyx_k_Bin3D_locals_BinWrapper_setBinni), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_setIndic, __pyx_k_Bin3D_locals_BinWrapper_setIndic, sizeof(__pyx_k_Bin3D_locals_BinWrapper_setIndic), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_width, __pyx_k_Bin3D_locals_BinWrapper_width, sizeof(__pyx_k_Bin3D_locals_BinWrapper_width), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_xEdge, __pyx_k_Bin3D_locals_BinWrapper_xEdge, sizeof(__pyx_k_Bin3D_locals_BinWrapper_xEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_xMax, __pyx_k_Bin3D_locals_BinWrapper_xMax, sizeof(__pyx_k_Bin3D_locals_BinWrapper_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_xMid, __pyx_k_Bin3D_locals_BinWrapper_xMid, sizeof(__pyx_k_Bin3D_locals_BinWrapper_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_xMin, __pyx_k_Bin3D_locals_BinWrapper_xMin, sizeof(__pyx_k_Bin3D_locals_BinWrapper_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_xWidth, __pyx_k_Bin3D_locals_BinWrapper_xWidth, sizeof(__pyx_k_Bin3D_locals_BinWrapper_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_yEdge, __pyx_k_Bin3D_locals_BinWrapper_yEdge, sizeof(__pyx_k_Bin3D_locals_BinWrapper_yEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_yMax, __pyx_k_Bin3D_locals_BinWrapper_yMax, sizeof(__pyx_k_Bin3D_locals_BinWrapper_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_yMid, __pyx_k_Bin3D_locals_BinWrapper_yMid, sizeof(__pyx_k_Bin3D_locals_BinWrapper_yMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_yMin, __pyx_k_Bin3D_locals_BinWrapper_yMin, sizeof(__pyx_k_Bin3D_locals_BinWrapper_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_yWidth, __pyx_k_Bin3D_locals_BinWrapper_yWidth, sizeof(__pyx_k_Bin3D_locals_BinWrapper_yWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_zEdge, __pyx_k_Bin3D_locals_BinWrapper_zEdge, sizeof(__pyx_k_Bin3D_locals_BinWrapper_zEdge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_zMax, __pyx_k_Bin3D_locals_BinWrapper_zMax, sizeof(__pyx_k_Bin3D_locals_BinWrapper_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_zMid, __pyx_k_Bin3D_locals_BinWrapper_zMid, sizeof(__pyx_k_Bin3D_locals_BinWrapper_zMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_zMin, __pyx_k_Bin3D_locals_BinWrapper_zMin, sizeof(__pyx_k_Bin3D_locals_BinWrapper_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin3D_locals_BinWrapper_zWidth, __pyx_k_Bin3D_locals_BinWrapper_zWidth, sizeof(__pyx_k_Bin3D_locals_BinWrapper_zWidth), 0, 0, 1, 1},
    {&__pyx_n_s_BinWrapper, __pyx_k_BinWrapper, sizeof(__pyx_k_BinWrapper), 0, 0, 1, 1},
    {&__pyx_n_s_Binned, __pyx_k_Binned, sizeof(__pyx_k_Binned), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D, __pyx_k_BinnedEstimate1D, sizeof(__pyx_k_BinnedEstimate1D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___init1, __pyx_k_BinnedEstimate1D___init1, sizeof(__pyx_k_BinnedEstimate1D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___init2, __pyx_k_BinnedEstimate1D___init2, sizeof(__pyx_k_BinnedEstimate1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___init3, __pyx_k_BinnedEstimate1D___init3, sizeof(__pyx_k_BinnedEstimate1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___init4, __pyx_k_BinnedEstimate1D___init4, sizeof(__pyx_k_BinnedEstimate1D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___reduce_cython, __pyx_k_BinnedEstimate1D___reduce_cython, sizeof(__pyx_k_BinnedEstimate1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D___setstate_cyth, __pyx_k_BinnedEstimate1D___setstate_cyth, sizeof(__pyx_k_BinnedEstimate1D___setstate_cyth), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__bin, __pyx_k_BinnedEstimate1D__bin, sizeof(__pyx_k_BinnedEstimate1D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__global_set, __pyx_k_BinnedEstimate1D__global_set, sizeof(__pyx_k_BinnedEstimate1D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__init1, __pyx_k_BinnedEstimate1D__init1, sizeof(__pyx_k_BinnedEstimate1D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__init2, __pyx_k_BinnedEstimate1D__init2, sizeof(__pyx_k_BinnedEstimate1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__init2_locals, __pyx_k_BinnedEstimate1D__init2_locals, sizeof(__pyx_k_BinnedEstimate1D__init2_locals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__init3, __pyx_k_BinnedEstimate1D__init3, sizeof(__pyx_k_BinnedEstimate1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__init4, __pyx_k_BinnedEstimate1D__init4, sizeof(__pyx_k_BinnedEstimate1D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__local_set, __pyx_k_BinnedEstimate1D__local_set, sizeof(__pyx_k_BinnedEstimate1D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__mknp, __pyx_k_BinnedEstimate1D__mknp, sizeof(__pyx_k_BinnedEstimate1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D__set_config, __pyx_k_BinnedEstimate1D__set_config, sizeof(__pyx_k_BinnedEstimate1D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_areaUnderCurve, __pyx_k_BinnedEstimate1D_areaUnderCurve, sizeof(__pyx_k_BinnedEstimate1D_areaUnderCurve), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_auc, __pyx_k_BinnedEstimate1D_auc, sizeof(__pyx_k_BinnedEstimate1D_auc), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_bin, __pyx_k_BinnedEstimate1D_bin, sizeof(__pyx_k_BinnedEstimate1D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_binAt, __pyx_k_BinnedEstimate1D_binAt, sizeof(__pyx_k_BinnedEstimate1D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_binDim, __pyx_k_BinnedEstimate1D_binDim, sizeof(__pyx_k_BinnedEstimate1D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_bins, __pyx_k_BinnedEstimate1D_bins, sizeof(__pyx_k_BinnedEstimate1D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_clone, __pyx_k_BinnedEstimate1D_clone, sizeof(__pyx_k_BinnedEstimate1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_covarianceMatri, __pyx_k_BinnedEstimate1D_covarianceMatri, sizeof(__pyx_k_BinnedEstimate1D_covarianceMatri), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_deserializeCont, __pyx_k_BinnedEstimate1D_deserializeCont, sizeof(__pyx_k_BinnedEstimate1D_deserializeCont), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_deserializeMeta, __pyx_k_BinnedEstimate1D_deserializeMeta, sizeof(__pyx_k_BinnedEstimate1D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_divideBy, __pyx_k_BinnedEstimate1D_divideBy, sizeof(__pyx_k_BinnedEstimate1D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_indexAt, __pyx_k_BinnedEstimate1D_indexAt, sizeof(__pyx_k_BinnedEstimate1D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_isMasked, __pyx_k_BinnedEstimate1D_isMasked, sizeof(__pyx_k_BinnedEstimate1D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_isVisible, __pyx_k_BinnedEstimate1D_isVisible, sizeof(__pyx_k_BinnedEstimate1D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_lengthContent, __pyx_k_BinnedEstimate1D_lengthContent, sizeof(__pyx_k_BinnedEstimate1D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_lengthMeta, __pyx_k_BinnedEstimate1D_lengthMeta, sizeof(__pyx_k_BinnedEstimate1D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_localToGlobalIn, __pyx_k_BinnedEstimate1D_localToGlobalIn, sizeof(__pyx_k_BinnedEstimate1D_localToGlobalIn), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_maskBin, __pyx_k_BinnedEstimate1D_maskBin, sizeof(__pyx_k_BinnedEstimate1D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_maskBinAt, __pyx_k_BinnedEstimate1D_maskBinAt, sizeof(__pyx_k_BinnedEstimate1D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_maskBins, __pyx_k_BinnedEstimate1D_maskBins, sizeof(__pyx_k_BinnedEstimate1D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_maskSlice, __pyx_k_BinnedEstimate1D_maskSlice, sizeof(__pyx_k_BinnedEstimate1D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_maskedBins, __pyx_k_BinnedEstimate1D_maskedBins, sizeof(__pyx_k_BinnedEstimate1D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_mkScatter, __pyx_k_BinnedEstimate1D_mkScatter, sizeof(__pyx_k_BinnedEstimate1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_numBins, __pyx_k_BinnedEstimate1D_numBins, sizeof(__pyx_k_BinnedEstimate1D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_numBinsX, __pyx_k_BinnedEstimate1D_numBinsX, sizeof(__pyx_k_BinnedEstimate1D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_rebinX, __pyx_k_BinnedEstimate1D_rebinX, sizeof(__pyx_k_BinnedEstimate1D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_rebinXBy, __pyx_k_BinnedEstimate1D_rebinXBy, sizeof(__pyx_k_BinnedEstimate1D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_rebinXTo, __pyx_k_BinnedEstimate1D_rebinXTo, sizeof(__pyx_k_BinnedEstimate1D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_reset, __pyx_k_BinnedEstimate1D_reset, sizeof(__pyx_k_BinnedEstimate1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_scale, __pyx_k_BinnedEstimate1D_scale, sizeof(__pyx_k_BinnedEstimate1D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_serializeConten, __pyx_k_BinnedEstimate1D_serializeConten, sizeof(__pyx_k_BinnedEstimate1D_serializeConten), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_serializeMeta, __pyx_k_BinnedEstimate1D_serializeMeta, sizeof(__pyx_k_BinnedEstimate1D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_set, __pyx_k_BinnedEstimate1D_set, sizeof(__pyx_k_BinnedEstimate1D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_sources, __pyx_k_BinnedEstimate1D_sources, sizeof(__pyx_k_BinnedEstimate1D_sources), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_vals, __pyx_k_BinnedEstimate1D_vals, sizeof(__pyx_k_BinnedEstimate1D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_xEdges, __pyx_k_BinnedEstimate1D_xEdges, sizeof(__pyx_k_BinnedEstimate1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_xMax, __pyx_k_BinnedEstimate1D_xMax, sizeof(__pyx_k_BinnedEstimate1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_xMin, __pyx_k_BinnedEstimate1D_xMin, sizeof(__pyx_k_BinnedEstimate1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate1D_xWidths, __pyx_k_BinnedEstimate1D_xWidths, sizeof(__pyx_k_BinnedEstimate1D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D, __pyx_k_BinnedEstimate2D, sizeof(__pyx_k_BinnedEstimate2D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___init1, __pyx_k_BinnedEstimate2D___init1, sizeof(__pyx_k_BinnedEstimate2D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___init2, __pyx_k_BinnedEstimate2D___init2, sizeof(__pyx_k_BinnedEstimate2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___init3, __pyx_k_BinnedEstimate2D___init3, sizeof(__pyx_k_BinnedEstimate2D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___init4, __pyx_k_BinnedEstimate2D___init4, sizeof(__pyx_k_BinnedEstimate2D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___reduce_cython, __pyx_k_BinnedEstimate2D___reduce_cython, sizeof(__pyx_k_BinnedEstimate2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D___setstate_cyth, __pyx_k_BinnedEstimate2D___setstate_cyth, sizeof(__pyx_k_BinnedEstimate2D___setstate_cyth), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__bin, __pyx_k_BinnedEstimate2D__bin, sizeof(__pyx_k_BinnedEstimate2D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__global_set, __pyx_k_BinnedEstimate2D__global_set, sizeof(__pyx_k_BinnedEstimate2D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__init1, __pyx_k_BinnedEstimate2D__init1, sizeof(__pyx_k_BinnedEstimate2D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__init2, __pyx_k_BinnedEstimate2D__init2, sizeof(__pyx_k_BinnedEstimate2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__init2_locals, __pyx_k_BinnedEstimate2D__init2_locals, sizeof(__pyx_k_BinnedEstimate2D__init2_locals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__init3, __pyx_k_BinnedEstimate2D__init3, sizeof(__pyx_k_BinnedEstimate2D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__init4, __pyx_k_BinnedEstimate2D__init4, sizeof(__pyx_k_BinnedEstimate2D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__local_set, __pyx_k_BinnedEstimate2D__local_set, sizeof(__pyx_k_BinnedEstimate2D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__mknp, __pyx_k_BinnedEstimate2D__mknp, sizeof(__pyx_k_BinnedEstimate2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D__set_config, __pyx_k_BinnedEstimate2D__set_config, sizeof(__pyx_k_BinnedEstimate2D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_areaUnderCurve, __pyx_k_BinnedEstimate2D_areaUnderCurve, sizeof(__pyx_k_BinnedEstimate2D_areaUnderCurve), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_auc, __pyx_k_BinnedEstimate2D_auc, sizeof(__pyx_k_BinnedEstimate2D_auc), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_bin, __pyx_k_BinnedEstimate2D_bin, sizeof(__pyx_k_BinnedEstimate2D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_binAt, __pyx_k_BinnedEstimate2D_binAt, sizeof(__pyx_k_BinnedEstimate2D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_binDim, __pyx_k_BinnedEstimate2D_binDim, sizeof(__pyx_k_BinnedEstimate2D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_bins, __pyx_k_BinnedEstimate2D_bins, sizeof(__pyx_k_BinnedEstimate2D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_clone, __pyx_k_BinnedEstimate2D_clone, sizeof(__pyx_k_BinnedEstimate2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_covarianceMatri, __pyx_k_BinnedEstimate2D_covarianceMatri, sizeof(__pyx_k_BinnedEstimate2D_covarianceMatri), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_deserializeCont, __pyx_k_BinnedEstimate2D_deserializeCont, sizeof(__pyx_k_BinnedEstimate2D_deserializeCont), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_deserializeMeta, __pyx_k_BinnedEstimate2D_deserializeMeta, sizeof(__pyx_k_BinnedEstimate2D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_divideBy, __pyx_k_BinnedEstimate2D_divideBy, sizeof(__pyx_k_BinnedEstimate2D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_indexAt, __pyx_k_BinnedEstimate2D_indexAt, sizeof(__pyx_k_BinnedEstimate2D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_isMasked, __pyx_k_BinnedEstimate2D_isMasked, sizeof(__pyx_k_BinnedEstimate2D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_isVisible, __pyx_k_BinnedEstimate2D_isVisible, sizeof(__pyx_k_BinnedEstimate2D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_lengthContent, __pyx_k_BinnedEstimate2D_lengthContent, sizeof(__pyx_k_BinnedEstimate2D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_lengthMeta, __pyx_k_BinnedEstimate2D_lengthMeta, sizeof(__pyx_k_BinnedEstimate2D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_localToGlobalIn, __pyx_k_BinnedEstimate2D_localToGlobalIn, sizeof(__pyx_k_BinnedEstimate2D_localToGlobalIn), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_maskBin, __pyx_k_BinnedEstimate2D_maskBin, sizeof(__pyx_k_BinnedEstimate2D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_maskBinAt, __pyx_k_BinnedEstimate2D_maskBinAt, sizeof(__pyx_k_BinnedEstimate2D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_maskBins, __pyx_k_BinnedEstimate2D_maskBins, sizeof(__pyx_k_BinnedEstimate2D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_maskSlice, __pyx_k_BinnedEstimate2D_maskSlice, sizeof(__pyx_k_BinnedEstimate2D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_maskedBins, __pyx_k_BinnedEstimate2D_maskedBins, sizeof(__pyx_k_BinnedEstimate2D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_mkScatter, __pyx_k_BinnedEstimate2D_mkScatter, sizeof(__pyx_k_BinnedEstimate2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_numBins, __pyx_k_BinnedEstimate2D_numBins, sizeof(__pyx_k_BinnedEstimate2D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_numBinsX, __pyx_k_BinnedEstimate2D_numBinsX, sizeof(__pyx_k_BinnedEstimate2D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_numBinsY, __pyx_k_BinnedEstimate2D_numBinsY, sizeof(__pyx_k_BinnedEstimate2D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinX, __pyx_k_BinnedEstimate2D_rebinX, sizeof(__pyx_k_BinnedEstimate2D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinXBy, __pyx_k_BinnedEstimate2D_rebinXBy, sizeof(__pyx_k_BinnedEstimate2D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinXTo, __pyx_k_BinnedEstimate2D_rebinXTo, sizeof(__pyx_k_BinnedEstimate2D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinY, __pyx_k_BinnedEstimate2D_rebinY, sizeof(__pyx_k_BinnedEstimate2D_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinYBy, __pyx_k_BinnedEstimate2D_rebinYBy, sizeof(__pyx_k_BinnedEstimate2D_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_rebinYTo, __pyx_k_BinnedEstimate2D_rebinYTo, sizeof(__pyx_k_BinnedEstimate2D_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_reset, __pyx_k_BinnedEstimate2D_reset, sizeof(__pyx_k_BinnedEstimate2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_scale, __pyx_k_BinnedEstimate2D_scale, sizeof(__pyx_k_BinnedEstimate2D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_serializeConten, __pyx_k_BinnedEstimate2D_serializeConten, sizeof(__pyx_k_BinnedEstimate2D_serializeConten), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_serializeMeta, __pyx_k_BinnedEstimate2D_serializeMeta, sizeof(__pyx_k_BinnedEstimate2D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_set, __pyx_k_BinnedEstimate2D_set, sizeof(__pyx_k_BinnedEstimate2D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_sources, __pyx_k_BinnedEstimate2D_sources, sizeof(__pyx_k_BinnedEstimate2D_sources), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_vals, __pyx_k_BinnedEstimate2D_vals, sizeof(__pyx_k_BinnedEstimate2D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_xEdges, __pyx_k_BinnedEstimate2D_xEdges, sizeof(__pyx_k_BinnedEstimate2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_xMax, __pyx_k_BinnedEstimate2D_xMax, sizeof(__pyx_k_BinnedEstimate2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_xMin, __pyx_k_BinnedEstimate2D_xMin, sizeof(__pyx_k_BinnedEstimate2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_xWidths, __pyx_k_BinnedEstimate2D_xWidths, sizeof(__pyx_k_BinnedEstimate2D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_yEdges, __pyx_k_BinnedEstimate2D_yEdges, sizeof(__pyx_k_BinnedEstimate2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_yMax, __pyx_k_BinnedEstimate2D_yMax, sizeof(__pyx_k_BinnedEstimate2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_yMin, __pyx_k_BinnedEstimate2D_yMin, sizeof(__pyx_k_BinnedEstimate2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate2D_yWidths, __pyx_k_BinnedEstimate2D_yWidths, sizeof(__pyx_k_BinnedEstimate2D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D, __pyx_k_BinnedEstimate3D, sizeof(__pyx_k_BinnedEstimate3D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___init1, __pyx_k_BinnedEstimate3D___init1, sizeof(__pyx_k_BinnedEstimate3D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___init2, __pyx_k_BinnedEstimate3D___init2, sizeof(__pyx_k_BinnedEstimate3D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___init3, __pyx_k_BinnedEstimate3D___init3, sizeof(__pyx_k_BinnedEstimate3D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___init4, __pyx_k_BinnedEstimate3D___init4, sizeof(__pyx_k_BinnedEstimate3D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___reduce_cython, __pyx_k_BinnedEstimate3D___reduce_cython, sizeof(__pyx_k_BinnedEstimate3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D___setstate_cyth, __pyx_k_BinnedEstimate3D___setstate_cyth, sizeof(__pyx_k_BinnedEstimate3D___setstate_cyth), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__bin, __pyx_k_BinnedEstimate3D__bin, sizeof(__pyx_k_BinnedEstimate3D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__global_set, __pyx_k_BinnedEstimate3D__global_set, sizeof(__pyx_k_BinnedEstimate3D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__init1, __pyx_k_BinnedEstimate3D__init1, sizeof(__pyx_k_BinnedEstimate3D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__init2, __pyx_k_BinnedEstimate3D__init2, sizeof(__pyx_k_BinnedEstimate3D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__init2_locals, __pyx_k_BinnedEstimate3D__init2_locals, sizeof(__pyx_k_BinnedEstimate3D__init2_locals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__init3, __pyx_k_BinnedEstimate3D__init3, sizeof(__pyx_k_BinnedEstimate3D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__init4, __pyx_k_BinnedEstimate3D__init4, sizeof(__pyx_k_BinnedEstimate3D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__local_set, __pyx_k_BinnedEstimate3D__local_set, sizeof(__pyx_k_BinnedEstimate3D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__mknp, __pyx_k_BinnedEstimate3D__mknp, sizeof(__pyx_k_BinnedEstimate3D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D__set_config, __pyx_k_BinnedEstimate3D__set_config, sizeof(__pyx_k_BinnedEstimate3D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_areaUnderCurve, __pyx_k_BinnedEstimate3D_areaUnderCurve, sizeof(__pyx_k_BinnedEstimate3D_areaUnderCurve), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_auc, __pyx_k_BinnedEstimate3D_auc, sizeof(__pyx_k_BinnedEstimate3D_auc), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_bin, __pyx_k_BinnedEstimate3D_bin, sizeof(__pyx_k_BinnedEstimate3D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_binAt, __pyx_k_BinnedEstimate3D_binAt, sizeof(__pyx_k_BinnedEstimate3D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_binDim, __pyx_k_BinnedEstimate3D_binDim, sizeof(__pyx_k_BinnedEstimate3D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_bins, __pyx_k_BinnedEstimate3D_bins, sizeof(__pyx_k_BinnedEstimate3D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_clone, __pyx_k_BinnedEstimate3D_clone, sizeof(__pyx_k_BinnedEstimate3D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_covarianceMatri, __pyx_k_BinnedEstimate3D_covarianceMatri, sizeof(__pyx_k_BinnedEstimate3D_covarianceMatri), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_deserializeCont, __pyx_k_BinnedEstimate3D_deserializeCont, sizeof(__pyx_k_BinnedEstimate3D_deserializeCont), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_deserializeMeta, __pyx_k_BinnedEstimate3D_deserializeMeta, sizeof(__pyx_k_BinnedEstimate3D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_divideBy, __pyx_k_BinnedEstimate3D_divideBy, sizeof(__pyx_k_BinnedEstimate3D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_indexAt, __pyx_k_BinnedEstimate3D_indexAt, sizeof(__pyx_k_BinnedEstimate3D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_isMasked, __pyx_k_BinnedEstimate3D_isMasked, sizeof(__pyx_k_BinnedEstimate3D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_isVisible, __pyx_k_BinnedEstimate3D_isVisible, sizeof(__pyx_k_BinnedEstimate3D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_lengthContent, __pyx_k_BinnedEstimate3D_lengthContent, sizeof(__pyx_k_BinnedEstimate3D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_lengthMeta, __pyx_k_BinnedEstimate3D_lengthMeta, sizeof(__pyx_k_BinnedEstimate3D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_localToGlobalIn, __pyx_k_BinnedEstimate3D_localToGlobalIn, sizeof(__pyx_k_BinnedEstimate3D_localToGlobalIn), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_maskBin, __pyx_k_BinnedEstimate3D_maskBin, sizeof(__pyx_k_BinnedEstimate3D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_maskBinAt, __pyx_k_BinnedEstimate3D_maskBinAt, sizeof(__pyx_k_BinnedEstimate3D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_maskBins, __pyx_k_BinnedEstimate3D_maskBins, sizeof(__pyx_k_BinnedEstimate3D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_maskSlice, __pyx_k_BinnedEstimate3D_maskSlice, sizeof(__pyx_k_BinnedEstimate3D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_maskedBins, __pyx_k_BinnedEstimate3D_maskedBins, sizeof(__pyx_k_BinnedEstimate3D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_mkScatter, __pyx_k_BinnedEstimate3D_mkScatter, sizeof(__pyx_k_BinnedEstimate3D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_numBins, __pyx_k_BinnedEstimate3D_numBins, sizeof(__pyx_k_BinnedEstimate3D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_numBinsX, __pyx_k_BinnedEstimate3D_numBinsX, sizeof(__pyx_k_BinnedEstimate3D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_numBinsY, __pyx_k_BinnedEstimate3D_numBinsY, sizeof(__pyx_k_BinnedEstimate3D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_numBinsZ, __pyx_k_BinnedEstimate3D_numBinsZ, sizeof(__pyx_k_BinnedEstimate3D_numBinsZ), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinX, __pyx_k_BinnedEstimate3D_rebinX, sizeof(__pyx_k_BinnedEstimate3D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinXBy, __pyx_k_BinnedEstimate3D_rebinXBy, sizeof(__pyx_k_BinnedEstimate3D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinXTo, __pyx_k_BinnedEstimate3D_rebinXTo, sizeof(__pyx_k_BinnedEstimate3D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinY, __pyx_k_BinnedEstimate3D_rebinY, sizeof(__pyx_k_BinnedEstimate3D_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinYBy, __pyx_k_BinnedEstimate3D_rebinYBy, sizeof(__pyx_k_BinnedEstimate3D_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinYTo, __pyx_k_BinnedEstimate3D_rebinYTo, sizeof(__pyx_k_BinnedEstimate3D_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinZ, __pyx_k_BinnedEstimate3D_rebinZ, sizeof(__pyx_k_BinnedEstimate3D_rebinZ), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinZBy, __pyx_k_BinnedEstimate3D_rebinZBy, sizeof(__pyx_k_BinnedEstimate3D_rebinZBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_rebinZTo, __pyx_k_BinnedEstimate3D_rebinZTo, sizeof(__pyx_k_BinnedEstimate3D_rebinZTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_reset, __pyx_k_BinnedEstimate3D_reset, sizeof(__pyx_k_BinnedEstimate3D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_scale, __pyx_k_BinnedEstimate3D_scale, sizeof(__pyx_k_BinnedEstimate3D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_serializeConten, __pyx_k_BinnedEstimate3D_serializeConten, sizeof(__pyx_k_BinnedEstimate3D_serializeConten), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_serializeMeta, __pyx_k_BinnedEstimate3D_serializeMeta, sizeof(__pyx_k_BinnedEstimate3D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_set, __pyx_k_BinnedEstimate3D_set, sizeof(__pyx_k_BinnedEstimate3D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_sources, __pyx_k_BinnedEstimate3D_sources, sizeof(__pyx_k_BinnedEstimate3D_sources), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_vals, __pyx_k_BinnedEstimate3D_vals, sizeof(__pyx_k_BinnedEstimate3D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_xEdges, __pyx_k_BinnedEstimate3D_xEdges, sizeof(__pyx_k_BinnedEstimate3D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_xMax, __pyx_k_BinnedEstimate3D_xMax, sizeof(__pyx_k_BinnedEstimate3D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_xMin, __pyx_k_BinnedEstimate3D_xMin, sizeof(__pyx_k_BinnedEstimate3D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_xWidths, __pyx_k_BinnedEstimate3D_xWidths, sizeof(__pyx_k_BinnedEstimate3D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_yEdges, __pyx_k_BinnedEstimate3D_yEdges, sizeof(__pyx_k_BinnedEstimate3D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_yMax, __pyx_k_BinnedEstimate3D_yMax, sizeof(__pyx_k_BinnedEstimate3D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_yMin, __pyx_k_BinnedEstimate3D_yMin, sizeof(__pyx_k_BinnedEstimate3D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_yWidths, __pyx_k_BinnedEstimate3D_yWidths, sizeof(__pyx_k_BinnedEstimate3D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_zEdges, __pyx_k_BinnedEstimate3D_zEdges, sizeof(__pyx_k_BinnedEstimate3D_zEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_zMax, __pyx_k_BinnedEstimate3D_zMax, sizeof(__pyx_k_BinnedEstimate3D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_zMin, __pyx_k_BinnedEstimate3D_zMin, sizeof(__pyx_k_BinnedEstimate3D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedEstimate3D_zWidths, __pyx_k_BinnedEstimate3D_zWidths, sizeof(__pyx_k_BinnedEstimate3D_zWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D, __pyx_k_BinnedHisto1D, sizeof(__pyx_k_BinnedHisto1D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___init1, __pyx_k_BinnedHisto1D___init1, sizeof(__pyx_k_BinnedHisto1D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___init2, __pyx_k_BinnedHisto1D___init2, sizeof(__pyx_k_BinnedHisto1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___init3, __pyx_k_BinnedHisto1D___init3, sizeof(__pyx_k_BinnedHisto1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___init4, __pyx_k_BinnedHisto1D___init4, sizeof(__pyx_k_BinnedHisto1D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___reduce_cython, __pyx_k_BinnedHisto1D___reduce_cython, sizeof(__pyx_k_BinnedHisto1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D___setstate_cython, __pyx_k_BinnedHisto1D___setstate_cython, sizeof(__pyx_k_BinnedHisto1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__bin, __pyx_k_BinnedHisto1D__bin, sizeof(__pyx_k_BinnedHisto1D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__global_set, __pyx_k_BinnedHisto1D__global_set, sizeof(__pyx_k_BinnedHisto1D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__init1, __pyx_k_BinnedHisto1D__init1, sizeof(__pyx_k_BinnedHisto1D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__init2, __pyx_k_BinnedHisto1D__init2, sizeof(__pyx_k_BinnedHisto1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__init2_locals_gen, __pyx_k_BinnedHisto1D__init2_locals_gen, sizeof(__pyx_k_BinnedHisto1D__init2_locals_gen), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__init3, __pyx_k_BinnedHisto1D__init3, sizeof(__pyx_k_BinnedHisto1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__init4, __pyx_k_BinnedHisto1D__init4, sizeof(__pyx_k_BinnedHisto1D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__local_set, __pyx_k_BinnedHisto1D__local_set, sizeof(__pyx_k_BinnedHisto1D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__mknp, __pyx_k_BinnedHisto1D__mknp, sizeof(__pyx_k_BinnedHisto1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D__set_config, __pyx_k_BinnedHisto1D__set_config, sizeof(__pyx_k_BinnedHisto1D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_bin, __pyx_k_BinnedHisto1D_bin, sizeof(__pyx_k_BinnedHisto1D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_binAt, __pyx_k_BinnedHisto1D_binAt, sizeof(__pyx_k_BinnedHisto1D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_binDim, __pyx_k_BinnedHisto1D_binDim, sizeof(__pyx_k_BinnedHisto1D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_bins, __pyx_k_BinnedHisto1D_bins, sizeof(__pyx_k_BinnedHisto1D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_clone, __pyx_k_BinnedHisto1D_clone, sizeof(__pyx_k_BinnedHisto1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_dVol, __pyx_k_BinnedHisto1D_dVol, sizeof(__pyx_k_BinnedHisto1D_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_density, __pyx_k_BinnedHisto1D_density, sizeof(__pyx_k_BinnedHisto1D_density), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_densityError, __pyx_k_BinnedHisto1D_densityError, sizeof(__pyx_k_BinnedHisto1D_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_densitySum, __pyx_k_BinnedHisto1D_densitySum, sizeof(__pyx_k_BinnedHisto1D_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_deserializeContent, __pyx_k_BinnedHisto1D_deserializeContent, sizeof(__pyx_k_BinnedHisto1D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_deserializeMeta, __pyx_k_BinnedHisto1D_deserializeMeta, sizeof(__pyx_k_BinnedHisto1D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_divideBy, __pyx_k_BinnedHisto1D_divideBy, sizeof(__pyx_k_BinnedHisto1D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_effNumEntries, __pyx_k_BinnedHisto1D_effNumEntries, sizeof(__pyx_k_BinnedHisto1D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_fill, __pyx_k_BinnedHisto1D_fill, sizeof(__pyx_k_BinnedHisto1D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_fillDim, __pyx_k_BinnedHisto1D_fillDim, sizeof(__pyx_k_BinnedHisto1D_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_indexAt, __pyx_k_BinnedHisto1D_indexAt, sizeof(__pyx_k_BinnedHisto1D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_integral, __pyx_k_BinnedHisto1D_integral, sizeof(__pyx_k_BinnedHisto1D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_integralError, __pyx_k_BinnedHisto1D_integralError, sizeof(__pyx_k_BinnedHisto1D_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_isMasked, __pyx_k_BinnedHisto1D_isMasked, sizeof(__pyx_k_BinnedHisto1D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_isVisible, __pyx_k_BinnedHisto1D_isVisible, sizeof(__pyx_k_BinnedHisto1D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_lengthContent, __pyx_k_BinnedHisto1D_lengthContent, sizeof(__pyx_k_BinnedHisto1D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_lengthMeta, __pyx_k_BinnedHisto1D_lengthMeta, sizeof(__pyx_k_BinnedHisto1D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_localToGlobalIndex, __pyx_k_BinnedHisto1D_localToGlobalIndex, sizeof(__pyx_k_BinnedHisto1D_localToGlobalIndex), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maskBin, __pyx_k_BinnedHisto1D_maskBin, sizeof(__pyx_k_BinnedHisto1D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maskBinAt, __pyx_k_BinnedHisto1D_maskBinAt, sizeof(__pyx_k_BinnedHisto1D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maskBins, __pyx_k_BinnedHisto1D_maskBins, sizeof(__pyx_k_BinnedHisto1D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maskSlice, __pyx_k_BinnedHisto1D_maskSlice, sizeof(__pyx_k_BinnedHisto1D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maskedBins, __pyx_k_BinnedHisto1D_maskedBins, sizeof(__pyx_k_BinnedHisto1D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_maxDensity, __pyx_k_BinnedHisto1D_maxDensity, sizeof(__pyx_k_BinnedHisto1D_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_mkEstimate, __pyx_k_BinnedHisto1D_mkEstimate, sizeof(__pyx_k_BinnedHisto1D_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_mkScatter, __pyx_k_BinnedHisto1D_mkScatter, sizeof(__pyx_k_BinnedHisto1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_normalize, __pyx_k_BinnedHisto1D_normalize, sizeof(__pyx_k_BinnedHisto1D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_numBins, __pyx_k_BinnedHisto1D_numBins, sizeof(__pyx_k_BinnedHisto1D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_numBinsX, __pyx_k_BinnedHisto1D_numBinsX, sizeof(__pyx_k_BinnedHisto1D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_numEntries, __pyx_k_BinnedHisto1D_numEntries, sizeof(__pyx_k_BinnedHisto1D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_rebinX, __pyx_k_BinnedHisto1D_rebinX, sizeof(__pyx_k_BinnedHisto1D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_rebinXBy, __pyx_k_BinnedHisto1D_rebinXBy, sizeof(__pyx_k_BinnedHisto1D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_rebinXTo, __pyx_k_BinnedHisto1D_rebinXTo, sizeof(__pyx_k_BinnedHisto1D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_reset, __pyx_k_BinnedHisto1D_reset, sizeof(__pyx_k_BinnedHisto1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_scaleW, __pyx_k_BinnedHisto1D_scaleW, sizeof(__pyx_k_BinnedHisto1D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_serializeContent, __pyx_k_BinnedHisto1D_serializeContent, sizeof(__pyx_k_BinnedHisto1D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_serializeMeta, __pyx_k_BinnedHisto1D_serializeMeta, sizeof(__pyx_k_BinnedHisto1D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_set, __pyx_k_BinnedHisto1D_set, sizeof(__pyx_k_BinnedHisto1D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_sumW, __pyx_k_BinnedHisto1D_sumW, sizeof(__pyx_k_BinnedHisto1D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_sumW2, __pyx_k_BinnedHisto1D_sumW2, sizeof(__pyx_k_BinnedHisto1D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_sumWA, __pyx_k_BinnedHisto1D_sumWA, sizeof(__pyx_k_BinnedHisto1D_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_sumWA2, __pyx_k_BinnedHisto1D_sumWA2, sizeof(__pyx_k_BinnedHisto1D_sumWA2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xEdges, __pyx_k_BinnedHisto1D_xEdges, sizeof(__pyx_k_BinnedHisto1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xMax, __pyx_k_BinnedHisto1D_xMax, sizeof(__pyx_k_BinnedHisto1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xMean, __pyx_k_BinnedHisto1D_xMean, sizeof(__pyx_k_BinnedHisto1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xMin, __pyx_k_BinnedHisto1D_xMin, sizeof(__pyx_k_BinnedHisto1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xRMS, __pyx_k_BinnedHisto1D_xRMS, sizeof(__pyx_k_BinnedHisto1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xStdDev, __pyx_k_BinnedHisto1D_xStdDev, sizeof(__pyx_k_BinnedHisto1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xStdErr, __pyx_k_BinnedHisto1D_xStdErr, sizeof(__pyx_k_BinnedHisto1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xVariance, __pyx_k_BinnedHisto1D_xVariance, sizeof(__pyx_k_BinnedHisto1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto1D_xWidths, __pyx_k_BinnedHisto1D_xWidths, sizeof(__pyx_k_BinnedHisto1D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D, __pyx_k_BinnedHisto2D, sizeof(__pyx_k_BinnedHisto2D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___init1, __pyx_k_BinnedHisto2D___init1, sizeof(__pyx_k_BinnedHisto2D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___init2, __pyx_k_BinnedHisto2D___init2, sizeof(__pyx_k_BinnedHisto2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___init3, __pyx_k_BinnedHisto2D___init3, sizeof(__pyx_k_BinnedHisto2D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___init4, __pyx_k_BinnedHisto2D___init4, sizeof(__pyx_k_BinnedHisto2D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___reduce_cython, __pyx_k_BinnedHisto2D___reduce_cython, sizeof(__pyx_k_BinnedHisto2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D___setstate_cython, __pyx_k_BinnedHisto2D___setstate_cython, sizeof(__pyx_k_BinnedHisto2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__bin, __pyx_k_BinnedHisto2D__bin, sizeof(__pyx_k_BinnedHisto2D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__global_set, __pyx_k_BinnedHisto2D__global_set, sizeof(__pyx_k_BinnedHisto2D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__init1, __pyx_k_BinnedHisto2D__init1, sizeof(__pyx_k_BinnedHisto2D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__init2, __pyx_k_BinnedHisto2D__init2, sizeof(__pyx_k_BinnedHisto2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__init2_locals_gen, __pyx_k_BinnedHisto2D__init2_locals_gen, sizeof(__pyx_k_BinnedHisto2D__init2_locals_gen), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__init3, __pyx_k_BinnedHisto2D__init3, sizeof(__pyx_k_BinnedHisto2D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__init4, __pyx_k_BinnedHisto2D__init4, sizeof(__pyx_k_BinnedHisto2D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__local_set, __pyx_k_BinnedHisto2D__local_set, sizeof(__pyx_k_BinnedHisto2D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__mknp, __pyx_k_BinnedHisto2D__mknp, sizeof(__pyx_k_BinnedHisto2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D__set_config, __pyx_k_BinnedHisto2D__set_config, sizeof(__pyx_k_BinnedHisto2D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_bin, __pyx_k_BinnedHisto2D_bin, sizeof(__pyx_k_BinnedHisto2D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_binAt, __pyx_k_BinnedHisto2D_binAt, sizeof(__pyx_k_BinnedHisto2D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_binDim, __pyx_k_BinnedHisto2D_binDim, sizeof(__pyx_k_BinnedHisto2D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_bins, __pyx_k_BinnedHisto2D_bins, sizeof(__pyx_k_BinnedHisto2D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_clone, __pyx_k_BinnedHisto2D_clone, sizeof(__pyx_k_BinnedHisto2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_dVol, __pyx_k_BinnedHisto2D_dVol, sizeof(__pyx_k_BinnedHisto2D_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_density, __pyx_k_BinnedHisto2D_density, sizeof(__pyx_k_BinnedHisto2D_density), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_densityError, __pyx_k_BinnedHisto2D_densityError, sizeof(__pyx_k_BinnedHisto2D_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_densitySum, __pyx_k_BinnedHisto2D_densitySum, sizeof(__pyx_k_BinnedHisto2D_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_deserializeContent, __pyx_k_BinnedHisto2D_deserializeContent, sizeof(__pyx_k_BinnedHisto2D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_deserializeMeta, __pyx_k_BinnedHisto2D_deserializeMeta, sizeof(__pyx_k_BinnedHisto2D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_divideBy, __pyx_k_BinnedHisto2D_divideBy, sizeof(__pyx_k_BinnedHisto2D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_effNumEntries, __pyx_k_BinnedHisto2D_effNumEntries, sizeof(__pyx_k_BinnedHisto2D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_fill, __pyx_k_BinnedHisto2D_fill, sizeof(__pyx_k_BinnedHisto2D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_fillDim, __pyx_k_BinnedHisto2D_fillDim, sizeof(__pyx_k_BinnedHisto2D_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_indexAt, __pyx_k_BinnedHisto2D_indexAt, sizeof(__pyx_k_BinnedHisto2D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_integral, __pyx_k_BinnedHisto2D_integral, sizeof(__pyx_k_BinnedHisto2D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_integralError, __pyx_k_BinnedHisto2D_integralError, sizeof(__pyx_k_BinnedHisto2D_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_isMasked, __pyx_k_BinnedHisto2D_isMasked, sizeof(__pyx_k_BinnedHisto2D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_isVisible, __pyx_k_BinnedHisto2D_isVisible, sizeof(__pyx_k_BinnedHisto2D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_lengthContent, __pyx_k_BinnedHisto2D_lengthContent, sizeof(__pyx_k_BinnedHisto2D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_lengthMeta, __pyx_k_BinnedHisto2D_lengthMeta, sizeof(__pyx_k_BinnedHisto2D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_localToGlobalIndex, __pyx_k_BinnedHisto2D_localToGlobalIndex, sizeof(__pyx_k_BinnedHisto2D_localToGlobalIndex), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maskBin, __pyx_k_BinnedHisto2D_maskBin, sizeof(__pyx_k_BinnedHisto2D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maskBinAt, __pyx_k_BinnedHisto2D_maskBinAt, sizeof(__pyx_k_BinnedHisto2D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maskBins, __pyx_k_BinnedHisto2D_maskBins, sizeof(__pyx_k_BinnedHisto2D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maskSlice, __pyx_k_BinnedHisto2D_maskSlice, sizeof(__pyx_k_BinnedHisto2D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maskedBins, __pyx_k_BinnedHisto2D_maskedBins, sizeof(__pyx_k_BinnedHisto2D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_maxDensity, __pyx_k_BinnedHisto2D_maxDensity, sizeof(__pyx_k_BinnedHisto2D_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_mkEstimate, __pyx_k_BinnedHisto2D_mkEstimate, sizeof(__pyx_k_BinnedHisto2D_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_mkScatter, __pyx_k_BinnedHisto2D_mkScatter, sizeof(__pyx_k_BinnedHisto2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_normalize, __pyx_k_BinnedHisto2D_normalize, sizeof(__pyx_k_BinnedHisto2D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_numBins, __pyx_k_BinnedHisto2D_numBins, sizeof(__pyx_k_BinnedHisto2D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_numBinsX, __pyx_k_BinnedHisto2D_numBinsX, sizeof(__pyx_k_BinnedHisto2D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_numBinsY, __pyx_k_BinnedHisto2D_numBinsY, sizeof(__pyx_k_BinnedHisto2D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_numEntries, __pyx_k_BinnedHisto2D_numEntries, sizeof(__pyx_k_BinnedHisto2D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinX, __pyx_k_BinnedHisto2D_rebinX, sizeof(__pyx_k_BinnedHisto2D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinXBy, __pyx_k_BinnedHisto2D_rebinXBy, sizeof(__pyx_k_BinnedHisto2D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinXTo, __pyx_k_BinnedHisto2D_rebinXTo, sizeof(__pyx_k_BinnedHisto2D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinY, __pyx_k_BinnedHisto2D_rebinY, sizeof(__pyx_k_BinnedHisto2D_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinYBy, __pyx_k_BinnedHisto2D_rebinYBy, sizeof(__pyx_k_BinnedHisto2D_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_rebinYTo, __pyx_k_BinnedHisto2D_rebinYTo, sizeof(__pyx_k_BinnedHisto2D_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_reset, __pyx_k_BinnedHisto2D_reset, sizeof(__pyx_k_BinnedHisto2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_scaleW, __pyx_k_BinnedHisto2D_scaleW, sizeof(__pyx_k_BinnedHisto2D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_serializeContent, __pyx_k_BinnedHisto2D_serializeContent, sizeof(__pyx_k_BinnedHisto2D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_serializeMeta, __pyx_k_BinnedHisto2D_serializeMeta, sizeof(__pyx_k_BinnedHisto2D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_set, __pyx_k_BinnedHisto2D_set, sizeof(__pyx_k_BinnedHisto2D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_sumW, __pyx_k_BinnedHisto2D_sumW, sizeof(__pyx_k_BinnedHisto2D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_sumW2, __pyx_k_BinnedHisto2D_sumW2, sizeof(__pyx_k_BinnedHisto2D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_sumWA, __pyx_k_BinnedHisto2D_sumWA, sizeof(__pyx_k_BinnedHisto2D_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_sumWA2, __pyx_k_BinnedHisto2D_sumWA2, sizeof(__pyx_k_BinnedHisto2D_sumWA2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xEdges, __pyx_k_BinnedHisto2D_xEdges, sizeof(__pyx_k_BinnedHisto2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xMax, __pyx_k_BinnedHisto2D_xMax, sizeof(__pyx_k_BinnedHisto2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xMean, __pyx_k_BinnedHisto2D_xMean, sizeof(__pyx_k_BinnedHisto2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xMin, __pyx_k_BinnedHisto2D_xMin, sizeof(__pyx_k_BinnedHisto2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xRMS, __pyx_k_BinnedHisto2D_xRMS, sizeof(__pyx_k_BinnedHisto2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xStdDev, __pyx_k_BinnedHisto2D_xStdDev, sizeof(__pyx_k_BinnedHisto2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xStdErr, __pyx_k_BinnedHisto2D_xStdErr, sizeof(__pyx_k_BinnedHisto2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xVariance, __pyx_k_BinnedHisto2D_xVariance, sizeof(__pyx_k_BinnedHisto2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_xWidths, __pyx_k_BinnedHisto2D_xWidths, sizeof(__pyx_k_BinnedHisto2D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yEdges, __pyx_k_BinnedHisto2D_yEdges, sizeof(__pyx_k_BinnedHisto2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yMax, __pyx_k_BinnedHisto2D_yMax, sizeof(__pyx_k_BinnedHisto2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yMean, __pyx_k_BinnedHisto2D_yMean, sizeof(__pyx_k_BinnedHisto2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yMin, __pyx_k_BinnedHisto2D_yMin, sizeof(__pyx_k_BinnedHisto2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yRMS, __pyx_k_BinnedHisto2D_yRMS, sizeof(__pyx_k_BinnedHisto2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yStdDev, __pyx_k_BinnedHisto2D_yStdDev, sizeof(__pyx_k_BinnedHisto2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yStdErr, __pyx_k_BinnedHisto2D_yStdErr, sizeof(__pyx_k_BinnedHisto2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yVariance, __pyx_k_BinnedHisto2D_yVariance, sizeof(__pyx_k_BinnedHisto2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto2D_yWidths, __pyx_k_BinnedHisto2D_yWidths, sizeof(__pyx_k_BinnedHisto2D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D, __pyx_k_BinnedHisto3D, sizeof(__pyx_k_BinnedHisto3D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___init1, __pyx_k_BinnedHisto3D___init1, sizeof(__pyx_k_BinnedHisto3D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___init2, __pyx_k_BinnedHisto3D___init2, sizeof(__pyx_k_BinnedHisto3D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___init3, __pyx_k_BinnedHisto3D___init3, sizeof(__pyx_k_BinnedHisto3D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___init4, __pyx_k_BinnedHisto3D___init4, sizeof(__pyx_k_BinnedHisto3D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___reduce_cython, __pyx_k_BinnedHisto3D___reduce_cython, sizeof(__pyx_k_BinnedHisto3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D___setstate_cython, __pyx_k_BinnedHisto3D___setstate_cython, sizeof(__pyx_k_BinnedHisto3D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__bin, __pyx_k_BinnedHisto3D__bin, sizeof(__pyx_k_BinnedHisto3D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__global_set, __pyx_k_BinnedHisto3D__global_set, sizeof(__pyx_k_BinnedHisto3D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__init1, __pyx_k_BinnedHisto3D__init1, sizeof(__pyx_k_BinnedHisto3D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__init2, __pyx_k_BinnedHisto3D__init2, sizeof(__pyx_k_BinnedHisto3D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__init2_locals_gen, __pyx_k_BinnedHisto3D__init2_locals_gen, sizeof(__pyx_k_BinnedHisto3D__init2_locals_gen), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__init3, __pyx_k_BinnedHisto3D__init3, sizeof(__pyx_k_BinnedHisto3D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__init4, __pyx_k_BinnedHisto3D__init4, sizeof(__pyx_k_BinnedHisto3D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__local_set, __pyx_k_BinnedHisto3D__local_set, sizeof(__pyx_k_BinnedHisto3D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__mknp, __pyx_k_BinnedHisto3D__mknp, sizeof(__pyx_k_BinnedHisto3D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D__set_config, __pyx_k_BinnedHisto3D__set_config, sizeof(__pyx_k_BinnedHisto3D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_bin, __pyx_k_BinnedHisto3D_bin, sizeof(__pyx_k_BinnedHisto3D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_binAt, __pyx_k_BinnedHisto3D_binAt, sizeof(__pyx_k_BinnedHisto3D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_binDim, __pyx_k_BinnedHisto3D_binDim, sizeof(__pyx_k_BinnedHisto3D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_bins, __pyx_k_BinnedHisto3D_bins, sizeof(__pyx_k_BinnedHisto3D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_clone, __pyx_k_BinnedHisto3D_clone, sizeof(__pyx_k_BinnedHisto3D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_dVol, __pyx_k_BinnedHisto3D_dVol, sizeof(__pyx_k_BinnedHisto3D_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_density, __pyx_k_BinnedHisto3D_density, sizeof(__pyx_k_BinnedHisto3D_density), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_densityError, __pyx_k_BinnedHisto3D_densityError, sizeof(__pyx_k_BinnedHisto3D_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_densitySum, __pyx_k_BinnedHisto3D_densitySum, sizeof(__pyx_k_BinnedHisto3D_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_deserializeContent, __pyx_k_BinnedHisto3D_deserializeContent, sizeof(__pyx_k_BinnedHisto3D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_deserializeMeta, __pyx_k_BinnedHisto3D_deserializeMeta, sizeof(__pyx_k_BinnedHisto3D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_divideBy, __pyx_k_BinnedHisto3D_divideBy, sizeof(__pyx_k_BinnedHisto3D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_effNumEntries, __pyx_k_BinnedHisto3D_effNumEntries, sizeof(__pyx_k_BinnedHisto3D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_fill, __pyx_k_BinnedHisto3D_fill, sizeof(__pyx_k_BinnedHisto3D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_fillDim, __pyx_k_BinnedHisto3D_fillDim, sizeof(__pyx_k_BinnedHisto3D_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_indexAt, __pyx_k_BinnedHisto3D_indexAt, sizeof(__pyx_k_BinnedHisto3D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_integral, __pyx_k_BinnedHisto3D_integral, sizeof(__pyx_k_BinnedHisto3D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_integralError, __pyx_k_BinnedHisto3D_integralError, sizeof(__pyx_k_BinnedHisto3D_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_isMasked, __pyx_k_BinnedHisto3D_isMasked, sizeof(__pyx_k_BinnedHisto3D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_isVisible, __pyx_k_BinnedHisto3D_isVisible, sizeof(__pyx_k_BinnedHisto3D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_lengthContent, __pyx_k_BinnedHisto3D_lengthContent, sizeof(__pyx_k_BinnedHisto3D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_lengthMeta, __pyx_k_BinnedHisto3D_lengthMeta, sizeof(__pyx_k_BinnedHisto3D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_localToGlobalIndex, __pyx_k_BinnedHisto3D_localToGlobalIndex, sizeof(__pyx_k_BinnedHisto3D_localToGlobalIndex), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maskBin, __pyx_k_BinnedHisto3D_maskBin, sizeof(__pyx_k_BinnedHisto3D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maskBinAt, __pyx_k_BinnedHisto3D_maskBinAt, sizeof(__pyx_k_BinnedHisto3D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maskBins, __pyx_k_BinnedHisto3D_maskBins, sizeof(__pyx_k_BinnedHisto3D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maskSlice, __pyx_k_BinnedHisto3D_maskSlice, sizeof(__pyx_k_BinnedHisto3D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maskedBins, __pyx_k_BinnedHisto3D_maskedBins, sizeof(__pyx_k_BinnedHisto3D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_maxDensity, __pyx_k_BinnedHisto3D_maxDensity, sizeof(__pyx_k_BinnedHisto3D_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_mkEstimate, __pyx_k_BinnedHisto3D_mkEstimate, sizeof(__pyx_k_BinnedHisto3D_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_mkScatter, __pyx_k_BinnedHisto3D_mkScatter, sizeof(__pyx_k_BinnedHisto3D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_normalize, __pyx_k_BinnedHisto3D_normalize, sizeof(__pyx_k_BinnedHisto3D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_numBins, __pyx_k_BinnedHisto3D_numBins, sizeof(__pyx_k_BinnedHisto3D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_numBinsX, __pyx_k_BinnedHisto3D_numBinsX, sizeof(__pyx_k_BinnedHisto3D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_numBinsY, __pyx_k_BinnedHisto3D_numBinsY, sizeof(__pyx_k_BinnedHisto3D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_numBinsZ, __pyx_k_BinnedHisto3D_numBinsZ, sizeof(__pyx_k_BinnedHisto3D_numBinsZ), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_numEntries, __pyx_k_BinnedHisto3D_numEntries, sizeof(__pyx_k_BinnedHisto3D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinX, __pyx_k_BinnedHisto3D_rebinX, sizeof(__pyx_k_BinnedHisto3D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinXBy, __pyx_k_BinnedHisto3D_rebinXBy, sizeof(__pyx_k_BinnedHisto3D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinXTo, __pyx_k_BinnedHisto3D_rebinXTo, sizeof(__pyx_k_BinnedHisto3D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinY, __pyx_k_BinnedHisto3D_rebinY, sizeof(__pyx_k_BinnedHisto3D_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinYBy, __pyx_k_BinnedHisto3D_rebinYBy, sizeof(__pyx_k_BinnedHisto3D_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinYTo, __pyx_k_BinnedHisto3D_rebinYTo, sizeof(__pyx_k_BinnedHisto3D_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinZ, __pyx_k_BinnedHisto3D_rebinZ, sizeof(__pyx_k_BinnedHisto3D_rebinZ), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinZBy, __pyx_k_BinnedHisto3D_rebinZBy, sizeof(__pyx_k_BinnedHisto3D_rebinZBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_rebinZTo, __pyx_k_BinnedHisto3D_rebinZTo, sizeof(__pyx_k_BinnedHisto3D_rebinZTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_reset, __pyx_k_BinnedHisto3D_reset, sizeof(__pyx_k_BinnedHisto3D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_scaleW, __pyx_k_BinnedHisto3D_scaleW, sizeof(__pyx_k_BinnedHisto3D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_serializeContent, __pyx_k_BinnedHisto3D_serializeContent, sizeof(__pyx_k_BinnedHisto3D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_serializeMeta, __pyx_k_BinnedHisto3D_serializeMeta, sizeof(__pyx_k_BinnedHisto3D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_set, __pyx_k_BinnedHisto3D_set, sizeof(__pyx_k_BinnedHisto3D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_sumW, __pyx_k_BinnedHisto3D_sumW, sizeof(__pyx_k_BinnedHisto3D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_sumW2, __pyx_k_BinnedHisto3D_sumW2, sizeof(__pyx_k_BinnedHisto3D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_sumWA, __pyx_k_BinnedHisto3D_sumWA, sizeof(__pyx_k_BinnedHisto3D_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_sumWA2, __pyx_k_BinnedHisto3D_sumWA2, sizeof(__pyx_k_BinnedHisto3D_sumWA2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xEdges, __pyx_k_BinnedHisto3D_xEdges, sizeof(__pyx_k_BinnedHisto3D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xMax, __pyx_k_BinnedHisto3D_xMax, sizeof(__pyx_k_BinnedHisto3D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xMean, __pyx_k_BinnedHisto3D_xMean, sizeof(__pyx_k_BinnedHisto3D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xMin, __pyx_k_BinnedHisto3D_xMin, sizeof(__pyx_k_BinnedHisto3D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xRMS, __pyx_k_BinnedHisto3D_xRMS, sizeof(__pyx_k_BinnedHisto3D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xStdDev, __pyx_k_BinnedHisto3D_xStdDev, sizeof(__pyx_k_BinnedHisto3D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xStdErr, __pyx_k_BinnedHisto3D_xStdErr, sizeof(__pyx_k_BinnedHisto3D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xVariance, __pyx_k_BinnedHisto3D_xVariance, sizeof(__pyx_k_BinnedHisto3D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_xWidths, __pyx_k_BinnedHisto3D_xWidths, sizeof(__pyx_k_BinnedHisto3D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yEdges, __pyx_k_BinnedHisto3D_yEdges, sizeof(__pyx_k_BinnedHisto3D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yMax, __pyx_k_BinnedHisto3D_yMax, sizeof(__pyx_k_BinnedHisto3D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yMean, __pyx_k_BinnedHisto3D_yMean, sizeof(__pyx_k_BinnedHisto3D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yMin, __pyx_k_BinnedHisto3D_yMin, sizeof(__pyx_k_BinnedHisto3D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yRMS, __pyx_k_BinnedHisto3D_yRMS, sizeof(__pyx_k_BinnedHisto3D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yStdDev, __pyx_k_BinnedHisto3D_yStdDev, sizeof(__pyx_k_BinnedHisto3D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yStdErr, __pyx_k_BinnedHisto3D_yStdErr, sizeof(__pyx_k_BinnedHisto3D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yVariance, __pyx_k_BinnedHisto3D_yVariance, sizeof(__pyx_k_BinnedHisto3D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_yWidths, __pyx_k_BinnedHisto3D_yWidths, sizeof(__pyx_k_BinnedHisto3D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zEdges, __pyx_k_BinnedHisto3D_zEdges, sizeof(__pyx_k_BinnedHisto3D_zEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zMax, __pyx_k_BinnedHisto3D_zMax, sizeof(__pyx_k_BinnedHisto3D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zMean, __pyx_k_BinnedHisto3D_zMean, sizeof(__pyx_k_BinnedHisto3D_zMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zMin, __pyx_k_BinnedHisto3D_zMin, sizeof(__pyx_k_BinnedHisto3D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zRMS, __pyx_k_BinnedHisto3D_zRMS, sizeof(__pyx_k_BinnedHisto3D_zRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zStdDev, __pyx_k_BinnedHisto3D_zStdDev, sizeof(__pyx_k_BinnedHisto3D_zStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zStdErr, __pyx_k_BinnedHisto3D_zStdErr, sizeof(__pyx_k_BinnedHisto3D_zStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zVariance, __pyx_k_BinnedHisto3D_zVariance, sizeof(__pyx_k_BinnedHisto3D_zVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedHisto3D_zWidths, __pyx_k_BinnedHisto3D_zWidths, sizeof(__pyx_k_BinnedHisto3D_zWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D, __pyx_k_BinnedProfile1D, sizeof(__pyx_k_BinnedProfile1D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___init1, __pyx_k_BinnedProfile1D___init1, sizeof(__pyx_k_BinnedProfile1D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___init2, __pyx_k_BinnedProfile1D___init2, sizeof(__pyx_k_BinnedProfile1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___init3, __pyx_k_BinnedProfile1D___init3, sizeof(__pyx_k_BinnedProfile1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___init4, __pyx_k_BinnedProfile1D___init4, sizeof(__pyx_k_BinnedProfile1D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___reduce_cython, __pyx_k_BinnedProfile1D___reduce_cython, sizeof(__pyx_k_BinnedProfile1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D___setstate_cytho, __pyx_k_BinnedProfile1D___setstate_cytho, sizeof(__pyx_k_BinnedProfile1D___setstate_cytho), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__bin, __pyx_k_BinnedProfile1D__bin, sizeof(__pyx_k_BinnedProfile1D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__global_set, __pyx_k_BinnedProfile1D__global_set, sizeof(__pyx_k_BinnedProfile1D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__init1, __pyx_k_BinnedProfile1D__init1, sizeof(__pyx_k_BinnedProfile1D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__init2, __pyx_k_BinnedProfile1D__init2, sizeof(__pyx_k_BinnedProfile1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__init2_locals_g, __pyx_k_BinnedProfile1D__init2_locals_g, sizeof(__pyx_k_BinnedProfile1D__init2_locals_g), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__init3, __pyx_k_BinnedProfile1D__init3, sizeof(__pyx_k_BinnedProfile1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__init4, __pyx_k_BinnedProfile1D__init4, sizeof(__pyx_k_BinnedProfile1D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__local_set, __pyx_k_BinnedProfile1D__local_set, sizeof(__pyx_k_BinnedProfile1D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__mknp, __pyx_k_BinnedProfile1D__mknp, sizeof(__pyx_k_BinnedProfile1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D__set_config, __pyx_k_BinnedProfile1D__set_config, sizeof(__pyx_k_BinnedProfile1D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_bin, __pyx_k_BinnedProfile1D_bin, sizeof(__pyx_k_BinnedProfile1D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_binAt, __pyx_k_BinnedProfile1D_binAt, sizeof(__pyx_k_BinnedProfile1D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_binDim, __pyx_k_BinnedProfile1D_binDim, sizeof(__pyx_k_BinnedProfile1D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_bins, __pyx_k_BinnedProfile1D_bins, sizeof(__pyx_k_BinnedProfile1D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_clone, __pyx_k_BinnedProfile1D_clone, sizeof(__pyx_k_BinnedProfile1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_dVol, __pyx_k_BinnedProfile1D_dVol, sizeof(__pyx_k_BinnedProfile1D_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_density, __pyx_k_BinnedProfile1D_density, sizeof(__pyx_k_BinnedProfile1D_density), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_densityError, __pyx_k_BinnedProfile1D_densityError, sizeof(__pyx_k_BinnedProfile1D_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_densitySum, __pyx_k_BinnedProfile1D_densitySum, sizeof(__pyx_k_BinnedProfile1D_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_deserializeConte, __pyx_k_BinnedProfile1D_deserializeConte, sizeof(__pyx_k_BinnedProfile1D_deserializeConte), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_deserializeMeta, __pyx_k_BinnedProfile1D_deserializeMeta, sizeof(__pyx_k_BinnedProfile1D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_divideBy, __pyx_k_BinnedProfile1D_divideBy, sizeof(__pyx_k_BinnedProfile1D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_effNumEntries, __pyx_k_BinnedProfile1D_effNumEntries, sizeof(__pyx_k_BinnedProfile1D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_fill, __pyx_k_BinnedProfile1D_fill, sizeof(__pyx_k_BinnedProfile1D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_fillDim, __pyx_k_BinnedProfile1D_fillDim, sizeof(__pyx_k_BinnedProfile1D_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_indexAt, __pyx_k_BinnedProfile1D_indexAt, sizeof(__pyx_k_BinnedProfile1D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_integral, __pyx_k_BinnedProfile1D_integral, sizeof(__pyx_k_BinnedProfile1D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_integralError, __pyx_k_BinnedProfile1D_integralError, sizeof(__pyx_k_BinnedProfile1D_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_isMasked, __pyx_k_BinnedProfile1D_isMasked, sizeof(__pyx_k_BinnedProfile1D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_isVisible, __pyx_k_BinnedProfile1D_isVisible, sizeof(__pyx_k_BinnedProfile1D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_lengthContent, __pyx_k_BinnedProfile1D_lengthContent, sizeof(__pyx_k_BinnedProfile1D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_lengthMeta, __pyx_k_BinnedProfile1D_lengthMeta, sizeof(__pyx_k_BinnedProfile1D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_localToGlobalInd, __pyx_k_BinnedProfile1D_localToGlobalInd, sizeof(__pyx_k_BinnedProfile1D_localToGlobalInd), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maskBin, __pyx_k_BinnedProfile1D_maskBin, sizeof(__pyx_k_BinnedProfile1D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maskBinAt, __pyx_k_BinnedProfile1D_maskBinAt, sizeof(__pyx_k_BinnedProfile1D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maskBins, __pyx_k_BinnedProfile1D_maskBins, sizeof(__pyx_k_BinnedProfile1D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maskSlice, __pyx_k_BinnedProfile1D_maskSlice, sizeof(__pyx_k_BinnedProfile1D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maskedBins, __pyx_k_BinnedProfile1D_maskedBins, sizeof(__pyx_k_BinnedProfile1D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_maxDensity, __pyx_k_BinnedProfile1D_maxDensity, sizeof(__pyx_k_BinnedProfile1D_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_mkEstimate, __pyx_k_BinnedProfile1D_mkEstimate, sizeof(__pyx_k_BinnedProfile1D_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_mkHisto, __pyx_k_BinnedProfile1D_mkHisto, sizeof(__pyx_k_BinnedProfile1D_mkHisto), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_mkScatter, __pyx_k_BinnedProfile1D_mkScatter, sizeof(__pyx_k_BinnedProfile1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_normalize, __pyx_k_BinnedProfile1D_normalize, sizeof(__pyx_k_BinnedProfile1D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_numBins, __pyx_k_BinnedProfile1D_numBins, sizeof(__pyx_k_BinnedProfile1D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_numBinsX, __pyx_k_BinnedProfile1D_numBinsX, sizeof(__pyx_k_BinnedProfile1D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_numEntries, __pyx_k_BinnedProfile1D_numEntries, sizeof(__pyx_k_BinnedProfile1D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_rebinX, __pyx_k_BinnedProfile1D_rebinX, sizeof(__pyx_k_BinnedProfile1D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_rebinXBy, __pyx_k_BinnedProfile1D_rebinXBy, sizeof(__pyx_k_BinnedProfile1D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_rebinXTo, __pyx_k_BinnedProfile1D_rebinXTo, sizeof(__pyx_k_BinnedProfile1D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_reset, __pyx_k_BinnedProfile1D_reset, sizeof(__pyx_k_BinnedProfile1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_scaleW, __pyx_k_BinnedProfile1D_scaleW, sizeof(__pyx_k_BinnedProfile1D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_serializeContent, __pyx_k_BinnedProfile1D_serializeContent, sizeof(__pyx_k_BinnedProfile1D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_serializeMeta, __pyx_k_BinnedProfile1D_serializeMeta, sizeof(__pyx_k_BinnedProfile1D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_set, __pyx_k_BinnedProfile1D_set, sizeof(__pyx_k_BinnedProfile1D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_sumW, __pyx_k_BinnedProfile1D_sumW, sizeof(__pyx_k_BinnedProfile1D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_sumW2, __pyx_k_BinnedProfile1D_sumW2, sizeof(__pyx_k_BinnedProfile1D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_sumWA, __pyx_k_BinnedProfile1D_sumWA, sizeof(__pyx_k_BinnedProfile1D_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_sumWA2, __pyx_k_BinnedProfile1D_sumWA2, sizeof(__pyx_k_BinnedProfile1D_sumWA2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xEdges, __pyx_k_BinnedProfile1D_xEdges, sizeof(__pyx_k_BinnedProfile1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xMax, __pyx_k_BinnedProfile1D_xMax, sizeof(__pyx_k_BinnedProfile1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xMean, __pyx_k_BinnedProfile1D_xMean, sizeof(__pyx_k_BinnedProfile1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xMin, __pyx_k_BinnedProfile1D_xMin, sizeof(__pyx_k_BinnedProfile1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xRMS, __pyx_k_BinnedProfile1D_xRMS, sizeof(__pyx_k_BinnedProfile1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xStdDev, __pyx_k_BinnedProfile1D_xStdDev, sizeof(__pyx_k_BinnedProfile1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xStdErr, __pyx_k_BinnedProfile1D_xStdErr, sizeof(__pyx_k_BinnedProfile1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xVariance, __pyx_k_BinnedProfile1D_xVariance, sizeof(__pyx_k_BinnedProfile1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile1D_xWidths, __pyx_k_BinnedProfile1D_xWidths, sizeof(__pyx_k_BinnedProfile1D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D, __pyx_k_BinnedProfile2D, sizeof(__pyx_k_BinnedProfile2D), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___init1, __pyx_k_BinnedProfile2D___init1, sizeof(__pyx_k_BinnedProfile2D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___init2, __pyx_k_BinnedProfile2D___init2, sizeof(__pyx_k_BinnedProfile2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___init3, __pyx_k_BinnedProfile2D___init3, sizeof(__pyx_k_BinnedProfile2D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___init4, __pyx_k_BinnedProfile2D___init4, sizeof(__pyx_k_BinnedProfile2D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___reduce_cython, __pyx_k_BinnedProfile2D___reduce_cython, sizeof(__pyx_k_BinnedProfile2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D___setstate_cytho, __pyx_k_BinnedProfile2D___setstate_cytho, sizeof(__pyx_k_BinnedProfile2D___setstate_cytho), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__bin, __pyx_k_BinnedProfile2D__bin, sizeof(__pyx_k_BinnedProfile2D__bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__global_set, __pyx_k_BinnedProfile2D__global_set, sizeof(__pyx_k_BinnedProfile2D__global_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__init1, __pyx_k_BinnedProfile2D__init1, sizeof(__pyx_k_BinnedProfile2D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__init2, __pyx_k_BinnedProfile2D__init2, sizeof(__pyx_k_BinnedProfile2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__init2_locals_g, __pyx_k_BinnedProfile2D__init2_locals_g, sizeof(__pyx_k_BinnedProfile2D__init2_locals_g), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__init3, __pyx_k_BinnedProfile2D__init3, sizeof(__pyx_k_BinnedProfile2D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__init4, __pyx_k_BinnedProfile2D__init4, sizeof(__pyx_k_BinnedProfile2D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__local_set, __pyx_k_BinnedProfile2D__local_set, sizeof(__pyx_k_BinnedProfile2D__local_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__mknp, __pyx_k_BinnedProfile2D__mknp, sizeof(__pyx_k_BinnedProfile2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D__set_config, __pyx_k_BinnedProfile2D__set_config, sizeof(__pyx_k_BinnedProfile2D__set_config), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_bin, __pyx_k_BinnedProfile2D_bin, sizeof(__pyx_k_BinnedProfile2D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_binAt, __pyx_k_BinnedProfile2D_binAt, sizeof(__pyx_k_BinnedProfile2D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_binDim, __pyx_k_BinnedProfile2D_binDim, sizeof(__pyx_k_BinnedProfile2D_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_bins, __pyx_k_BinnedProfile2D_bins, sizeof(__pyx_k_BinnedProfile2D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_clone, __pyx_k_BinnedProfile2D_clone, sizeof(__pyx_k_BinnedProfile2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_dVol, __pyx_k_BinnedProfile2D_dVol, sizeof(__pyx_k_BinnedProfile2D_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_density, __pyx_k_BinnedProfile2D_density, sizeof(__pyx_k_BinnedProfile2D_density), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_densityError, __pyx_k_BinnedProfile2D_densityError, sizeof(__pyx_k_BinnedProfile2D_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_densitySum, __pyx_k_BinnedProfile2D_densitySum, sizeof(__pyx_k_BinnedProfile2D_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_deserializeConte, __pyx_k_BinnedProfile2D_deserializeConte, sizeof(__pyx_k_BinnedProfile2D_deserializeConte), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_deserializeMeta, __pyx_k_BinnedProfile2D_deserializeMeta, sizeof(__pyx_k_BinnedProfile2D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_divideBy, __pyx_k_BinnedProfile2D_divideBy, sizeof(__pyx_k_BinnedProfile2D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_effNumEntries, __pyx_k_BinnedProfile2D_effNumEntries, sizeof(__pyx_k_BinnedProfile2D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_fill, __pyx_k_BinnedProfile2D_fill, sizeof(__pyx_k_BinnedProfile2D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_fillDim, __pyx_k_BinnedProfile2D_fillDim, sizeof(__pyx_k_BinnedProfile2D_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_indexAt, __pyx_k_BinnedProfile2D_indexAt, sizeof(__pyx_k_BinnedProfile2D_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_integral, __pyx_k_BinnedProfile2D_integral, sizeof(__pyx_k_BinnedProfile2D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_integralError, __pyx_k_BinnedProfile2D_integralError, sizeof(__pyx_k_BinnedProfile2D_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_isMasked, __pyx_k_BinnedProfile2D_isMasked, sizeof(__pyx_k_BinnedProfile2D_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_isVisible, __pyx_k_BinnedProfile2D_isVisible, sizeof(__pyx_k_BinnedProfile2D_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_lengthContent, __pyx_k_BinnedProfile2D_lengthContent, sizeof(__pyx_k_BinnedProfile2D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_lengthMeta, __pyx_k_BinnedProfile2D_lengthMeta, sizeof(__pyx_k_BinnedProfile2D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_localToGlobalInd, __pyx_k_BinnedProfile2D_localToGlobalInd, sizeof(__pyx_k_BinnedProfile2D_localToGlobalInd), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maskBin, __pyx_k_BinnedProfile2D_maskBin, sizeof(__pyx_k_BinnedProfile2D_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maskBinAt, __pyx_k_BinnedProfile2D_maskBinAt, sizeof(__pyx_k_BinnedProfile2D_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maskBins, __pyx_k_BinnedProfile2D_maskBins, sizeof(__pyx_k_BinnedProfile2D_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maskSlice, __pyx_k_BinnedProfile2D_maskSlice, sizeof(__pyx_k_BinnedProfile2D_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maskedBins, __pyx_k_BinnedProfile2D_maskedBins, sizeof(__pyx_k_BinnedProfile2D_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_maxDensity, __pyx_k_BinnedProfile2D_maxDensity, sizeof(__pyx_k_BinnedProfile2D_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_mkEstimate, __pyx_k_BinnedProfile2D_mkEstimate, sizeof(__pyx_k_BinnedProfile2D_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_mkHisto, __pyx_k_BinnedProfile2D_mkHisto, sizeof(__pyx_k_BinnedProfile2D_mkHisto), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_mkScatter, __pyx_k_BinnedProfile2D_mkScatter, sizeof(__pyx_k_BinnedProfile2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_normalize, __pyx_k_BinnedProfile2D_normalize, sizeof(__pyx_k_BinnedProfile2D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_numBins, __pyx_k_BinnedProfile2D_numBins, sizeof(__pyx_k_BinnedProfile2D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_numBinsX, __pyx_k_BinnedProfile2D_numBinsX, sizeof(__pyx_k_BinnedProfile2D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_numBinsY, __pyx_k_BinnedProfile2D_numBinsY, sizeof(__pyx_k_BinnedProfile2D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_numEntries, __pyx_k_BinnedProfile2D_numEntries, sizeof(__pyx_k_BinnedProfile2D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinX, __pyx_k_BinnedProfile2D_rebinX, sizeof(__pyx_k_BinnedProfile2D_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinXBy, __pyx_k_BinnedProfile2D_rebinXBy, sizeof(__pyx_k_BinnedProfile2D_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinXTo, __pyx_k_BinnedProfile2D_rebinXTo, sizeof(__pyx_k_BinnedProfile2D_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinY, __pyx_k_BinnedProfile2D_rebinY, sizeof(__pyx_k_BinnedProfile2D_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinYBy, __pyx_k_BinnedProfile2D_rebinYBy, sizeof(__pyx_k_BinnedProfile2D_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_rebinYTo, __pyx_k_BinnedProfile2D_rebinYTo, sizeof(__pyx_k_BinnedProfile2D_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_reset, __pyx_k_BinnedProfile2D_reset, sizeof(__pyx_k_BinnedProfile2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_scaleW, __pyx_k_BinnedProfile2D_scaleW, sizeof(__pyx_k_BinnedProfile2D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_serializeContent, __pyx_k_BinnedProfile2D_serializeContent, sizeof(__pyx_k_BinnedProfile2D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_serializeMeta, __pyx_k_BinnedProfile2D_serializeMeta, sizeof(__pyx_k_BinnedProfile2D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_set, __pyx_k_BinnedProfile2D_set, sizeof(__pyx_k_BinnedProfile2D_set), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_sumW, __pyx_k_BinnedProfile2D_sumW, sizeof(__pyx_k_BinnedProfile2D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_sumW2, __pyx_k_BinnedProfile2D_sumW2, sizeof(__pyx_k_BinnedProfile2D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_sumWA, __pyx_k_BinnedProfile2D_sumWA, sizeof(__pyx_k_BinnedProfile2D_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_sumWA2, __pyx_k_BinnedProfile2D_sumWA2, sizeof(__pyx_k_BinnedProfile2D_sumWA2), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xEdges, __pyx_k_BinnedProfile2D_xEdges, sizeof(__pyx_k_BinnedProfile2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xMax, __pyx_k_BinnedProfile2D_xMax, sizeof(__pyx_k_BinnedProfile2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xMean, __pyx_k_BinnedProfile2D_xMean, sizeof(__pyx_k_BinnedProfile2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xMin, __pyx_k_BinnedProfile2D_xMin, sizeof(__pyx_k_BinnedProfile2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xRMS, __pyx_k_BinnedProfile2D_xRMS, sizeof(__pyx_k_BinnedProfile2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xStdDev, __pyx_k_BinnedProfile2D_xStdDev, sizeof(__pyx_k_BinnedProfile2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xStdErr, __pyx_k_BinnedProfile2D_xStdErr, sizeof(__pyx_k_BinnedProfile2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xVariance, __pyx_k_BinnedProfile2D_xVariance, sizeof(__pyx_k_BinnedProfile2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_xWidths, __pyx_k_BinnedProfile2D_xWidths, sizeof(__pyx_k_BinnedProfile2D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yEdges, __pyx_k_BinnedProfile2D_yEdges, sizeof(__pyx_k_BinnedProfile2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yMax, __pyx_k_BinnedProfile2D_yMax, sizeof(__pyx_k_BinnedProfile2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yMean, __pyx_k_BinnedProfile2D_yMean, sizeof(__pyx_k_BinnedProfile2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yMin, __pyx_k_BinnedProfile2D_yMin, sizeof(__pyx_k_BinnedProfile2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yRMS, __pyx_k_BinnedProfile2D_yRMS, sizeof(__pyx_k_BinnedProfile2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yStdDev, __pyx_k_BinnedProfile2D_yStdDev, sizeof(__pyx_k_BinnedProfile2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yStdErr, __pyx_k_BinnedProfile2D_yStdErr, sizeof(__pyx_k_BinnedProfile2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yVariance, __pyx_k_BinnedProfile2D_yVariance, sizeof(__pyx_k_BinnedProfile2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_BinnedProfile2D_yWidths, __pyx_k_BinnedProfile2D_yWidths, sizeof(__pyx_k_BinnedProfile2D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Binning, __pyx_k_Binning, sizeof(__pyx_k_Binning), 0, 0, 1, 1},
    {&__pyx_n_s_Binning___init, __pyx_k_Binning___init, sizeof(__pyx_k_Binning___init), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_config, __pyx_k_Binning_config, sizeof(__pyx_k_Binning_config), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_config_locals_genexpr, __pyx_k_Binning_config_locals_genexpr, sizeof(__pyx_k_Binning_config_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_edge, __pyx_k_Binning_edge, sizeof(__pyx_k_Binning_edge), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_max, __pyx_k_Binning_max, sizeof(__pyx_k_Binning_max), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_mid, __pyx_k_Binning_mid, sizeof(__pyx_k_Binning_mid), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_min, __pyx_k_Binning_min, sizeof(__pyx_k_Binning_min), 0, 0, 1, 1},
    {&__pyx_n_s_Binning_width, __pyx_k_Binning_width, sizeof(__pyx_k_Binning_width), 0, 0, 1, 1},
    {&__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_deserializeContent, __pyx_k_Counter_deserializeContent, sizeof(__pyx_k_Counter_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_deserializeMeta, __pyx_k_Counter_deserializeMeta, sizeof(__pyx_k_Counter_deserializeMeta), 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_lengthContent, __pyx_k_Counter_lengthContent, sizeof(__pyx_k_Counter_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_lengthMeta, __pyx_k_Counter_lengthMeta, sizeof(__pyx_k_Counter_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_mkEstimate, __pyx_k_Counter_mkEstimate, sizeof(__pyx_k_Counter_mkEstimate), 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_serializeContent, __pyx_k_Counter_serializeContent, sizeof(__pyx_k_Counter_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_serializeMeta, __pyx_k_Counter_serializeMeta, sizeof(__pyx_k_Counter_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_set, __pyx_k_Counter_set, sizeof(__pyx_k_Counter_set), 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_D, __pyx_k_D, sizeof(__pyx_k_D), 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_set, __pyx_k_Dbn0D_set, sizeof(__pyx_k_Dbn0D_set), 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_RMS, __pyx_k_Dbn1D_RMS, sizeof(__pyx_k_Dbn1D_RMS), 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_n_s_Dbn1D_mean, __pyx_k_Dbn1D_mean, sizeof(__pyx_k_Dbn1D_mean), 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_scale, __pyx_k_Dbn1D_scale, sizeof(__pyx_k_Dbn1D_scale), 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_set, __pyx_k_Dbn1D_set, sizeof(__pyx_k_Dbn1D_set), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_stdDev, __pyx_k_Dbn1D_stdDev, sizeof(__pyx_k_Dbn1D_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_stdErr, __pyx_k_Dbn1D_stdErr, sizeof(__pyx_k_Dbn1D_stdErr), 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_variance, __pyx_k_Dbn1D_variance, sizeof(__pyx_k_Dbn1D_variance), 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_RMS, __pyx_k_Dbn2D_RMS, sizeof(__pyx_k_Dbn2D_RMS), 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_crossTerm, __pyx_k_Dbn2D_crossTerm, sizeof(__pyx_k_Dbn2D_crossTerm), 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_scale, __pyx_k_Dbn2D_scale, sizeof(__pyx_k_Dbn2D_scale), 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_scaleY, __pyx_k_Dbn2D_scaleY, sizeof(__pyx_k_Dbn2D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_set, __pyx_k_Dbn2D_set, sizeof(__pyx_k_Dbn2D_set), 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_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_Dbn2D_xMean, __pyx_k_Dbn2D_xMean, sizeof(__pyx_k_Dbn2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_xRMS, __pyx_k_Dbn2D_xRMS, sizeof(__pyx_k_Dbn2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_xStdDev, __pyx_k_Dbn2D_xStdDev, sizeof(__pyx_k_Dbn2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_xStdErr, __pyx_k_Dbn2D_xStdErr, sizeof(__pyx_k_Dbn2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_xVariance, __pyx_k_Dbn2D_xVariance, sizeof(__pyx_k_Dbn2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_yMean, __pyx_k_Dbn2D_yMean, sizeof(__pyx_k_Dbn2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_yRMS, __pyx_k_Dbn2D_yRMS, sizeof(__pyx_k_Dbn2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_yStdDev, __pyx_k_Dbn2D_yStdDev, sizeof(__pyx_k_Dbn2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_yStdErr, __pyx_k_Dbn2D_yStdErr, sizeof(__pyx_k_Dbn2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_yVariance, __pyx_k_Dbn2D_yVariance, sizeof(__pyx_k_Dbn2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D, __pyx_k_Dbn3D, sizeof(__pyx_k_Dbn3D), 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___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_crossTerm, __pyx_k_Dbn3D_crossTerm, sizeof(__pyx_k_Dbn3D_crossTerm), 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_scale, __pyx_k_Dbn3D_scale, sizeof(__pyx_k_Dbn3D_scale), 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_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_set, __pyx_k_Dbn3D_set, sizeof(__pyx_k_Dbn3D_set), 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_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_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_Dbn3D_xMean, __pyx_k_Dbn3D_xMean, sizeof(__pyx_k_Dbn3D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_xRMS, __pyx_k_Dbn3D_xRMS, sizeof(__pyx_k_Dbn3D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_xStdDev, __pyx_k_Dbn3D_xStdDev, sizeof(__pyx_k_Dbn3D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_xStdErr, __pyx_k_Dbn3D_xStdErr, sizeof(__pyx_k_Dbn3D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_xVariance, __pyx_k_Dbn3D_xVariance, sizeof(__pyx_k_Dbn3D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_yMean, __pyx_k_Dbn3D_yMean, sizeof(__pyx_k_Dbn3D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_yRMS, __pyx_k_Dbn3D_yRMS, sizeof(__pyx_k_Dbn3D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_yStdDev, __pyx_k_Dbn3D_yStdDev, sizeof(__pyx_k_Dbn3D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_yStdErr, __pyx_k_Dbn3D_yStdErr, sizeof(__pyx_k_Dbn3D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_yVariance, __pyx_k_Dbn3D_yVariance, sizeof(__pyx_k_Dbn3D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_zMean, __pyx_k_Dbn3D_zMean, sizeof(__pyx_k_Dbn3D_zMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_zRMS, __pyx_k_Dbn3D_zRMS, sizeof(__pyx_k_Dbn3D_zRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_zStdDev, __pyx_k_Dbn3D_zStdDev, sizeof(__pyx_k_Dbn3D_zStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_zStdErr, __pyx_k_Dbn3D_zStdErr, sizeof(__pyx_k_Dbn3D_zStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_zVariance, __pyx_k_Dbn3D_zVariance, sizeof(__pyx_k_Dbn3D_zVariance), 0, 0, 1, 1},
    {&__pyx_kp_s_Dynamic_ptr_cast_failed_Next, __pyx_k_Dynamic_ptr_cast_failed_Next, sizeof(__pyx_k_Dynamic_ptr_cast_failed_Next), 0, 0, 1, 0},
    {&__pyx_n_s_Estimate, __pyx_k_Estimate, sizeof(__pyx_k_Estimate), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D, __pyx_k_Estimate0D, sizeof(__pyx_k_Estimate0D), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D___reduce_cython, __pyx_k_Estimate0D___reduce_cython, sizeof(__pyx_k_Estimate0D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D___setstate_cython, __pyx_k_Estimate0D___setstate_cython, sizeof(__pyx_k_Estimate0D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_clone, __pyx_k_Estimate0D_clone, sizeof(__pyx_k_Estimate0D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_deserializeContent, __pyx_k_Estimate0D_deserializeContent, sizeof(__pyx_k_Estimate0D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_deserializeMeta, __pyx_k_Estimate0D_deserializeMeta, sizeof(__pyx_k_Estimate0D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_err, __pyx_k_Estimate0D_err, sizeof(__pyx_k_Estimate0D_err), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errDown, __pyx_k_Estimate0D_errDown, sizeof(__pyx_k_Estimate0D_errDown), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errDownUp, __pyx_k_Estimate0D_errDownUp, sizeof(__pyx_k_Estimate0D_errDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errNeg, __pyx_k_Estimate0D_errNeg, sizeof(__pyx_k_Estimate0D_errNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errNegPos, __pyx_k_Estimate0D_errNegPos, sizeof(__pyx_k_Estimate0D_errNegPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errPos, __pyx_k_Estimate0D_errPos, sizeof(__pyx_k_Estimate0D_errPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_errUp, __pyx_k_Estimate0D_errUp, sizeof(__pyx_k_Estimate0D_errUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_hasSource, __pyx_k_Estimate0D_hasSource, sizeof(__pyx_k_Estimate0D_hasSource), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_lengthContent, __pyx_k_Estimate0D_lengthContent, sizeof(__pyx_k_Estimate0D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_lengthMeta, __pyx_k_Estimate0D_lengthMeta, sizeof(__pyx_k_Estimate0D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_mkScatter, __pyx_k_Estimate0D_mkScatter, sizeof(__pyx_k_Estimate0D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_numErrs, __pyx_k_Estimate0D_numErrs, sizeof(__pyx_k_Estimate0D_numErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_quadSum, __pyx_k_Estimate0D_quadSum, sizeof(__pyx_k_Estimate0D_quadSum), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_quadSumNeg, __pyx_k_Estimate0D_quadSumNeg, sizeof(__pyx_k_Estimate0D_quadSumNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_quadSumPos, __pyx_k_Estimate0D_quadSumPos, sizeof(__pyx_k_Estimate0D_quadSumPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relErr, __pyx_k_Estimate0D_relErr, sizeof(__pyx_k_Estimate0D_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relErrDown, __pyx_k_Estimate0D_relErrDown, sizeof(__pyx_k_Estimate0D_relErrDown), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relErrDownUp, __pyx_k_Estimate0D_relErrDownUp, sizeof(__pyx_k_Estimate0D_relErrDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relErrUp, __pyx_k_Estimate0D_relErrUp, sizeof(__pyx_k_Estimate0D_relErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relTotalErr, __pyx_k_Estimate0D_relTotalErr, sizeof(__pyx_k_Estimate0D_relTotalErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relTotalErrNeg, __pyx_k_Estimate0D_relTotalErrNeg, sizeof(__pyx_k_Estimate0D_relTotalErrNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_relTotalErrPos, __pyx_k_Estimate0D_relTotalErrPos, sizeof(__pyx_k_Estimate0D_relTotalErrPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_reset, __pyx_k_Estimate0D_reset, sizeof(__pyx_k_Estimate0D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_rmErrs, __pyx_k_Estimate0D_rmErrs, sizeof(__pyx_k_Estimate0D_rmErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_rmSource, __pyx_k_Estimate0D_rmSource, sizeof(__pyx_k_Estimate0D_rmSource), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_scale, __pyx_k_Estimate0D_scale, sizeof(__pyx_k_Estimate0D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_serializeContent, __pyx_k_Estimate0D_serializeContent, sizeof(__pyx_k_Estimate0D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_serializeMeta, __pyx_k_Estimate0D_serializeMeta, sizeof(__pyx_k_Estimate0D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_set, __pyx_k_Estimate0D_set, sizeof(__pyx_k_Estimate0D_set), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_setErr, __pyx_k_Estimate0D_setErr, sizeof(__pyx_k_Estimate0D_setErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_setVal, __pyx_k_Estimate0D_setVal, sizeof(__pyx_k_Estimate0D_setVal), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_sources, __pyx_k_Estimate0D_sources, sizeof(__pyx_k_Estimate0D_sources), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_totalErr, __pyx_k_Estimate0D_totalErr, sizeof(__pyx_k_Estimate0D_totalErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate0D_val, __pyx_k_Estimate0D_val, sizeof(__pyx_k_Estimate0D_val), 0, 0, 1, 1},
    {&__pyx_kp_s_Estimate0D_value_2e_s, __pyx_k_Estimate0D_value_2e_s, sizeof(__pyx_k_Estimate0D_value_2e_s), 0, 0, 1, 0},
    {&__pyx_n_s_Estimate1D, __pyx_k_Estimate1D, sizeof(__pyx_k_Estimate1D), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate2D, __pyx_k_Estimate2D, sizeof(__pyx_k_Estimate2D), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate3D, __pyx_k_Estimate3D, sizeof(__pyx_k_Estimate3D), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate___reduce_cython, __pyx_k_Estimate___reduce_cython, sizeof(__pyx_k_Estimate___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate___setstate_cython, __pyx_k_Estimate___setstate_cython, sizeof(__pyx_k_Estimate___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_copy, __pyx_k_Estimate_copy, sizeof(__pyx_k_Estimate_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_deserializeSources, __pyx_k_Estimate_deserializeSources, sizeof(__pyx_k_Estimate_deserializeSources), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_err, __pyx_k_Estimate_err, sizeof(__pyx_k_Estimate_err), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errAvg, __pyx_k_Estimate_errAvg, sizeof(__pyx_k_Estimate_errAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errDown, __pyx_k_Estimate_errDown, sizeof(__pyx_k_Estimate_errDown), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errDownUp, __pyx_k_Estimate_errDownUp, sizeof(__pyx_k_Estimate_errDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errEnv, __pyx_k_Estimate_errEnv, sizeof(__pyx_k_Estimate_errEnv), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errNeg, __pyx_k_Estimate_errNeg, sizeof(__pyx_k_Estimate_errNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errNegPos, __pyx_k_Estimate_errNegPos, sizeof(__pyx_k_Estimate_errNegPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errPos, __pyx_k_Estimate_errPos, sizeof(__pyx_k_Estimate_errPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_errUp, __pyx_k_Estimate_errUp, sizeof(__pyx_k_Estimate_errUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_hasSource, __pyx_k_Estimate_hasSource, sizeof(__pyx_k_Estimate_hasSource), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_numErrs, __pyx_k_Estimate_numErrs, sizeof(__pyx_k_Estimate_numErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_quadSum, __pyx_k_Estimate_quadSum, sizeof(__pyx_k_Estimate_quadSum), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_quadSumAvg, __pyx_k_Estimate_quadSumAvg, sizeof(__pyx_k_Estimate_quadSumAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_quadSumEnv, __pyx_k_Estimate_quadSumEnv, sizeof(__pyx_k_Estimate_quadSumEnv), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_quadSumNeg, __pyx_k_Estimate_quadSumNeg, sizeof(__pyx_k_Estimate_quadSumNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_quadSumPos, __pyx_k_Estimate_quadSumPos, sizeof(__pyx_k_Estimate_quadSumPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErr, __pyx_k_Estimate_relErr, sizeof(__pyx_k_Estimate_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErrAvg, __pyx_k_Estimate_relErrAvg, sizeof(__pyx_k_Estimate_relErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErrDown, __pyx_k_Estimate_relErrDown, sizeof(__pyx_k_Estimate_relErrDown), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErrDownUp, __pyx_k_Estimate_relErrDownUp, sizeof(__pyx_k_Estimate_relErrDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErrEnv, __pyx_k_Estimate_relErrEnv, sizeof(__pyx_k_Estimate_relErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relErrUp, __pyx_k_Estimate_relErrUp, sizeof(__pyx_k_Estimate_relErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relTotalErr, __pyx_k_Estimate_relTotalErr, sizeof(__pyx_k_Estimate_relTotalErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relTotalErrAvg, __pyx_k_Estimate_relTotalErrAvg, sizeof(__pyx_k_Estimate_relTotalErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relTotalErrEnv, __pyx_k_Estimate_relTotalErrEnv, sizeof(__pyx_k_Estimate_relTotalErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relTotalErrNeg, __pyx_k_Estimate_relTotalErrNeg, sizeof(__pyx_k_Estimate_relTotalErrNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_relTotalErrPos, __pyx_k_Estimate_relTotalErrPos, sizeof(__pyx_k_Estimate_relTotalErrPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_reset, __pyx_k_Estimate_reset, sizeof(__pyx_k_Estimate_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_rmErrs, __pyx_k_Estimate_rmErrs, sizeof(__pyx_k_Estimate_rmErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_rmSource, __pyx_k_Estimate_rmSource, sizeof(__pyx_k_Estimate_rmSource), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_scale, __pyx_k_Estimate_scale, sizeof(__pyx_k_Estimate_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_serializeSources, __pyx_k_Estimate_serializeSources, sizeof(__pyx_k_Estimate_serializeSources), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_set, __pyx_k_Estimate_set, sizeof(__pyx_k_Estimate_set), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_setErr, __pyx_k_Estimate_setErr, sizeof(__pyx_k_Estimate_setErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_setVal, __pyx_k_Estimate_setVal, sizeof(__pyx_k_Estimate_setVal), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_sources, __pyx_k_Estimate_sources, sizeof(__pyx_k_Estimate_sources), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_totalErr, __pyx_k_Estimate_totalErr, sizeof(__pyx_k_Estimate_totalErr), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_totalErrAvg, __pyx_k_Estimate_totalErrAvg, sizeof(__pyx_k_Estimate_totalErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_totalErrEnv, __pyx_k_Estimate_totalErrEnv, sizeof(__pyx_k_Estimate_totalErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_totalErrNeg, __pyx_k_Estimate_totalErrNeg, sizeof(__pyx_k_Estimate_totalErrNeg), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_totalErrPos, __pyx_k_Estimate_totalErrPos, sizeof(__pyx_k_Estimate_totalErrPos), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_val, __pyx_k_Estimate_val, sizeof(__pyx_k_Estimate_val), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_valMax, __pyx_k_Estimate_valMax, sizeof(__pyx_k_Estimate_valMax), 0, 0, 1, 1},
    {&__pyx_n_s_Estimate_valMin, __pyx_k_Estimate_valMin, sizeof(__pyx_k_Estimate_valMin), 0, 0, 1, 1},
    {&__pyx_kp_s_Estimate_value_2e, __pyx_k_Estimate_value_2e, sizeof(__pyx_k_Estimate_value_2e), 0, 0, 1, 0},
    {&__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_H3D, __pyx_k_H3D, sizeof(__pyx_k_H3D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D, __pyx_k_Histo1D, sizeof(__pyx_k_Histo1D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D, __pyx_k_Histo2D, sizeof(__pyx_k_Histo2D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo3D, __pyx_k_Histo3D, sizeof(__pyx_k_Histo3D), 0, 0, 1, 1},
    {&__pyx_kp_s_Histograms_must_be_of_the_same_t, __pyx_k_Histograms_must_be_of_the_same_t, sizeof(__pyx_k_Histograms_must_be_of_the_same_t), 0, 0, 1, 0},
    {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
    {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
    {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
    {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 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_kp_s_Only_division_of_BinnedHisto_Bin, __pyx_k_Only_division_of_BinnedHisto_Bin, sizeof(__pyx_k_Only_division_of_BinnedHisto_Bin), 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_P3D, __pyx_k_P3D, sizeof(__pyx_k_P3D), 0, 0, 1, 1},
    {&__pyx_n_s_P4D, __pyx_k_P4D, sizeof(__pyx_k_P4D), 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___init1, __pyx_k_Point1D___init1, sizeof(__pyx_k_Point1D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D___init2, __pyx_k_Point1D___init2, sizeof(__pyx_k_Point1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D___init3, __pyx_k_Point1D___init3, sizeof(__pyx_k_Point1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D___init4, __pyx_k_Point1D___init4, sizeof(__pyx_k_Point1D___init4), 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__init1, __pyx_k_Point1D__init1, sizeof(__pyx_k_Point1D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D__init2, __pyx_k_Point1D__init2, sizeof(__pyx_k_Point1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D__init2_locals_genexpr, __pyx_k_Point1D__init2_locals_genexpr, sizeof(__pyx_k_Point1D__init2_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D__init3, __pyx_k_Point1D__init3, sizeof(__pyx_k_Point1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D__init4, __pyx_k_Point1D__init4, sizeof(__pyx_k_Point1D__init4), 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_errs, __pyx_k_Point1D_errs, sizeof(__pyx_k_Point1D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_max, __pyx_k_Point1D_max, sizeof(__pyx_k_Point1D_max), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_min, __pyx_k_Point1D_min, sizeof(__pyx_k_Point1D_min), 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_kp_s_Point1D_v1_g, __pyx_k_Point1D_v1_g, sizeof(__pyx_k_Point1D_v1_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point1D_val, __pyx_k_Point1D_val, sizeof(__pyx_k_Point1D_val), 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_xErrMinus, __pyx_k_Point1D_xErrMinus, sizeof(__pyx_k_Point1D_xErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xErrPlus, __pyx_k_Point1D_xErrPlus, sizeof(__pyx_k_Point1D_xErrPlus), 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_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_n_s_Point2D, __pyx_k_Point2D, sizeof(__pyx_k_Point2D), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___init1, __pyx_k_Point2D___init1, sizeof(__pyx_k_Point2D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___init2, __pyx_k_Point2D___init2, sizeof(__pyx_k_Point2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___init3, __pyx_k_Point2D___init3, sizeof(__pyx_k_Point2D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___init4, __pyx_k_Point2D___init4, sizeof(__pyx_k_Point2D___init4), 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__init1, __pyx_k_Point2D__init1, sizeof(__pyx_k_Point2D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D__init2, __pyx_k_Point2D__init2, sizeof(__pyx_k_Point2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D__init2_locals_genexpr, __pyx_k_Point2D__init2_locals_genexpr, sizeof(__pyx_k_Point2D__init2_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D__init3, __pyx_k_Point2D__init3, sizeof(__pyx_k_Point2D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D__init4, __pyx_k_Point2D__init4, sizeof(__pyx_k_Point2D__init4), 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_errs, __pyx_k_Point2D_errs, sizeof(__pyx_k_Point2D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_max, __pyx_k_Point2D_max, sizeof(__pyx_k_Point2D_max), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_min, __pyx_k_Point2D_min, sizeof(__pyx_k_Point2D_min), 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_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_kp_s_Point2D_v1_g_v2_g, __pyx_k_Point2D_v1_g_v2_g, sizeof(__pyx_k_Point2D_v1_g_v2_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point2D_val, __pyx_k_Point2D_val, sizeof(__pyx_k_Point2D_val), 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_xErrMinus, __pyx_k_Point2D_xErrMinus, sizeof(__pyx_k_Point2D_xErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_xErrPlus, __pyx_k_Point2D_xErrPlus, sizeof(__pyx_k_Point2D_xErrPlus), 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_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_yErrMinus, __pyx_k_Point2D_yErrMinus, sizeof(__pyx_k_Point2D_yErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yErrPlus, __pyx_k_Point2D_yErrPlus, sizeof(__pyx_k_Point2D_yErrPlus), 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_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___init1, __pyx_k_Point3D___init1, sizeof(__pyx_k_Point3D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D___init2, __pyx_k_Point3D___init2, sizeof(__pyx_k_Point3D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D___init3, __pyx_k_Point3D___init3, sizeof(__pyx_k_Point3D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D___init4, __pyx_k_Point3D___init4, sizeof(__pyx_k_Point3D___init4), 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__init1, __pyx_k_Point3D__init1, sizeof(__pyx_k_Point3D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D__init2, __pyx_k_Point3D__init2, sizeof(__pyx_k_Point3D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D__init2_locals_genexpr, __pyx_k_Point3D__init2_locals_genexpr, sizeof(__pyx_k_Point3D__init2_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D__init3, __pyx_k_Point3D__init3, sizeof(__pyx_k_Point3D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D__init4, __pyx_k_Point3D__init4, sizeof(__pyx_k_Point3D__init4), 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_errs, __pyx_k_Point3D_errs, sizeof(__pyx_k_Point3D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_max, __pyx_k_Point3D_max, sizeof(__pyx_k_Point3D_max), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_min, __pyx_k_Point3D_min, sizeof(__pyx_k_Point3D_min), 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_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_kp_s_Point3D_v1_g_v2_g_v3_g, __pyx_k_Point3D_v1_g_v2_g_v3_g, sizeof(__pyx_k_Point3D_v1_g_v2_g_v3_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point3D_val, __pyx_k_Point3D_val, sizeof(__pyx_k_Point3D_val), 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_xErrMinus, __pyx_k_Point3D_xErrMinus, sizeof(__pyx_k_Point3D_xErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_xErrPlus, __pyx_k_Point3D_xErrPlus, sizeof(__pyx_k_Point3D_xErrPlus), 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_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_yErrMinus, __pyx_k_Point3D_yErrMinus, sizeof(__pyx_k_Point3D_yErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_yErrPlus, __pyx_k_Point3D_yErrPlus, sizeof(__pyx_k_Point3D_yErrPlus), 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_zErrMinus, __pyx_k_Point3D_zErrMinus, sizeof(__pyx_k_Point3D_zErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zErrPlus, __pyx_k_Point3D_zErrPlus, sizeof(__pyx_k_Point3D_zErrPlus), 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_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_Point4D, __pyx_k_Point4D, sizeof(__pyx_k_Point4D), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D___init1, __pyx_k_Point4D___init1, sizeof(__pyx_k_Point4D___init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D___init2, __pyx_k_Point4D___init2, sizeof(__pyx_k_Point4D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D___reduce_cython, __pyx_k_Point4D___reduce_cython, sizeof(__pyx_k_Point4D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D___setstate_cython, __pyx_k_Point4D___setstate_cython, sizeof(__pyx_k_Point4D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D__init1, __pyx_k_Point4D__init1, sizeof(__pyx_k_Point4D__init1), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D__init2, __pyx_k_Point4D__init2, sizeof(__pyx_k_Point4D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D__init2_locals_genexpr, __pyx_k_Point4D__init2_locals_genexpr, sizeof(__pyx_k_Point4D__init2_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D_copy, __pyx_k_Point4D_copy, sizeof(__pyx_k_Point4D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D_errs, __pyx_k_Point4D_errs, sizeof(__pyx_k_Point4D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D_max, __pyx_k_Point4D_max, sizeof(__pyx_k_Point4D_max), 0, 0, 1, 1},
    {&__pyx_n_s_Point4D_min, __pyx_k_Point4D_min, sizeof(__pyx_k_Point4D_min), 0, 0, 1, 1},
    {&__pyx_kp_s_Point4D_v1_g_v2_g_v3_g_v4_g, __pyx_k_Point4D_v1_g_v2_g_v3_g_v4_g, sizeof(__pyx_k_Point4D_v1_g_v2_g_v3_g_v4_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point4D_val, __pyx_k_Point4D_val, sizeof(__pyx_k_Point4D_val), 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_scale, __pyx_k_Point_scale, sizeof(__pyx_k_Point_scale), 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_Profile2D, __pyx_k_Profile2D, sizeof(__pyx_k_Profile2D), 0, 0, 1, 1},
    {&__pyx_n_s_RMS, __pyx_k_RMS, sizeof(__pyx_k_RMS), 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_S4D, __pyx_k_S4D, sizeof(__pyx_k_S4D), 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_1, __pyx_k_Scatter1D___init_1, sizeof(__pyx_k_Scatter1D___init_1), 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___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_1, __pyx_k_Scatter1D__init_1, sizeof(__pyx_k_Scatter1D__init_1), 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__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_deserializeContent, __pyx_k_Scatter1D_deserializeContent, sizeof(__pyx_k_Scatter1D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_deserializeMeta, __pyx_k_Scatter1D_deserializeMeta, sizeof(__pyx_k_Scatter1D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_edges, __pyx_k_Scatter1D_edges, sizeof(__pyx_k_Scatter1D_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_errAvgs, __pyx_k_Scatter1D_errAvgs, sizeof(__pyx_k_Scatter1D_errAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_errs, __pyx_k_Scatter1D_errs, sizeof(__pyx_k_Scatter1D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_lengthContent, __pyx_k_Scatter1D_lengthContent, sizeof(__pyx_k_Scatter1D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_lengthMeta, __pyx_k_Scatter1D_lengthMeta, sizeof(__pyx_k_Scatter1D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_maxs, __pyx_k_Scatter1D_maxs, sizeof(__pyx_k_Scatter1D_maxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_mins, __pyx_k_Scatter1D_mins, sizeof(__pyx_k_Scatter1D_mins), 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_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_scale, __pyx_k_Scatter1D_scale, sizeof(__pyx_k_Scatter1D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_scaleErr, __pyx_k_Scatter1D_scaleErr, sizeof(__pyx_k_Scatter1D_scaleErr), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_scaleVal, __pyx_k_Scatter1D_scaleVal, sizeof(__pyx_k_Scatter1D_scaleVal), 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_serializeContent, __pyx_k_Scatter1D_serializeContent, sizeof(__pyx_k_Scatter1D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_serializeMeta, __pyx_k_Scatter1D_serializeMeta, sizeof(__pyx_k_Scatter1D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_vals, __pyx_k_Scatter1D_vals, sizeof(__pyx_k_Scatter1D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xErrAvgs, __pyx_k_Scatter1D_xErrAvgs, sizeof(__pyx_k_Scatter1D_xErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xErrs, __pyx_k_Scatter1D_xErrs, sizeof(__pyx_k_Scatter1D_xErrs), 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_1, __pyx_k_Scatter2D___init_1, sizeof(__pyx_k_Scatter2D___init_1), 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___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_1, __pyx_k_Scatter2D__init_1, sizeof(__pyx_k_Scatter2D__init_1), 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__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_deserializeContent, __pyx_k_Scatter2D_deserializeContent, sizeof(__pyx_k_Scatter2D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_deserializeMeta, __pyx_k_Scatter2D_deserializeMeta, sizeof(__pyx_k_Scatter2D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_edges, __pyx_k_Scatter2D_edges, sizeof(__pyx_k_Scatter2D_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_errAvgs, __pyx_k_Scatter2D_errAvgs, sizeof(__pyx_k_Scatter2D_errAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_errs, __pyx_k_Scatter2D_errs, sizeof(__pyx_k_Scatter2D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_lengthContent, __pyx_k_Scatter2D_lengthContent, sizeof(__pyx_k_Scatter2D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_lengthMeta, __pyx_k_Scatter2D_lengthMeta, sizeof(__pyx_k_Scatter2D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_maxs, __pyx_k_Scatter2D_maxs, sizeof(__pyx_k_Scatter2D_maxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_mins, __pyx_k_Scatter2D_mins, sizeof(__pyx_k_Scatter2D_mins), 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_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_scale, __pyx_k_Scatter2D_scale, sizeof(__pyx_k_Scatter2D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scaleErr, __pyx_k_Scatter2D_scaleErr, sizeof(__pyx_k_Scatter2D_scaleErr), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scaleVal, __pyx_k_Scatter2D_scaleVal, sizeof(__pyx_k_Scatter2D_scaleVal), 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_scaleY, __pyx_k_Scatter2D_scaleY, sizeof(__pyx_k_Scatter2D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_serializeContent, __pyx_k_Scatter2D_serializeContent, sizeof(__pyx_k_Scatter2D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_serializeMeta, __pyx_k_Scatter2D_serializeMeta, sizeof(__pyx_k_Scatter2D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_vals, __pyx_k_Scatter2D_vals, sizeof(__pyx_k_Scatter2D_vals), 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_1, __pyx_k_Scatter3D___init_1, sizeof(__pyx_k_Scatter3D___init_1), 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___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_1, __pyx_k_Scatter3D__init_1, sizeof(__pyx_k_Scatter3D__init_1), 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__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_deserializeContent, __pyx_k_Scatter3D_deserializeContent, sizeof(__pyx_k_Scatter3D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_deserializeMeta, __pyx_k_Scatter3D_deserializeMeta, sizeof(__pyx_k_Scatter3D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_edges, __pyx_k_Scatter3D_edges, sizeof(__pyx_k_Scatter3D_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_errAvgs, __pyx_k_Scatter3D_errAvgs, sizeof(__pyx_k_Scatter3D_errAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_errs, __pyx_k_Scatter3D_errs, sizeof(__pyx_k_Scatter3D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_lengthContent, __pyx_k_Scatter3D_lengthContent, sizeof(__pyx_k_Scatter3D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_lengthMeta, __pyx_k_Scatter3D_lengthMeta, sizeof(__pyx_k_Scatter3D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_maxs, __pyx_k_Scatter3D_maxs, sizeof(__pyx_k_Scatter3D_maxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_mins, __pyx_k_Scatter3D_mins, sizeof(__pyx_k_Scatter3D_mins), 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_scale, __pyx_k_Scatter3D_scale, sizeof(__pyx_k_Scatter3D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleErr, __pyx_k_Scatter3D_scaleErr, sizeof(__pyx_k_Scatter3D_scaleErr), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleVal, __pyx_k_Scatter3D_scaleVal, sizeof(__pyx_k_Scatter3D_scaleVal), 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_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_serializeContent, __pyx_k_Scatter3D_serializeContent, sizeof(__pyx_k_Scatter3D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_serializeMeta, __pyx_k_Scatter3D_serializeMeta, sizeof(__pyx_k_Scatter3D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_vals, __pyx_k_Scatter3D_vals, sizeof(__pyx_k_Scatter3D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xErrAvgs, __pyx_k_Scatter3D_xErrAvgs, sizeof(__pyx_k_Scatter3D_xErrAvgs), 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_yErrAvgs, __pyx_k_Scatter3D_yErrAvgs, sizeof(__pyx_k_Scatter3D_yErrAvgs), 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_zErrAvgs, __pyx_k_Scatter3D_zErrAvgs, sizeof(__pyx_k_Scatter3D_zErrAvgs), 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_Scatter4D, __pyx_k_Scatter4D, sizeof(__pyx_k_Scatter4D), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___addPoint_explicit, __pyx_k_Scatter4D___addPoint_explicit, sizeof(__pyx_k_Scatter4D___addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___addPoint_point, __pyx_k_Scatter4D___addPoint_point, sizeof(__pyx_k_Scatter4D___addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___init_1, __pyx_k_Scatter4D___init_1, sizeof(__pyx_k_Scatter4D___init_1), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___init_2, __pyx_k_Scatter4D___init_2, sizeof(__pyx_k_Scatter4D___init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___reduce_cython, __pyx_k_Scatter4D___reduce_cython, sizeof(__pyx_k_Scatter4D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D___setstate_cython, __pyx_k_Scatter4D___setstate_cython, sizeof(__pyx_k_Scatter4D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D__addPoint_explicit, __pyx_k_Scatter4D__addPoint_explicit, sizeof(__pyx_k_Scatter4D__addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D__addPoint_point, __pyx_k_Scatter4D__addPoint_point, sizeof(__pyx_k_Scatter4D__addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D__init_1, __pyx_k_Scatter4D__init_1, sizeof(__pyx_k_Scatter4D__init_1), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D__init_2, __pyx_k_Scatter4D__init_2, sizeof(__pyx_k_Scatter4D__init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D__mknp, __pyx_k_Scatter4D__mknp, sizeof(__pyx_k_Scatter4D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_addPoint, __pyx_k_Scatter4D_addPoint, sizeof(__pyx_k_Scatter4D_addPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_addPoints, __pyx_k_Scatter4D_addPoints, sizeof(__pyx_k_Scatter4D_addPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_clone, __pyx_k_Scatter4D_clone, sizeof(__pyx_k_Scatter4D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_combineWith, __pyx_k_Scatter4D_combineWith, sizeof(__pyx_k_Scatter4D_combineWith), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_deserializeContent, __pyx_k_Scatter4D_deserializeContent, sizeof(__pyx_k_Scatter4D_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_deserializeMeta, __pyx_k_Scatter4D_deserializeMeta, sizeof(__pyx_k_Scatter4D_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_edges, __pyx_k_Scatter4D_edges, sizeof(__pyx_k_Scatter4D_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_errAvgs, __pyx_k_Scatter4D_errAvgs, sizeof(__pyx_k_Scatter4D_errAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_errs, __pyx_k_Scatter4D_errs, sizeof(__pyx_k_Scatter4D_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_lengthContent, __pyx_k_Scatter4D_lengthContent, sizeof(__pyx_k_Scatter4D_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_lengthMeta, __pyx_k_Scatter4D_lengthMeta, sizeof(__pyx_k_Scatter4D_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_maxs, __pyx_k_Scatter4D_maxs, sizeof(__pyx_k_Scatter4D_maxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_mins, __pyx_k_Scatter4D_mins, sizeof(__pyx_k_Scatter4D_mins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_mkScatter, __pyx_k_Scatter4D_mkScatter, sizeof(__pyx_k_Scatter4D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_numPoints, __pyx_k_Scatter4D_numPoints, sizeof(__pyx_k_Scatter4D_numPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_point, __pyx_k_Scatter4D_point, sizeof(__pyx_k_Scatter4D_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_points, __pyx_k_Scatter4D_points, sizeof(__pyx_k_Scatter4D_points), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_reset, __pyx_k_Scatter4D_reset, sizeof(__pyx_k_Scatter4D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_rmPoint, __pyx_k_Scatter4D_rmPoint, sizeof(__pyx_k_Scatter4D_rmPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_rmPoints, __pyx_k_Scatter4D_rmPoints, sizeof(__pyx_k_Scatter4D_rmPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_scale, __pyx_k_Scatter4D_scale, sizeof(__pyx_k_Scatter4D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_scaleErr, __pyx_k_Scatter4D_scaleErr, sizeof(__pyx_k_Scatter4D_scaleErr), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_scaleVal, __pyx_k_Scatter4D_scaleVal, sizeof(__pyx_k_Scatter4D_scaleVal), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_serializeContent, __pyx_k_Scatter4D_serializeContent, sizeof(__pyx_k_Scatter4D_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_serializeMeta, __pyx_k_Scatter4D_serializeMeta, sizeof(__pyx_k_Scatter4D_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter4D_vals, __pyx_k_Scatter4D_vals, sizeof(__pyx_k_Scatter4D_vals), 0, 0, 1, 1},
    {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
    {&__pyx_kp_s_Unknown_axis_combination_encount, __pyx_k_Unknown_axis_combination_encount, sizeof(__pyx_k_Unknown_axis_combination_encount), 0, 0, 1, 0},
    {&__pyx_kp_s_Unknown_edge_type_encountered, __pyx_k_Unknown_edge_type_encountered, sizeof(__pyx_k_Unknown_edge_type_encountered), 0, 0, 1, 0},
    {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
    {&__pyx_kp_s_WARNING_method_not_supported_for, __pyx_k_WARNING_method_not_supported_for, sizeof(__pyx_k_WARNING_method_not_supported_for), 0, 0, 1, 0},
    {&__pyx_n_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 1},
    {&__pyx_kp_u__108, __pyx_k__108, sizeof(__pyx_k__108), 0, 1, 0, 0},
    {&__pyx_n_s__1405, __pyx_k__1405, sizeof(__pyx_k__1405), 0, 0, 1, 1},
    {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
    {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
    {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0},
    {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
    {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 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_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_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
    {&__pyx_n_s_areaUnderCurve, __pyx_k_areaUnderCurve, sizeof(__pyx_k_areaUnderCurve), 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_asum, __pyx_k_asum, sizeof(__pyx_k_asum), 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_attach, __pyx_k_attach, sizeof(__pyx_k_attach), 0, 0, 1, 1},
    {&__pyx_n_s_attrgetter, __pyx_k_attrgetter, sizeof(__pyx_k_attrgetter), 0, 0, 1, 1},
    {&__pyx_n_s_auc, __pyx_k_auc, sizeof(__pyx_k_auc), 0, 0, 1, 1},
    {&__pyx_n_s_autostr, __pyx_k_autostr, sizeof(__pyx_k_autostr), 0, 0, 1, 1},
    {&__pyx_n_s_axes, __pyx_k_axes, sizeof(__pyx_k_axes), 0, 0, 1, 1},
    {&__pyx_n_s_axisConfig, __pyx_k_axisConfig, sizeof(__pyx_k_axisConfig), 0, 0, 1, 1},
    {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
    {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 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_binDim, __pyx_k_binDim, sizeof(__pyx_k_binDim), 0, 0, 1, 1},
    {&__pyx_n_s_binIndex, __pyx_k_binIndex, sizeof(__pyx_k_binIndex), 0, 0, 1, 1},
    {&__pyx_n_s_bin_2, __pyx_k_bin_2, sizeof(__pyx_k_bin_2), 0, 0, 1, 1},
    {&__pyx_n_s_binedges, __pyx_k_binedges, sizeof(__pyx_k_binedges), 0, 0, 1, 1},
    {&__pyx_n_s_binning, __pyx_k_binning, sizeof(__pyx_k_binning), 0, 0, 1, 1},
    {&__pyx_n_s_binning_2, __pyx_k_binning_2, sizeof(__pyx_k_binning_2), 0, 0, 1, 1},
    {&__pyx_n_s_bins, __pyx_k_bins, sizeof(__pyx_k_bins), 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_cdata, __pyx_k_cdata, sizeof(__pyx_k_cdata), 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_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1},
    {&__pyx_n_s_cont, __pyx_k_cont, sizeof(__pyx_k_cont), 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_correlation, __pyx_k_correlation, sizeof(__pyx_k_correlation), 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_cpptype, __pyx_k_cpptype, sizeof(__pyx_k_cpptype), 0, 0, 1, 1},
    {&__pyx_n_s_crossTerm, __pyx_k_crossTerm, sizeof(__pyx_k_crossTerm), 0, 0, 1, 1},
    {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
    {&__pyx_n_s_d2ptr, __pyx_k_d2ptr, sizeof(__pyx_k_d2ptr), 0, 0, 1, 1},
    {&__pyx_n_s_dArea, __pyx_k_dArea, sizeof(__pyx_k_dArea), 0, 0, 1, 1},
    {&__pyx_n_s_dLen, __pyx_k_dLen, sizeof(__pyx_k_dLen), 0, 0, 1, 1},
    {&__pyx_n_s_dVol, __pyx_k_dVol, sizeof(__pyx_k_dVol), 0, 0, 1, 1},
    {&__pyx_n_s_da, __pyx_k_da, sizeof(__pyx_k_da), 0, 0, 1, 1},
    {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
    {&__pyx_n_s_dd, __pyx_k_dd, sizeof(__pyx_k_dd), 0, 0, 1, 1},
    {&__pyx_n_s_ddd, __pyx_k_ddd, sizeof(__pyx_k_ddd), 0, 0, 1, 1},
    {&__pyx_n_s_ddi, __pyx_k_ddi, sizeof(__pyx_k_ddi), 0, 0, 1, 1},
    {&__pyx_n_s_dds, __pyx_k_dds, sizeof(__pyx_k_dds), 0, 0, 1, 1},
    {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1},
    {&__pyx_n_s_density, __pyx_k_density, sizeof(__pyx_k_density), 0, 0, 1, 1},
    {&__pyx_n_s_densityError, __pyx_k_densityError, sizeof(__pyx_k_densityError), 0, 0, 1, 1},
    {&__pyx_n_s_densitySum, __pyx_k_densitySum, sizeof(__pyx_k_densitySum), 0, 0, 1, 1},
    {&__pyx_n_s_deserializeContent, __pyx_k_deserializeContent, sizeof(__pyx_k_deserializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_deserializeMeta, __pyx_k_deserializeMeta, sizeof(__pyx_k_deserializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_deserializeSources, __pyx_k_deserializeSources, sizeof(__pyx_k_deserializeSources), 0, 0, 1, 1},
    {&__pyx_n_s_di, __pyx_k_di, sizeof(__pyx_k_di), 0, 0, 1, 1},
    {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
    {&__pyx_n_s_did, __pyx_k_did, sizeof(__pyx_k_did), 0, 0, 1, 1},
    {&__pyx_n_s_dii, __pyx_k_dii, sizeof(__pyx_k_dii), 0, 0, 1, 1},
    {&__pyx_n_s_dim, __pyx_k_dim, sizeof(__pyx_k_dim), 0, 0, 1, 1},
    {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1},
    {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
    {&__pyx_n_s_divbyvol, __pyx_k_divbyvol, sizeof(__pyx_k_divbyvol), 0, 0, 1, 1},
    {&__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_ds, __pyx_k_ds, sizeof(__pyx_k_ds), 0, 0, 1, 1},
    {&__pyx_n_s_dsd, __pyx_k_dsd, sizeof(__pyx_k_dsd), 0, 0, 1, 1},
    {&__pyx_n_s_dsi, __pyx_k_dsi, sizeof(__pyx_k_dsi), 0, 0, 1, 1},
    {&__pyx_n_s_dss, __pyx_k_dss, sizeof(__pyx_k_dss), 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_edgesA1, __pyx_k_edgesA1, sizeof(__pyx_k_edgesA1), 0, 0, 1, 1},
    {&__pyx_n_s_edgesA2, __pyx_k_edgesA2, sizeof(__pyx_k_edgesA2), 0, 0, 1, 1},
    {&__pyx_n_s_edgesA3, __pyx_k_edgesA3, sizeof(__pyx_k_edgesA3), 0, 0, 1, 1},
    {&__pyx_n_s_edges_d, __pyx_k_edges_d, sizeof(__pyx_k_edges_d), 0, 0, 1, 1},
    {&__pyx_n_s_edges_i, __pyx_k_edges_i, sizeof(__pyx_k_edges_i), 0, 0, 1, 1},
    {&__pyx_n_s_edges_s, __pyx_k_edges_s, sizeof(__pyx_k_edges_s), 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_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_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 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_errAvgs, __pyx_k_errAvgs, sizeof(__pyx_k_errAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_errDown, __pyx_k_errDown, sizeof(__pyx_k_errDown), 0, 0, 1, 1},
    {&__pyx_n_s_errDownUp, __pyx_k_errDownUp, sizeof(__pyx_k_errDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_errEnv, __pyx_k_errEnv, sizeof(__pyx_k_errEnv), 0, 0, 1, 1},
    {&__pyx_n_s_errNeg, __pyx_k_errNeg, sizeof(__pyx_k_errNeg), 0, 0, 1, 1},
    {&__pyx_n_s_errNegPos, __pyx_k_errNegPos, sizeof(__pyx_k_errNegPos), 0, 0, 1, 1},
    {&__pyx_n_s_errPos, __pyx_k_errPos, sizeof(__pyx_k_errPos), 0, 0, 1, 1},
    {&__pyx_n_s_errUp, __pyx_k_errUp, sizeof(__pyx_k_errUp), 0, 0, 1, 1},
    {&__pyx_n_s_errW, __pyx_k_errW, sizeof(__pyx_k_errW), 0, 0, 1, 1},
    {&__pyx_n_s_errm, __pyx_k_errm, sizeof(__pyx_k_errm), 0, 0, 1, 1},
    {&__pyx_n_s_errors1, __pyx_k_errors1, sizeof(__pyx_k_errors1), 0, 0, 1, 1},
    {&__pyx_n_s_errors2, __pyx_k_errors2, sizeof(__pyx_k_errors2), 0, 0, 1, 1},
    {&__pyx_n_s_errp, __pyx_k_errp, sizeof(__pyx_k_errp), 0, 0, 1, 1},
    {&__pyx_n_s_errs, __pyx_k_errs, sizeof(__pyx_k_errs), 0, 0, 1, 1},
    {&__pyx_n_s_errsdn, __pyx_k_errsdn, sizeof(__pyx_k_errsdn), 0, 0, 1, 1},
    {&__pyx_n_s_errsup, __pyx_k_errsup, sizeof(__pyx_k_errsup), 0, 0, 1, 1},
    {&__pyx_n_s_es, __pyx_k_es, sizeof(__pyx_k_es), 0, 0, 1, 1},
    {&__pyx_n_s_estptr, __pyx_k_estptr, sizeof(__pyx_k_estptr), 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_factor, __pyx_k_factor, sizeof(__pyx_k_factor), 0, 0, 1, 1},
    {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 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_fillDim, __pyx_k_fillDim, sizeof(__pyx_k_fillDim), 0, 0, 1, 1},
    {&__pyx_n_s_find, __pyx_k_find, sizeof(__pyx_k_find), 0, 0, 1, 1},
    {&__pyx_n_s_fixed_length, __pyx_k_fixed_length, sizeof(__pyx_k_fixed_length), 0, 0, 1, 1},
    {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 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_global_set, __pyx_k_global_set, sizeof(__pyx_k_global_set), 0, 0, 1, 1},
    {&__pyx_n_s_hasAnnotation, __pyx_k_hasAnnotation, sizeof(__pyx_k_hasAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_hasSource, __pyx_k_hasSource, sizeof(__pyx_k_hasSource), 0, 0, 1, 1},
    {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
    {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
    {&__pyx_n_s_idd, __pyx_k_idd, sizeof(__pyx_k_idd), 0, 0, 1, 1},
    {&__pyx_n_s_idi, __pyx_k_idi, sizeof(__pyx_k_idi), 0, 0, 1, 1},
    {&__pyx_n_s_ids, __pyx_k_ids, sizeof(__pyx_k_ids), 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_ii, __pyx_k_ii, sizeof(__pyx_k_ii), 0, 0, 1, 1},
    {&__pyx_n_s_iid, __pyx_k_iid, sizeof(__pyx_k_iid), 0, 0, 1, 1},
    {&__pyx_n_s_iii, __pyx_k_iii, sizeof(__pyx_k_iii), 0, 0, 1, 1},
    {&__pyx_n_s_iis, __pyx_k_iis, sizeof(__pyx_k_iis), 0, 0, 1, 1},
    {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
    {&__pyx_n_s_includeBinVol, __pyx_k_includeBinVol, sizeof(__pyx_k_includeBinVol), 0, 0, 1, 1},
    {&__pyx_n_s_includeMaskedBins, __pyx_k_includeMaskedBins, sizeof(__pyx_k_includeMaskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_includeOverflows, __pyx_k_includeOverflows, sizeof(__pyx_k_includeOverflows), 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_Binning_pyx, __pyx_k_include_Binning_pyx, sizeof(__pyx_k_include_Binning_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_Estimate0D_pyx, __pyx_k_include_Estimate0D_pyx, sizeof(__pyx_k_include_Estimate0D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Estimate_pyx, __pyx_k_include_Estimate_pyx, sizeof(__pyx_k_include_Estimate_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_IO_pyx, __pyx_k_include_IO_pyx, sizeof(__pyx_k_include_IO_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_generated_Axis_pyx, __pyx_k_include_generated_Axis_pyx, sizeof(__pyx_k_include_generated_Axis_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin1D_pyx, __pyx_k_include_generated_Bin1D_pyx, sizeof(__pyx_k_include_generated_Bin1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin2D_pyx, __pyx_k_include_generated_Bin2D_pyx, sizeof(__pyx_k_include_generated_Bin2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin3D_pyx, __pyx_k_include_generated_Bin3D_pyx, sizeof(__pyx_k_include_generated_Bin3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedEstimate, __pyx_k_include_generated_BinnedEstimate, sizeof(__pyx_k_include_generated_BinnedEstimate), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_k_include_generated_BinnedEstimate_2, sizeof(__pyx_k_include_generated_BinnedEstimate_2), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_k_include_generated_BinnedEstimate_3, sizeof(__pyx_k_include_generated_BinnedEstimate_3), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedHisto1D, __pyx_k_include_generated_BinnedHisto1D, sizeof(__pyx_k_include_generated_BinnedHisto1D), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedHisto2D, __pyx_k_include_generated_BinnedHisto2D, sizeof(__pyx_k_include_generated_BinnedHisto2D), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedHisto3D, __pyx_k_include_generated_BinnedHisto3D, sizeof(__pyx_k_include_generated_BinnedHisto3D), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedProfile1, __pyx_k_include_generated_BinnedProfile1, sizeof(__pyx_k_include_generated_BinnedProfile1), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_BinnedProfile2, __pyx_k_include_generated_BinnedProfile2, sizeof(__pyx_k_include_generated_BinnedProfile2), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_k_include_generated_Dbn1D_pyx, sizeof(__pyx_k_include_generated_Dbn1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_k_include_generated_Dbn2D_pyx, sizeof(__pyx_k_include_generated_Dbn2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_k_include_generated_Dbn3D_pyx, sizeof(__pyx_k_include_generated_Dbn3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Point1D_pyx, __pyx_k_include_generated_Point1D_pyx, sizeof(__pyx_k_include_generated_Point1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Point2D_pyx, __pyx_k_include_generated_Point2D_pyx, sizeof(__pyx_k_include_generated_Point2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Point3D_pyx, __pyx_k_include_generated_Point3D_pyx, sizeof(__pyx_k_include_generated_Point3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Point4D_pyx, __pyx_k_include_generated_Point4D_pyx, sizeof(__pyx_k_include_generated_Point4D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_k_include_generated_Scatter1D_pyx, sizeof(__pyx_k_include_generated_Scatter1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_k_include_generated_Scatter2D_pyx, sizeof(__pyx_k_include_generated_Scatter2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_k_include_generated_Scatter3D_pyx, sizeof(__pyx_k_include_generated_Scatter3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_k_include_generated_Scatter4D_pyx, sizeof(__pyx_k_include_generated_Scatter4D_pyx), 0, 0, 1, 0},
    {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
    {&__pyx_n_s_indexArr, __pyx_k_indexArr, sizeof(__pyx_k_indexArr), 0, 0, 1, 1},
    {&__pyx_n_s_indexAt, __pyx_k_indexAt, sizeof(__pyx_k_indexAt), 0, 0, 1, 1},
    {&__pyx_n_s_index_2, __pyx_k_index_2, sizeof(__pyx_k_index_2), 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_list, __pyx_k_index_list, sizeof(__pyx_k_index_list), 0, 0, 1, 1},
    {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1},
    {&__pyx_n_s_indices_2, __pyx_k_indices_2, sizeof(__pyx_k_indices_2), 0, 0, 1, 1},
    {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
    {&__pyx_n_s_init1, __pyx_k_init1, sizeof(__pyx_k_init1), 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_init_1, __pyx_k_init_1, sizeof(__pyx_k_init_1), 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_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_integralError, __pyx_k_integralError, sizeof(__pyx_k_integralError), 0, 0, 1, 1},
    {&__pyx_n_s_is, __pyx_k_is, sizeof(__pyx_k_is), 0, 0, 1, 1},
    {&__pyx_n_s_isMasked, __pyx_k_isMasked, sizeof(__pyx_k_isMasked), 0, 0, 1, 1},
    {&__pyx_n_s_isVisible, __pyx_k_isVisible, sizeof(__pyx_k_isVisible), 0, 0, 1, 1},
    {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
    {&__pyx_n_s_isd, __pyx_k_isd, sizeof(__pyx_k_isd), 0, 0, 1, 1},
    {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
    {&__pyx_n_s_isi, __pyx_k_isi, sizeof(__pyx_k_isi), 0, 0, 1, 1},
    {&__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_itertools, __pyx_k_itertools, sizeof(__pyx_k_itertools), 0, 0, 1, 1},
    {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1},
    {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 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_lengthContent, __pyx_k_lengthContent, sizeof(__pyx_k_lengthContent), 0, 0, 1, 1},
    {&__pyx_n_s_lengthMeta, __pyx_k_lengthMeta, sizeof(__pyx_k_lengthMeta), 0, 0, 1, 1},
    {&__pyx_n_s_linspace, __pyx_k_linspace, sizeof(__pyx_k_linspace), 0, 0, 1, 1},
    {&__pyx_n_s_localIndices, __pyx_k_localIndices, sizeof(__pyx_k_localIndices), 0, 0, 1, 1},
    {&__pyx_n_s_localToGlobalIndex, __pyx_k_localToGlobalIndex, sizeof(__pyx_k_localToGlobalIndex), 0, 0, 1, 1},
    {&__pyx_n_s_local_set, __pyx_k_local_set, sizeof(__pyx_k_local_set), 0, 0, 1, 1},
    {&__pyx_n_s_logspace, __pyx_k_logspace, sizeof(__pyx_k_logspace), 0, 0, 1, 1},
    {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
    {&__pyx_n_s_lowerX, __pyx_k_lowerX, sizeof(__pyx_k_lowerX), 0, 0, 1, 1},
    {&__pyx_n_s_lowerY, __pyx_k_lowerY, sizeof(__pyx_k_lowerY), 0, 0, 1, 1},
    {&__pyx_n_s_lowerZ, __pyx_k_lowerZ, sizeof(__pyx_k_lowerZ), 0, 0, 1, 1},
    {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
    {&__pyx_n_s_mapTypes, __pyx_k_mapTypes, sizeof(__pyx_k_mapTypes), 0, 0, 1, 1},
    {&__pyx_n_s_maskBin, __pyx_k_maskBin, sizeof(__pyx_k_maskBin), 0, 0, 1, 1},
    {&__pyx_n_s_maskBinAt, __pyx_k_maskBinAt, sizeof(__pyx_k_maskBinAt), 0, 0, 1, 1},
    {&__pyx_n_s_maskBins, __pyx_k_maskBins, sizeof(__pyx_k_maskBins), 0, 0, 1, 1},
    {&__pyx_n_s_maskSlice, __pyx_k_maskSlice, sizeof(__pyx_k_maskSlice), 0, 0, 1, 1},
    {&__pyx_n_s_masked, __pyx_k_masked, sizeof(__pyx_k_masked), 0, 0, 1, 1},
    {&__pyx_n_s_maskedBins, __pyx_k_maskedBins, sizeof(__pyx_k_maskedBins), 0, 0, 1, 1},
    {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
    {&__pyx_n_s_maxDensity, __pyx_k_maxDensity, sizeof(__pyx_k_maxDensity), 0, 0, 1, 1},
    {&__pyx_n_s_maxs, __pyx_k_maxs, sizeof(__pyx_k_maxs), 0, 0, 1, 1},
    {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1},
    {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
    {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
    {&__pyx_n_s_mid, __pyx_k_mid, sizeof(__pyx_k_mid), 0, 0, 1, 1},
    {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
    {&__pyx_n_s_mins, __pyx_k_mins, sizeof(__pyx_k_mins), 0, 0, 1, 1},
    {&__pyx_n_s_mkEstimate, __pyx_k_mkEstimate, sizeof(__pyx_k_mkEstimate), 0, 0, 1, 1},
    {&__pyx_n_s_mkHisto, __pyx_k_mkHisto, sizeof(__pyx_k_mkHisto), 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_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1},
    {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
    {&__pyx_n_s_naiveChi2, __pyx_k_naiveChi2, sizeof(__pyx_k_naiveChi2), 0, 0, 1, 1},
    {&__pyx_n_s_naiveChi2reduced, __pyx_k_naiveChi2reduced, sizeof(__pyx_k_naiveChi2reduced), 0, 0, 1, 1},
    {&__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_nbinsX, __pyx_k_nbinsX, sizeof(__pyx_k_nbinsX), 0, 0, 1, 1},
    {&__pyx_n_s_nbinsY, __pyx_k_nbinsY, sizeof(__pyx_k_nbinsY), 0, 0, 1, 1},
    {&__pyx_n_s_nbinsZ, __pyx_k_nbinsZ, sizeof(__pyx_k_nbinsZ), 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_numBinsZ, __pyx_k_numBinsZ, sizeof(__pyx_k_numBinsZ), 0, 0, 1, 1},
    {&__pyx_n_s_numEntries, __pyx_k_numEntries, sizeof(__pyx_k_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_numErrs, __pyx_k_numErrs, sizeof(__pyx_k_numErrs), 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_object, __pyx_k_object, sizeof(__pyx_k_object), 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_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
    {&__pyx_n_s_parseyaml, __pyx_k_parseyaml, sizeof(__pyx_k_parseyaml), 0, 0, 1, 1},
    {&__pyx_n_s_pat_match, __pyx_k_pat_match, sizeof(__pyx_k_pat_match), 0, 0, 1, 1},
    {&__pyx_n_s_pat_uncorr, __pyx_k_pat_uncorr, sizeof(__pyx_k_pat_uncorr), 0, 0, 1, 1},
    {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 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_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1},
    {&__pyx_n_s_precision, __pyx_k_precision, sizeof(__pyx_k_precision), 0, 0, 1, 1},
    {&__pyx_n_s_prep_patterns, __pyx_k_prep_patterns, sizeof(__pyx_k_prep_patterns), 0, 0, 1, 1},
    {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
    {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 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_quadSum, __pyx_k_quadSum, sizeof(__pyx_k_quadSum), 0, 0, 1, 1},
    {&__pyx_n_s_quadSumAvg, __pyx_k_quadSumAvg, sizeof(__pyx_k_quadSumAvg), 0, 0, 1, 1},
    {&__pyx_n_s_quadSumEnv, __pyx_k_quadSumEnv, sizeof(__pyx_k_quadSumEnv), 0, 0, 1, 1},
    {&__pyx_n_s_quadSumNeg, __pyx_k_quadSumNeg, sizeof(__pyx_k_quadSumNeg), 0, 0, 1, 1},
    {&__pyx_n_s_quadSumPos, __pyx_k_quadSumPos, sizeof(__pyx_k_quadSumPos), 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_read, __pyx_k_read, sizeof(__pyx_k_read), 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_symmetric, __pyx_k_read_symmetric, sizeof(__pyx_k_read_symmetric), 0, 0, 1, 1},
    {&__pyx_n_s_rebinX, __pyx_k_rebinX, sizeof(__pyx_k_rebinX), 0, 0, 1, 1},
    {&__pyx_n_s_rebinXBy, __pyx_k_rebinXBy, sizeof(__pyx_k_rebinXBy), 0, 0, 1, 1},
    {&__pyx_n_s_rebinXTo, __pyx_k_rebinXTo, sizeof(__pyx_k_rebinXTo), 0, 0, 1, 1},
    {&__pyx_n_s_rebinY, __pyx_k_rebinY, sizeof(__pyx_k_rebinY), 0, 0, 1, 1},
    {&__pyx_n_s_rebinYBy, __pyx_k_rebinYBy, sizeof(__pyx_k_rebinYBy), 0, 0, 1, 1},
    {&__pyx_n_s_rebinYTo, __pyx_k_rebinYTo, sizeof(__pyx_k_rebinYTo), 0, 0, 1, 1},
    {&__pyx_n_s_rebinZ, __pyx_k_rebinZ, sizeof(__pyx_k_rebinZ), 0, 0, 1, 1},
    {&__pyx_n_s_rebinZBy, __pyx_k_rebinZBy, sizeof(__pyx_k_rebinZBy), 0, 0, 1, 1},
    {&__pyx_n_s_rebinZTo, __pyx_k_rebinZTo, sizeof(__pyx_k_rebinZTo), 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_relErrAvg, __pyx_k_relErrAvg, sizeof(__pyx_k_relErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_relErrDown, __pyx_k_relErrDown, sizeof(__pyx_k_relErrDown), 0, 0, 1, 1},
    {&__pyx_n_s_relErrDownUp, __pyx_k_relErrDownUp, sizeof(__pyx_k_relErrDownUp), 0, 0, 1, 1},
    {&__pyx_n_s_relErrEnv, __pyx_k_relErrEnv, sizeof(__pyx_k_relErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_relErrUp, __pyx_k_relErrUp, sizeof(__pyx_k_relErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_relErrW, __pyx_k_relErrW, sizeof(__pyx_k_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_relTotalErr, __pyx_k_relTotalErr, sizeof(__pyx_k_relTotalErr), 0, 0, 1, 1},
    {&__pyx_n_s_relTotalErrAvg, __pyx_k_relTotalErrAvg, sizeof(__pyx_k_relTotalErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_relTotalErrEnv, __pyx_k_relTotalErrEnv, sizeof(__pyx_k_relTotalErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_relTotalErrNeg, __pyx_k_relTotalErrNeg, sizeof(__pyx_k_relTotalErrNeg), 0, 0, 1, 1},
    {&__pyx_n_s_relTotalErrPos, __pyx_k_relTotalErrPos, sizeof(__pyx_k_relTotalErrPos), 0, 0, 1, 1},
    {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1},
    {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1},
    {&__pyx_n_s_resetPath, __pyx_k_resetPath, sizeof(__pyx_k_resetPath), 0, 0, 1, 1},
    {&__pyx_n_s_resetTitle, __pyx_k_resetTitle, sizeof(__pyx_k_resetTitle), 0, 0, 1, 1},
    {&__pyx_n_s_rmAnnotation, __pyx_k_rmAnnotation, sizeof(__pyx_k_rmAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_rmErrs, __pyx_k_rmErrs, sizeof(__pyx_k_rmErrs), 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_rmSource, __pyx_k_rmSource, sizeof(__pyx_k_rmSource), 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_sW, __pyx_k_sW, sizeof(__pyx_k_sW), 0, 0, 1, 1},
    {&__pyx_n_s_sW2, __pyx_k_sW2, sizeof(__pyx_k_sW2), 0, 0, 1, 1},
    {&__pyx_n_s_sWcross, __pyx_k_sWcross, sizeof(__pyx_k_sWcross), 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_points, __pyx_k_s_s_d_points, sizeof(__pyx_k_s_s_d_points), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_s_d_bins, __pyx_k_s_s_s_d_bins, sizeof(__pyx_k_s_s_s_d_bins), 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_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_scaleErr, __pyx_k_scaleErr, sizeof(__pyx_k_scaleErr), 0, 0, 1, 1},
    {&__pyx_n_s_scaleVal, __pyx_k_scaleVal, sizeof(__pyx_k_scaleVal), 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_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_sdd, __pyx_k_sdd, sizeof(__pyx_k_sdd), 0, 0, 1, 1},
    {&__pyx_n_s_sdi, __pyx_k_sdi, sizeof(__pyx_k_sdi), 0, 0, 1, 1},
    {&__pyx_n_s_sds, __pyx_k_sds, sizeof(__pyx_k_sds), 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_serializeContent, __pyx_k_serializeContent, sizeof(__pyx_k_serializeContent), 0, 0, 1, 1},
    {&__pyx_n_s_serializeMeta, __pyx_k_serializeMeta, sizeof(__pyx_k_serializeMeta), 0, 0, 1, 1},
    {&__pyx_n_s_serializeSources, __pyx_k_serializeSources, sizeof(__pyx_k_serializeSources), 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_setBinning, __pyx_k_setBinning, sizeof(__pyx_k_setBinning), 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_setIndices, __pyx_k_setIndices, sizeof(__pyx_k_setIndices), 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_config, __pyx_k_set_config, sizeof(__pyx_k_set_config), 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_si, __pyx_k_si, sizeof(__pyx_k_si), 0, 0, 1, 1},
    {&__pyx_n_s_sid, __pyx_k_sid, sizeof(__pyx_k_sid), 0, 0, 1, 1},
    {&__pyx_n_s_sii, __pyx_k_sii, sizeof(__pyx_k_sii), 0, 0, 1, 1},
    {&__pyx_n_s_sis, __pyx_k_sis, sizeof(__pyx_k_sis), 0, 0, 1, 1},
    {&__pyx_n_s_skipPath, __pyx_k_skipPath, sizeof(__pyx_k_skipPath), 0, 0, 1, 1},
    {&__pyx_n_s_skipTitle, __pyx_k_skipTitle, sizeof(__pyx_k_skipTitle), 0, 0, 1, 1},
    {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1},
    {&__pyx_n_s_sources, __pyx_k_sources, sizeof(__pyx_k_sources), 0, 0, 1, 1},
    {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
    {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
    {&__pyx_n_s_ss, __pyx_k_ss, sizeof(__pyx_k_ss), 0, 0, 1, 1},
    {&__pyx_n_s_ssd, __pyx_k_ssd, sizeof(__pyx_k_ssd), 0, 0, 1, 1},
    {&__pyx_n_s_ssi, __pyx_k_ssi, sizeof(__pyx_k_ssi), 0, 0, 1, 1},
    {&__pyx_n_s_sss, __pyx_k_sss, sizeof(__pyx_k_sss), 0, 0, 1, 1},
    {&__pyx_n_s_st, __pyx_k_st, sizeof(__pyx_k_st), 0, 0, 1, 1},
    {&__pyx_kp_s_stat_uncor, __pyx_k_stat_uncor, sizeof(__pyx_k_stat_uncor), 0, 0, 1, 0},
    {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 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_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_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_sumWA, __pyx_k_sumWA, sizeof(__pyx_k_sumWA), 0, 0, 1, 1},
    {&__pyx_n_s_sumWA2, __pyx_k_sumWA2, sizeof(__pyx_k_sumWA2), 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_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_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_sumWcross, __pyx_k_sumWcross, sizeof(__pyx_k_sumWcross), 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_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 1},
    {&__pyx_n_s_totalErr, __pyx_k_totalErr, sizeof(__pyx_k_totalErr), 0, 0, 1, 1},
    {&__pyx_n_s_totalErrAvg, __pyx_k_totalErrAvg, sizeof(__pyx_k_totalErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_totalErrEnv, __pyx_k_totalErrEnv, sizeof(__pyx_k_totalErrEnv), 0, 0, 1, 1},
    {&__pyx_n_s_totalErrNeg, __pyx_k_totalErrNeg, sizeof(__pyx_k_totalErrNeg), 0, 0, 1, 1},
    {&__pyx_n_s_totalErrPos, __pyx_k_totalErrPos, sizeof(__pyx_k_totalErrPos), 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_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
    {&__pyx_n_s_unpatterns, __pyx_k_unpatterns, sizeof(__pyx_k_unpatterns), 0, 0, 1, 1},
    {&__pyx_n_s_upperX, __pyx_k_upperX, sizeof(__pyx_k_upperX), 0, 0, 1, 1},
    {&__pyx_n_s_upperY, __pyx_k_upperY, sizeof(__pyx_k_upperY), 0, 0, 1, 1},
    {&__pyx_n_s_upperZ, __pyx_k_upperZ, sizeof(__pyx_k_upperZ), 0, 0, 1, 1},
    {&__pyx_n_s_useFocus, __pyx_k_useFocus, sizeof(__pyx_k_useFocus), 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_valMax, __pyx_k_valMax, sizeof(__pyx_k_valMax), 0, 0, 1, 1},
    {&__pyx_n_s_valMin, __pyx_k_valMin, sizeof(__pyx_k_valMin), 0, 0, 1, 1},
    {&__pyx_n_s_vals, __pyx_k_vals, sizeof(__pyx_k_vals), 0, 0, 1, 1},
    {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
    {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
    {&__pyx_n_s_variance, __pyx_k_variance, sizeof(__pyx_k_variance), 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_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_weights, __pyx_k_weights, sizeof(__pyx_k_weights), 0, 0, 1, 1},
    {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1},
    {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
    {&__pyx_n_s_writeFLAT, __pyx_k_writeFLAT, sizeof(__pyx_k_writeFLAT), 0, 0, 1, 1},
    {&__pyx_n_s_writeYODA, __pyx_k_writeYODA, sizeof(__pyx_k_writeYODA), 0, 0, 1, 1},
    {&__pyx_n_s_writeYODA1, __pyx_k_writeYODA1, sizeof(__pyx_k_writeYODA1), 0, 0, 1, 1},
    {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
    {&__pyx_n_s_xEdge, __pyx_k_xEdge, sizeof(__pyx_k_xEdge), 0, 0, 1, 1},
    {&__pyx_n_s_xEdges, __pyx_k_xEdges, sizeof(__pyx_k_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_xErr, __pyx_k_xErr, sizeof(__pyx_k_xErr), 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_xErrDn, __pyx_k_xErrDn, sizeof(__pyx_k_xErrDn), 0, 0, 1, 1},
    {&__pyx_n_s_xErrMinus, __pyx_k_xErrMinus, sizeof(__pyx_k_xErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_xErrPlus, __pyx_k_xErrPlus, sizeof(__pyx_k_xErrPlus), 0, 0, 1, 1},
    {&__pyx_n_s_xErrUp, __pyx_k_xErrUp, sizeof(__pyx_k_xErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_xErrs, __pyx_k_xErrs, sizeof(__pyx_k_xErrs), 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_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_xVal, __pyx_k_xVal, sizeof(__pyx_k_xVal), 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_xedges, __pyx_k_xedges, sizeof(__pyx_k_xedges), 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_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
    {&__pyx_n_s_yEdge, __pyx_k_yEdge, sizeof(__pyx_k_yEdge), 0, 0, 1, 1},
    {&__pyx_n_s_yEdges, __pyx_k_yEdges, sizeof(__pyx_k_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_yErr, __pyx_k_yErr, sizeof(__pyx_k_yErr), 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_yErrDn, __pyx_k_yErrDn, sizeof(__pyx_k_yErrDn), 0, 0, 1, 1},
    {&__pyx_n_s_yErrMinus, __pyx_k_yErrMinus, sizeof(__pyx_k_yErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_yErrPlus, __pyx_k_yErrPlus, sizeof(__pyx_k_yErrPlus), 0, 0, 1, 1},
    {&__pyx_n_s_yErrUp, __pyx_k_yErrUp, sizeof(__pyx_k_yErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_yErrs, __pyx_k_yErrs, sizeof(__pyx_k_yErrs), 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_yMid, __pyx_k_yMid, sizeof(__pyx_k_yMid), 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_yStdErr, __pyx_k_yStdErr, sizeof(__pyx_k_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_yVal, __pyx_k_yVal, sizeof(__pyx_k_yVal), 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_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_zEdge, __pyx_k_zEdge, sizeof(__pyx_k_zEdge), 0, 0, 1, 1},
    {&__pyx_n_s_zEdges, __pyx_k_zEdges, sizeof(__pyx_k_zEdges), 0, 0, 1, 1},
    {&__pyx_n_s_zErr, __pyx_k_zErr, sizeof(__pyx_k_zErr), 0, 0, 1, 1},
    {&__pyx_n_s_zErrAvg, __pyx_k_zErrAvg, sizeof(__pyx_k_zErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_zErrAvgs, __pyx_k_zErrAvgs, sizeof(__pyx_k_zErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_zErrDn, __pyx_k_zErrDn, sizeof(__pyx_k_zErrDn), 0, 0, 1, 1},
    {&__pyx_n_s_zErrMinus, __pyx_k_zErrMinus, sizeof(__pyx_k_zErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_zErrPlus, __pyx_k_zErrPlus, sizeof(__pyx_k_zErrPlus), 0, 0, 1, 1},
    {&__pyx_n_s_zErrUp, __pyx_k_zErrUp, sizeof(__pyx_k_zErrUp), 0, 0, 1, 1},
    {&__pyx_n_s_zErrs, __pyx_k_zErrs, sizeof(__pyx_k_zErrs), 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_zMean, __pyx_k_zMean, sizeof(__pyx_k_zMean), 0, 0, 1, 1},
    {&__pyx_n_s_zMid, __pyx_k_zMid, sizeof(__pyx_k_zMid), 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_zRMS, __pyx_k_zRMS, sizeof(__pyx_k_zRMS), 0, 0, 1, 1},
    {&__pyx_n_s_zStdDev, __pyx_k_zStdDev, sizeof(__pyx_k_zStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_zStdErr, __pyx_k_zStdErr, sizeof(__pyx_k_zStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_zVal, __pyx_k_zVal, sizeof(__pyx_k_zVal), 0, 0, 1, 1},
    {&__pyx_n_s_zVals, __pyx_k_zVals, sizeof(__pyx_k_zVals), 0, 0, 1, 1},
    {&__pyx_n_s_zVariance, __pyx_k_zVariance, sizeof(__pyx_k_zVariance), 0, 0, 1, 1},
    {&__pyx_n_s_zWidth, __pyx_k_zWidth, sizeof(__pyx_k_zWidth), 0, 0, 1, 1},
    {&__pyx_n_s_zWidths, __pyx_k_zWidths, sizeof(__pyx_k_zWidths), 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_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 3, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 30, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(2, 75, __pyx_L1_error)
  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) __PYX_ERR(2, 77, __pyx_L1_error)
  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(2, 86, __pyx_L1_error)
  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(3, 107, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(4, 50, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(5, 42, __pyx_L1_error)
  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(6, 377, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 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/Functions.pyx":30
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 *     if type(ao1) is not type(ao2):
 *         raise ValueError("Histograms must be of the same type to be divided")             # <<<<<<<<<<<<<<
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, efficiency)
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Histograms_must_be_of_the_same_t); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(2, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "include/Functions.pyx":33
 *     if 'Counter' in str(type(ao1)) or 'Binned' in str(type(ao1)):
 *         return ao1.divideBy(ao2, efficiency)
 *     raise ValueError("Only division of BinnedHisto, BinnedProfile and BinnedEstimate supported so far... please contact the developers!")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Only_division_of_BinnedHisto_Bin); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(2, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "include/IO.pyx":107
 *         s = sys.stdin.buffer.read()
 *     else:
 *         with open(file_or_filename, "rb") as f:             # <<<<<<<<<<<<<<
 *             s = f.read()
 *     if type(s) is str:
 */
  __pyx_tuple__8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(3, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);

  /* "include/IO.pyx":129
 * 
 * def _istxt(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return type(x) in [unicode, str]
 *     else:
 */
  __pyx_tuple__9 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_0); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(3, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "include/generated/Axis.pyx":36
 *         cdef vector[int] edges_i
 *         cdef vector[string] edges_s
 *         if not len(edges):  edges.append(0.0, 1.0) # assume CAxis is default             # <<<<<<<<<<<<<<
 *         if isinstance(edges[0], float):
 *           edges_d = list(float(x) for x in edges)
 */
  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_float_0_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(4, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "include/generated/Axis.pyx":50
 *           self.axisT = 's'
 *         else:
 *           raise RuntimeError("Unknown edge type encountered!")             # <<<<<<<<<<<<<<
 * 
 *     #def copy(self):
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Unknown_edge_type_encountered); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(4, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "include/generated/Bin1D.pyx":14
 *         """A bin-content wrapper in 1D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(5, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);
  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(5, 14, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_binning_2); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(5, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_setBinning, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(5, 20, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_tuple__17 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_binIndex, __pyx_n_s_indexArr, __pyx_n_s_isMasked); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_setIndices, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(5, 23, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_tuple__19 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_binIndex, __pyx_n_s_indexArr, __pyx_n_s_binning_2, __pyx_n_s_isMasked); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(5, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);
  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_attach, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(5, 28, __pyx_L1_error)
  __pyx_tuple__21 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(5, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);

  /* "include/generated/Bin1D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_index, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(5, 34, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_isMasked, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(5, 37, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_tuple__24 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_vol, __pyx_n_s_dim, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(5, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);
  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_generated_Bin1D_pyx, __pyx_n_s_dVol, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(5, 40, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_tuple__26 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_dim, __pyx_n_s_config); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(5, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);
  __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_width, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(5, 46, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_max, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(5, 51, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_min, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(5, 56, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_mid, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(5, 61, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_edge, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(5, 66, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dLen(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_dLen, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(5, 71, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_xWidth, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(5, 74, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_xMax, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(5, 77, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_xMin, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(5, 80, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_xMid, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(5, 83, __pyx_L1_error)

  /* "include/generated/Bin1D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_pyx, __pyx_n_s_xEdge, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(5, 86, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":14
 *         """A bin-content wrapper in 2D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(15, 14, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __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__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_setBinning, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(15, 20, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_setIndices, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(15, 23, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_attach, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(15, 28, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_index, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(15, 34, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_isMasked, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(15, 37, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_generated_Bin2D_pyx, __pyx_n_s_dVol, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(15, 40, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_width, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(15, 46, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_max, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(15, 51, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_min, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(15, 56, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_mid, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(15, 61, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_edge, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(15, 66, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_dArea, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(15, 71, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":74
 *             return self.dVol()
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_xWidth, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(15, 74, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":77
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_xMax, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(15, 77, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":80
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_xMin, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(15, 80, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":83
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_xMid, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(15, 83, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":86
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_xEdge, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(15, 86, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":89
 *             return self.edge(0)
 * 
 *         def dArea(self):             # <<<<<<<<<<<<<<
 *             return self.dVol()
 * 
 */
  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_dArea, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(15, 89, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":92
 *             return self.dVol()
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_yWidth, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(15, 92, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":95
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_yMax, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(15, 95, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":98
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */
  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_yMin, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(15, 98, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":101
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */
  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_yMid, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(15, 101, __pyx_L1_error)

  /* "include/generated/Bin2D.pyx":104
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */
  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_pyx, __pyx_n_s_yEdge, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(15, 104, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":14
 *         """A bin-content wrapper in 3D."""
 * 
 *         def __init__(self):             # <<<<<<<<<<<<<<
 *             self._index   = None
 *             self._indices = None
 */
  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(16, 14, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":20
 *             self._masked  = False
 * 
 *         def setBinning(self, binning):             # <<<<<<<<<<<<<<
 *             self._binning = binning
 * 
 */
  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_setBinning, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(16, 20, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":23
 *             self._binning = binning
 * 
 *         def setIndices(self, binIndex, indexArr, isMasked):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_setIndices, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(16, 23, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":28
 *             self._masked  = isMasked
 * 
 *         def attach(self, binIndex, indexArr, binning, isMasked = False):             # <<<<<<<<<<<<<<
 *             self._index   = int(binIndex)
 *             self._indices = list(indexArr)
 */
  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_attach, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(16, 28, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":34
 *             self._masked  = isMasked
 * 
 *         def index(self):             # <<<<<<<<<<<<<<
 *             return self._index
 * 
 */
  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_index, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(16, 34, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":37
 *             return self._index
 * 
 *         def isMasked(self):             # <<<<<<<<<<<<<<
 *             return self._masked
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_isMasked, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(16, 37, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":40
 *             return self._masked
 * 
 *         def dVol(self):             # <<<<<<<<<<<<<<
 *             vol = 1.0
 *             for dim, idx in enumerate(self._indices):
 */
  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_generated_Bin3D_pyx, __pyx_n_s_dVol, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(16, 40, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":46
 *             return vol
 * 
 *         def width(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_width, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(16, 46, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":51
 *             return self._binning.width(dim, self._indices[dim]) if config[dim] == 'd' else 1.0
 * 
 *         def max(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_max, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(16, 51, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":56
 *             return self._binning.max(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def min(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_min, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(16, 56, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":61
 *             return self._binning.min(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def mid(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_mid, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(16, 61, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":66
 *             return self._binning.mid(dim, self._indices[dim]) if config[dim] == 'd' else None
 * 
 *         def edge(self, dim):             # <<<<<<<<<<<<<<
 *             assert(dim < len(self._indices))
 *             config = self._binning.config()
 */
  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_edge, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(16, 66, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":71
 *             return self._binning.edge(dim, self._indices[dim]) if config[dim] != 'd' else None
 * 
 *         def xWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_xWidth, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(16, 71, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":74
 *             return self.width(0)
 * 
 *         def xMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_xMax, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(16, 74, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":77
 *             return self.max(0)
 * 
 *         def xMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_xMin, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(16, 77, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":80
 *             return self.min(0)
 * 
 *         def xMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_xMid, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(16, 80, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":83
 *             return self.mid(0)
 * 
 *         def xEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(0)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_xEdge, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(16, 83, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":86
 *             return self.edge(0)
 * 
 *         def yWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_yWidth, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(16, 86, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":89
 *             return self.width(1)
 * 
 *         def yMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_yMax, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(16, 89, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":92
 *             return self.max(1)
 * 
 *         def yMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_yMin, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(16, 92, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":95
 *             return self.min(1)
 * 
 *         def yMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_yMid, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(16, 95, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":98
 *             return self.mid(1)
 * 
 *         def yEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(1)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_yEdge, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(16, 98, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":101
 *             return self.edge(1)
 * 
 *         def zWidth(self):             # <<<<<<<<<<<<<<
 *             return self.width(2)
 * 
 */
  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_zWidth, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(16, 101, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":104
 *             return self.width(2)
 * 
 *         def zMax(self):             # <<<<<<<<<<<<<<
 *             return self.max(2)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_zMax, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(16, 104, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":107
 *             return self.max(2)
 * 
 *         def zMin(self):             # <<<<<<<<<<<<<<
 *             return self.min(2)
 * 
 */
  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_zMin, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(16, 107, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":110
 *             return self.min(2)
 * 
 *         def zMid(self):             # <<<<<<<<<<<<<<
 *             return self.mid(2)
 * 
 */
  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_zMid, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(16, 110, __pyx_L1_error)

  /* "include/generated/Bin3D.pyx":113
 *             return self.mid(2)
 * 
 *         def zEdge(self):             # <<<<<<<<<<<<<<
 *             return self.edge(2)
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin3D_pyx, __pyx_n_s_zEdge, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(16, 113, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":70
 *           self._set_config(edges_s[0])
 *         else:
 *           raise RuntimeError("Unknown axis combination encountered!")             # <<<<<<<<<<<<<<
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):
 */
  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_Unknown_axis_combination_encount); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(6, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__89);
  __Pyx_GIVEREF(__pyx_tuple__89);

  /* "include/generated/BinnedEstimate1D.pyx":104
 *           try:
 *             if str((<c.BinnedEstimate1D[double]*> self.ptr())._config()) != "d":
 *                 raise RuntimeError("Dynamic ptr cast failed. Next...")             # <<<<<<<<<<<<<<
 *             edges = tuple([
 *               (<c.BinnedEstimate1D[double]*> self.ptr()).xEdges(False),
 */
  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_Dynamic_ptr_cast_failed_Next); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(6, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);

  /* "include/generated/BinnedEstimate1D.pyx":256
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \             # <<<<<<<<<<<<<<
 *                                        if (includeOverflows or self.isVisible(i)) \
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 */
  __pyx_tuple__91 = PyTuple_Pack(2, Py_True, Py_True); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(6, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__91);
  __Pyx_GIVEREF(__pyx_tuple__91);

  /* "yoda/core.pyx":22
 * cimport yoda.declarations as c
 * cimport yoda.util as cutil
 * import yoda.util as util             # <<<<<<<<<<<<<<
 * 
 * ## Pure Python imports
 */
  __pyx_tuple__107 = PyTuple_Pack(2, __pyx_n_s_yoda, __pyx_n_s_util); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(8, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);

  /* "yoda/core.pyx":28
 * from operator import attrgetter
 * 
 * def version():             # <<<<<<<<<<<<<<
 *     "Return YODA library version as a string"
 *     return c.version()
 */
  __pyx_codeobj__109 = (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, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(8, 28, __pyx_L1_error)

  /* "yoda/core.pyx":32
 *     return c.version()
 * 
 * def getLibPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()
 */
  __pyx_codeobj__110 = (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, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(8, 32, __pyx_L1_error)

  /* "yoda/core.pyx":36
 *     return c.getLibPath()
 * 
 * def getDataPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()
 */
  __pyx_codeobj__111 = (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, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(8, 36, __pyx_L1_error)

  /* "yoda/core.pyx":40
 *     return c.getDataPath()
 * 
 * def getYodaDataPath():             # <<<<<<<<<<<<<<
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()
 */
  __pyx_codeobj__112 = (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, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(8, 40, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":25
 * 
 * 
 *     def type(self):             # <<<<<<<<<<<<<<
 *         "String identifier for this type"
 *         return self.aoptr().type()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_type, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(9, 25, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":29
 *         return self.aoptr().type()
 * 
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_dim, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(9, 29, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":33
 *         return self.aoptr().dim()
 * 
 *     def annotations(self):             # <<<<<<<<<<<<<<
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 */
  __pyx_tuple__115 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_a); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(9, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);
  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotations, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(9, 33, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */
  __pyx_tuple__117 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__117);
  __Pyx_GIVEREF(__pyx_tuple__117);
  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__117, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotationsDict, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(9, 38, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":44
 *         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__119 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_k, __pyx_n_s_default, __pyx_n_s_rtn); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(9, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__119);
  __Pyx_GIVEREF(__pyx_tuple__119);
  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotation, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(9, 44, __pyx_L1_error)
  __pyx_tuple__121 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(9, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__121);
  __Pyx_GIVEREF(__pyx_tuple__121);

  /* "include/AnalysisObject.pyx":57
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))
 */
  __pyx_tuple__122 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(9, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__122);
  __Pyx_GIVEREF(__pyx_tuple__122);
  __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__122, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setAnnotation, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) __PYX_ERR(9, 57, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":61
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))
 * 
 *     def hasAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)
 */
  __pyx_tuple__124 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_k); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(9, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__124);
  __Pyx_GIVEREF(__pyx_tuple__124);
  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_hasAnnotation, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) __PYX_ERR(9, 61, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":65
 *         return self.aoptr().hasAnnotation(<string>k)
 * 
 *     def rmAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)
 */
  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_rmAnnotation, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(9, 65, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":69
 *         self.aoptr().rmAnnotation(<string>k)
 * 
 *     def clearAnnotations(self):             # <<<<<<<<<<<<<<
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_clearAnnotations, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(9, 69, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":86
 * 
 * 
 *     def name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 */
  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_name_2, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(9, 86, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":93
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_path, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(9, 93, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":100
 *         return self.aoptr().path()
 * 
 *     def setPath(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_tuple__130 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_path); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__130);
  __Pyx_GIVEREF(__pyx_tuple__130);
  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setPath, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(9, 100, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":107
 *         self.aoptr().setPath(<string>path)
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */
  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_title, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(9, 107, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":113
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */
  __pyx_tuple__133 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_title); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(9, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__133);
  __Pyx_GIVEREF(__pyx_tuple__133);
  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setTitle, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(9, 113, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":119
 *         self.aoptr().setTitle(<string>title)
 * 
 *     def axisConfig(self):             # <<<<<<<<<<<<<<
 *       return self.aoptr()._config()
 * 
 */
  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_axisConfig, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(9, 119, __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__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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(1, 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__137 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__137);
  __Pyx_GIVEREF(__pyx_tuple__137);
  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/Binning.pyx":3
 * cimport util
 * 
 * class Binning(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 */
  __pyx_tuple__139 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__139);
  __Pyx_GIVEREF(__pyx_tuple__139);
  __pyx_tuple__140 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__140)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__140);
  __Pyx_GIVEREF(__pyx_tuple__140);

  /* "include/Binning.pyx":4
 * 
 * class Binning(object):
 *     def __init__(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self.axes = list(args[0].axes)
 */
  __pyx_tuple__141 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__141);
  __Pyx_GIVEREF(__pyx_tuple__141);
  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_init, 4, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(0, 4, __pyx_L1_error)

  /* "include/Binning.pyx":10
 *             self.axes = [ Axis(edges) for edges in args ]
 * 
 *     def config(self):             # <<<<<<<<<<<<<<
 *         return ''.join(a.type() for a in self.axes)
 * 
 */
  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__117, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_config, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(0, 10, __pyx_L1_error)

  /* "include/Binning.pyx":13
 *         return ''.join(a.type() for a in self.axes)
 * 
 *     def width(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].width(index)
 * 
 */
  __pyx_tuple__144 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_dim, __pyx_n_s_index); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__144);
  __Pyx_GIVEREF(__pyx_tuple__144);
  __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_width, 13, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) __PYX_ERR(0, 13, __pyx_L1_error)

  /* "include/Binning.pyx":16
 *         return self.axes[dim].width(index)
 * 
 *     def max(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].max(index)
 * 
 */
  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_max, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(0, 16, __pyx_L1_error)

  /* "include/Binning.pyx":19
 *         return self.axes[dim].max(index)
 * 
 *     def min(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].min(index)
 * 
 */
  __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_min, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(0, 19, __pyx_L1_error)

  /* "include/Binning.pyx":22
 *         return self.axes[dim].min(index)
 * 
 *     def mid(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].mid(index)
 * 
 */
  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_mid, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) __PYX_ERR(0, 22, __pyx_L1_error)

  /* "include/Binning.pyx":25
 *         return self.axes[dim].mid(index)
 * 
 *     def edge(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].edge(index)
 * 
 */
  __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Binning_pyx, __pyx_n_s_edge, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(0, 25, __pyx_L1_error)

  /* "include/Counter.pyx":28
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_reset, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(10, 28, __pyx_L1_error)

  /* "include/Counter.pyx":34
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Couner.
 *         Clone this Counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_clone, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(10, 34, __pyx_L1_error)

  /* "include/Counter.pyx":40
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */
  __pyx_tuple__152 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(10, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__152);
  __Pyx_GIVEREF(__pyx_tuple__152);
  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_fill, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(10, 40, __pyx_L1_error)
  __pyx_tuple__154 = PyTuple_Pack(2, __pyx_float_1_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(10, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__154);
  __Pyx_GIVEREF(__pyx_tuple__154);

  /* "include/Counter.pyx":45
 *         return self.cptr().fill(weight, fraction)
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_tuple__155 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_numEntries, __pyx_n_s_sumW, __pyx_n_s_sumW2); if (unlikely(!__pyx_tuple__155)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__155);
  __Pyx_GIVEREF(__pyx_tuple__155);
  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_set, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) __PYX_ERR(10, 45, __pyx_L1_error)

  /* "include/Counter.pyx":53
 *         self.cptr().set(numEntries, sumW, sumW2)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */
  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_numEntries, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(10, 53, __pyx_L1_error)

  /* "include/Counter.pyx":58
 *         return self.cptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_effNumEntries, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) __PYX_ERR(10, 58, __pyx_L1_error)

  /* "include/Counter.pyx":63
 *         return self.cptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_sumW, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(10, 63, __pyx_L1_error)

  /* "include/Counter.pyx":68
 *         return self.cptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_sumW2, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(10, 68, __pyx_L1_error)

  /* "include/Counter.pyx":73
 *         return self.cptr().sumW2()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_val, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(10, 73, __pyx_L1_error)

  /* "include/Counter.pyx":78
 *         return self.cptr().val()
 * 
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_err, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) __PYX_ERR(10, 78, __pyx_L1_error)

  /* "include/Counter.pyx":83
 *         return self.cptr().err()
 * 
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_relErr, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__163)) __PYX_ERR(10, 83, __pyx_L1_error)

  /* "include/Counter.pyx":89
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 */
  __pyx_tuple__164 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_w); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(10, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__164);
  __Pyx_GIVEREF(__pyx_tuple__164);
  __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_scaleW, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(10, 89, __pyx_L1_error)

  /* "include/Counter.pyx":95
 * 
 * 
 *     def mkEstimate(self, path = "", source = ""):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 *         Convert this Counter to a Estimate."""
 */
  __pyx_tuple__166 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_source, __pyx_n_s_tmp); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(10, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__166);
  __Pyx_GIVEREF(__pyx_tuple__166);
  __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_mkEstimate, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) __PYX_ERR(10, 95, __pyx_L1_error)
  __pyx_tuple__168 = PyTuple_Pack(2, __pyx_kp_s__2, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(10, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__168);
  __Pyx_GIVEREF(__pyx_tuple__168);

  /* "include/Counter.pyx":101
 *         return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def mkScatter(self, path = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */
  __pyx_tuple__169 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_s1); if (unlikely(!__pyx_tuple__169)) __PYX_ERR(10, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__169);
  __Pyx_GIVEREF(__pyx_tuple__169);
  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_mkScatter, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) __PYX_ERR(10, 101, __pyx_L1_error)
  __pyx_tuple__171 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__171)) __PYX_ERR(10, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__171);
  __Pyx_GIVEREF(__pyx_tuple__171);

  /* "include/Counter.pyx":107
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 */
  __pyx_tuple__172 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_efficiency, __pyx_n_s_tmp); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(10, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__172);
  __Pyx_GIVEREF(__pyx_tuple__172);
  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_divideBy, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(10, 107, __pyx_L1_error)

  /* "include/Counter.pyx":115
 *             return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.cptr().lengthContent(fixed_length)
 */
  __pyx_tuple__174 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_fixed_length); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(10, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__174);
  __Pyx_GIVEREF(__pyx_tuple__174);
  __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__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_lengthContent, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(10, 115, __pyx_L1_error)

  /* "include/Counter.pyx":119
 *         return self.cptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.cptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_serializeContent, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(10, 119, __pyx_L1_error)

  /* "include/Counter.pyx":123
 *         return self.cptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_tuple__177 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_cdata, __pyx_n_s_x); if (unlikely(!__pyx_tuple__177)) __PYX_ERR(10, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__177);
  __Pyx_GIVEREF(__pyx_tuple__177);
  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_deserializeContent, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(10, 123, __pyx_L1_error)

  /* "include/Counter.pyx":129
 *         self.cptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_tuple__179 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_skipPath, __pyx_n_s_skipTitle); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(10, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__179);
  __Pyx_GIVEREF(__pyx_tuple__179);
  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_lengthMeta, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) __PYX_ERR(10, 129, __pyx_L1_error)

  /* "include/Counter.pyx":133
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_serializeMeta, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(10, 133, __pyx_L1_error)

  /* "include/Counter.pyx":137
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_tuple__182 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_resetPath, __pyx_n_s_resetTitle, __pyx_n_s_cdata, __pyx_n_s_x); if (unlikely(!__pyx_tuple__182)) __PYX_ERR(10, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__182);
  __Pyx_GIVEREF(__pyx_tuple__182);
  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_deserializeMeta, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) __PYX_ERR(10, 137, __pyx_L1_error)
  __pyx_tuple__184 = PyTuple_Pack(2, Py_False, Py_False); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(10, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__184);
  __Pyx_GIVEREF(__pyx_tuple__184);

  /* "(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__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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(1, 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__186 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/Dbn0D.pyx":17
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_copy, 17, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(11, 17, __pyx_L1_error)

  /* "include/Dbn0D.pyx":20
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_reset, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(11, 20, __pyx_L1_error)

  /* "include/Dbn0D.pyx":28
 *         self.d0ptr().reset()
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_set, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(11, 28, __pyx_L1_error)

  /* "include/Dbn0D.pyx":36
 *         self.d0ptr().set(numEntries, sumW, sumW2)
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float weight=1.0) -> None
 */
  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_fill, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(11, 36, __pyx_L1_error)

  /* "include/Dbn0D.pyx":44
 *         self.d0ptr().fill(weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __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__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_scaleW, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(11, 44, __pyx_L1_error)

  /* "include/Dbn0D.pyx":53
 * 
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_numEntries, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(11, 53, __pyx_L1_error)

  /* "include/Dbn0D.pyx":57
 *         return self.d0ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_effNumEntries, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(11, 57, __pyx_L1_error)

  /* "include/Dbn0D.pyx":62
 * 
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d0ptr().errW()
 */
  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_errW, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(11, 62, __pyx_L1_error)

  /* "include/Dbn0D.pyx":66
 *         return self.d0ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()
 */
  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_relErrW, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(11, 66, __pyx_L1_error)

  /* "include/Dbn0D.pyx":71
 * 
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()
 */
  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_sumW, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(11, 71, __pyx_L1_error)

  /* "include/Dbn0D.pyx":75
 *         return self.d0ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()
 */
  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_sumW2, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(11, 75, __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__198 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(1, 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__199 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/Estimate.pyx":14
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Estimate(deref(self.estptr())))
 * 
 */
  __pyx_codeobj__200 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_copy, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__200)) __PYX_ERR(12, 14, __pyx_L1_error)

  /* "include/Estimate.pyx":18
 * 
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */
  __pyx_tuple__201 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__201)) __PYX_ERR(12, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__201);
  __Pyx_GIVEREF(__pyx_tuple__201);
  __pyx_codeobj__202 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_Estimate_pyx, __pyx_n_s_setVal, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) __PYX_ERR(12, 18, __pyx_L1_error)

  /* "include/Estimate.pyx":22
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */
  __pyx_tuple__203 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_es, __pyx_n_s_source, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__203)) __PYX_ERR(12, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__203);
  __Pyx_GIVEREF(__pyx_tuple__203);
  __pyx_codeobj__204 = (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__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_setErr, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(12, 22, __pyx_L1_error)

  /* "include/Estimate.pyx":41
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */
  __pyx_tuple__205 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_val, __pyx_n_s_errs, __pyx_n_s_source); if (unlikely(!__pyx_tuple__205)) __PYX_ERR(12, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__205);
  __Pyx_GIVEREF(__pyx_tuple__205);
  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_set, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(12, 41, __pyx_L1_error)

  /* "include/Estimate.pyx":46
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_reset, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(12, 46, __pyx_L1_error)

  /* "include/Estimate.pyx":55
 * 
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */
  __pyx_codeobj__208 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_val, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(12, 55, __pyx_L1_error)

  /* "include/Estimate.pyx":58
 *        return self.estptr().val()
 * 
 *     def valMax(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMax(source)
 * 
 */
  __pyx_tuple__209 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_source); if (unlikely(!__pyx_tuple__209)) __PYX_ERR(12, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__209);
  __Pyx_GIVEREF(__pyx_tuple__209);
  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_valMax, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(12, 58, __pyx_L1_error)

  /* "include/Estimate.pyx":61
 *        return self.estptr().valMax(source)
 * 
 *     def valMin(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMin(source)
 * 
 */
  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_valMin, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(12, 61, __pyx_L1_error)

  /* "include/Estimate.pyx":64
 *        return self.estptr().valMin(source)
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errDownUp, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(12, 64, __pyx_L1_error)

  /* "include/Estimate.pyx":67
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */
  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_err, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(12, 67, __pyx_L1_error)

  /* "include/Estimate.pyx":70
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */
  __pyx_codeobj__214 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errNegPos, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__214)) __PYX_ERR(12, 70, __pyx_L1_error)

  /* "include/Estimate.pyx":73
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errDown, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(12, 73, __pyx_L1_error)

  /* "include/Estimate.pyx":76
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */
  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errUp, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(12, 76, __pyx_L1_error)

  /* "include/Estimate.pyx":79
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errNeg, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(12, 79, __pyx_L1_error)

  /* "include/Estimate.pyx":82
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */
  __pyx_codeobj__218 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errPos, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__218)) __PYX_ERR(12, 82, __pyx_L1_error)

  /* "include/Estimate.pyx":85
 *        return self.estptr().errPos(source)
 * 
 *     def errAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errAvg(source)
 * 
 */
  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errAvg, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(12, 85, __pyx_L1_error)

  /* "include/Estimate.pyx":88
 *        return self.estptr().errAvg(source)
 * 
 *     def errEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errEnv(source)
 * 
 */
  __pyx_codeobj__220 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_errEnv, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__220)) __PYX_ERR(12, 88, __pyx_L1_error)

  /* "include/Estimate.pyx":91
 *        return self.estptr().errEnv(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */
  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErrDownUp, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(12, 91, __pyx_L1_error)

  /* "include/Estimate.pyx":94
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */
  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErr, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) __PYX_ERR(12, 94, __pyx_L1_error)

  /* "include/Estimate.pyx":97
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */
  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErrDown, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(12, 97, __pyx_L1_error)

  /* "include/Estimate.pyx":100
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */
  __pyx_codeobj__224 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErrUp, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__224)) __PYX_ERR(12, 100, __pyx_L1_error)

  /* "include/Estimate.pyx":103
 *        return self.estptr().relErrUp(source)
 * 
 *     def relErrAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrAvg(source)
 * 
 */
  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErrAvg, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(12, 103, __pyx_L1_error)

  /* "include/Estimate.pyx":106
 *        return self.estptr().relErrAvg(source)
 * 
 *     def relErrEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrEnv(source)
 * 
 */
  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relErrEnv, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) __PYX_ERR(12, 106, __pyx_L1_error)

  /* "include/Estimate.pyx":109
 *        return self.estptr().relErrEnv(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */
  __pyx_tuple__227 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pat_match); if (unlikely(!__pyx_tuple__227)) __PYX_ERR(12, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__227);
  __Pyx_GIVEREF(__pyx_tuple__227);
  __pyx_codeobj__228 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_quadSum, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) __PYX_ERR(12, 109, __pyx_L1_error)

  /* "include/Estimate.pyx":112
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_quadSumNeg, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(12, 112, __pyx_L1_error)

  /* "include/Estimate.pyx":115
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */
  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_quadSumPos, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(12, 115, __pyx_L1_error)

  /* "include/Estimate.pyx":118
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def quadSumAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 */
  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_quadSumAvg, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(12, 118, __pyx_L1_error)

  /* "include/Estimate.pyx":121
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 *     def quadSumEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 */
  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_quadSumEnv, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) __PYX_ERR(12, 121, __pyx_L1_error)

  /* "include/Estimate.pyx":124
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */
  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_totalErr, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(12, 124, __pyx_L1_error)

  /* "include/Estimate.pyx":127
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def totalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 */
  __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__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_totalErrNeg, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__234)) __PYX_ERR(12, 127, __pyx_L1_error)

  /* "include/Estimate.pyx":130
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 *     def totalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 */
  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_totalErrPos, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(12, 130, __pyx_L1_error)

  /* "include/Estimate.pyx":133
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 *     def totalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 */
  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_totalErrAvg, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(12, 133, __pyx_L1_error)

  /* "include/Estimate.pyx":136
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 *     def totalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 */
  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_totalErrEnv, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(12, 136, __pyx_L1_error)

  /* "include/Estimate.pyx":139
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */
  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relTotalErr, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) __PYX_ERR(12, 139, __pyx_L1_error)

  /* "include/Estimate.pyx":142
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */
  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relTotalErrNeg, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(12, 142, __pyx_L1_error)

  /* "include/Estimate.pyx":145
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */
  __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__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relTotalErrPos, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(12, 145, __pyx_L1_error)

  /* "include/Estimate.pyx":148
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def relTotalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 */
  __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__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relTotalErrAvg, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(12, 148, __pyx_L1_error)

  /* "include/Estimate.pyx":151
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 *     def relTotalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 */
  __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__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_relTotalErrEnv, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(12, 151, __pyx_L1_error)

  /* "include/Estimate.pyx":154
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_hasSource, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(12, 154, __pyx_L1_error)

  /* "include/Estimate.pyx":157
 *        return self.estptr().hasSource(<string> source)
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */
  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_sources, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(12, 157, __pyx_L1_error)

  /* "include/Estimate.pyx":160
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */
  __pyx_codeobj__245 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_numErrs, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(12, 160, __pyx_L1_error)

  /* "include/Estimate.pyx":163
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_rmSource, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(12, 163, __pyx_L1_error)

  /* "include/Estimate.pyx":166
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */
  __pyx_codeobj__247 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_rmErrs, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(12, 166, __pyx_L1_error)

  /* "include/Estimate.pyx":169
 *       return self.estptr().rmErrs()
 * 
 *     def serializeSources(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().sources()
 * 
 */
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_serializeSources, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(12, 169, __pyx_L1_error)

  /* "include/Estimate.pyx":172
 *       return self.estptr().sources()
 * 
 *     def deserializeSources(self, data):             # <<<<<<<<<<<<<<
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]
 */
  __pyx_codeobj__249 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate_pyx, __pyx_n_s_deserializeSources, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(12, 172, __pyx_L1_error)

  /* "include/Estimate.pyx":177
 *       return self.estptr().deserializeSources(cdata)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *       self.estptr().scale(factor)
 * 
 */
  __pyx_tuple__250 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_factor); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(12, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__250);
  __Pyx_GIVEREF(__pyx_tuple__250);
  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_Estimate_pyx, __pyx_n_s_scale, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(12, 177, __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__252 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(1, 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__253 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/Estimate0D.pyx":19
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Estimate0D.
 *         Clone this Estimate0Dr."""
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_clone, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(13, 19, __pyx_L1_error)

  /* "include/Estimate0D.pyx":24
 *         return cutil.new_owned_cls(Estimate0D, self.estptr().newclone())
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */
  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_Estimate0D_pyx, __pyx_n_s_setVal, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(13, 24, __pyx_L1_error)

  /* "include/Estimate0D.pyx":28
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */
  __pyx_codeobj__256 = (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__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_setErr, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(13, 28, __pyx_L1_error)

  /* "include/Estimate0D.pyx":47
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */
  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_set, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(13, 47, __pyx_L1_error)

  /* "include/Estimate0D.pyx":52
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_reset, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(13, 52, __pyx_L1_error)

  /* "include/Estimate0D.pyx":60
 *         self.estptr().reset()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */
  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_val, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(13, 60, __pyx_L1_error)

  /* "include/Estimate0D.pyx":63
 *        return self.estptr().val()
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errDownUp, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(13, 63, __pyx_L1_error)

  /* "include/Estimate0D.pyx":66
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */
  __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__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_err, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(13, 66, __pyx_L1_error)

  /* "include/Estimate0D.pyx":69
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */
  __pyx_codeobj__262 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errNegPos, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(13, 69, __pyx_L1_error)

  /* "include/Estimate0D.pyx":72
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */
  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errDown, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(13, 72, __pyx_L1_error)

  /* "include/Estimate0D.pyx":75
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */
  __pyx_codeobj__264 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errUp, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__264)) __PYX_ERR(13, 75, __pyx_L1_error)

  /* "include/Estimate0D.pyx":78
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */
  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errNeg, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(13, 78, __pyx_L1_error)

  /* "include/Estimate0D.pyx":81
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */
  __pyx_codeobj__266 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_errPos, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__266)) __PYX_ERR(13, 81, __pyx_L1_error)

  /* "include/Estimate0D.pyx":84
 *        return self.estptr().errPos(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */
  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relErrDownUp, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(13, 84, __pyx_L1_error)

  /* "include/Estimate0D.pyx":87
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */
  __pyx_codeobj__268 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relErr, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__268)) __PYX_ERR(13, 87, __pyx_L1_error)

  /* "include/Estimate0D.pyx":90
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */
  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relErrDown, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(13, 90, __pyx_L1_error)

  /* "include/Estimate0D.pyx":93
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */
  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relErrUp, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(13, 93, __pyx_L1_error)

  /* "include/Estimate0D.pyx":96
 *        return self.estptr().relErrUp(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */
  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_quadSum, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(13, 96, __pyx_L1_error)

  /* "include/Estimate0D.pyx":99
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */
  __pyx_codeobj__272 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_quadSumNeg, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(13, 99, __pyx_L1_error)

  /* "include/Estimate0D.pyx":102
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */
  __pyx_codeobj__273 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_quadSumPos, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(13, 102, __pyx_L1_error)

  /* "include/Estimate0D.pyx":105
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */
  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_totalErr, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(13, 105, __pyx_L1_error)

  /* "include/Estimate0D.pyx":108
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */
  __pyx_codeobj__275 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relTotalErr, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(13, 108, __pyx_L1_error)

  /* "include/Estimate0D.pyx":111
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */
  __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relTotalErrNeg, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(13, 111, __pyx_L1_error)

  /* "include/Estimate0D.pyx":114
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */
  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_relTotalErrPos, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(13, 114, __pyx_L1_error)

  /* "include/Estimate0D.pyx":117
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */
  __pyx_codeobj__278 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_hasSource, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__278)) __PYX_ERR(13, 117, __pyx_L1_error)

  /* "include/Estimate0D.pyx":130
 *         return self
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */
  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_sources, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(13, 130, __pyx_L1_error)

  /* "include/Estimate0D.pyx":133
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */
  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_numErrs, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(13, 133, __pyx_L1_error)

  /* "include/Estimate0D.pyx":136
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */
  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_rmSource, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(13, 136, __pyx_L1_error)

  /* "include/Estimate0D.pyx":139
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */
  __pyx_codeobj__282 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_rmErrs, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__282)) __PYX_ERR(13, 139, __pyx_L1_error)

  /* "include/Estimate0D.pyx":142
 *       return self.estptr().rmErrs()
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_lengthContent, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(13, 142, __pyx_L1_error)

  /* "include/Estimate0D.pyx":146
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         self.estptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__284 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_serializeContent, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(13, 146, __pyx_L1_error)

  /* "include/Estimate0D.pyx":150
 *         self.estptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_deserializeContent, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(13, 150, __pyx_L1_error)

  /* "include/Estimate0D.pyx":156
 *         self.estptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_lengthMeta, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(13, 156, __pyx_L1_error)

  /* "include/Estimate0D.pyx":160
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_serializeMeta, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(13, 160, __pyx_L1_error)

  /* "include/Estimate0D.pyx":164
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__288 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Estimate0D_pyx, __pyx_n_s_deserializeMeta, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(13, 164, __pyx_L1_error)

  /* "include/Estimate0D.pyx":170
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         self.estptr().scale(factor)
 * 
 */
  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_Estimate0D_pyx, __pyx_n_s_scale, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(13, 170, __pyx_L1_error)

  /* "include/Estimate0D.pyx":173
 *         self.estptr().scale(factor)
 * 
 *     def mkScatter(self, path = "", pat_match = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 * 
 */
  __pyx_tuple__290 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_pat_match, __pyx_n_s_s); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(13, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__290);
  __Pyx_GIVEREF(__pyx_tuple__290);
  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 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_Estimate0D_pyx, __pyx_n_s_mkScatter, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(13, 173, __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__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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(1, 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__293 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2, efficiency = False):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_tuple__294 = PyTuple_Pack(3, __pyx_n_s_ao1, __pyx_n_s_ao2, __pyx_n_s_efficiency); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__294);
  __Pyx_GIVEREF(__pyx_tuple__294);
  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_Functions_pyx, __pyx_n_s_divide, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(2, 26, __pyx_L1_error)

  /* "include/Functions.pyx":36
 * 
 * 
 * def efficiency(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_tuple__296 = PyTuple_Pack(2, __pyx_n_s_ao1, __pyx_n_s_ao2); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(2, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__296);
  __Pyx_GIVEREF(__pyx_tuple__296);
  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__296, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_efficiency, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(2, 36, __pyx_L1_error)

  /* "include/Functions.pyx":46
 * 
 * 
 * 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__298 = PyTuple_Pack(3, __pyx_n_s_nbins, __pyx_n_s_xmin, __pyx_n_s_xmax); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__298);
  __Pyx_GIVEREF(__pyx_tuple__298);
  __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_linspace, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(2, 46, __pyx_L1_error)

  /* "include/Functions.pyx":53
 * 
 * 
 * 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__300 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_logspace, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__300)) __PYX_ERR(2, 53, __pyx_L1_error)

  /* "include/Functions.pyx":60
 * 
 * 
 * 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__301 = 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__301)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__301);
  __Pyx_GIVEREF(__pyx_tuple__301);
  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 14, 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_Functions_pyx, __pyx_n_s_pdfspace, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(2, 60, __pyx_L1_error)
  __pyx_tuple__303 = PyTuple_Pack(1, ((PyObject *)__pyx_int_10000)); if (unlikely(!__pyx_tuple__303)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__303);
  __Pyx_GIVEREF(__pyx_tuple__303);

  /* "include/Functions.pyx":90
 * 
 * 
 * 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__304 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_binedges); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(2, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__304);
  __Pyx_GIVEREF(__pyx_tuple__304);
  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__304, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_index_between, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(2, 90, __pyx_L1_error)

  /* "include/Functions.pyx":97
 * 
 * 
 * def effNumEntries(weights):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the effective number of entries given a list of weights."""
 */
  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_n_s_weights); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(2, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__306);
  __Pyx_GIVEREF(__pyx_tuple__306);
  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__306, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_effNumEntries, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(2, 97, __pyx_L1_error)

  /* "include/Functions.pyx":103
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */
  __pyx_tuple__308 = PyTuple_Pack(1, __pyx_n_s_sample); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(2, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__308);
  __Pyx_GIVEREF(__pyx_tuple__308);
  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__308, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_mean, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(2, 103, __pyx_L1_error)

  /* "include/Functions.pyx":109
 * 
 * 
 * def mean(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted mean of the entries in the provided sample list."""
 */
  __pyx_tuple__310 = PyTuple_Pack(2, __pyx_n_s_sample, __pyx_n_s_weights); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(2, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__310);
  __Pyx_GIVEREF(__pyx_tuple__310);
  __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_mean, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(2, 109, __pyx_L1_error)

  /* "include/Functions.pyx":115
 * 
 * 
 * def variance(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted variance of the entries in the provided sample list."""
 */
  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_variance, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(2, 115, __pyx_L1_error)

  /* "include/Functions.pyx":121
 * 
 * 
 * def stdDev(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard deviation of the entries in the provided sample list."""
 */
  __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_stdDev, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(2, 121, __pyx_L1_error)

  /* "include/Functions.pyx":127
 * 
 * 
 * def stdErr(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard error of the entries in the provided sample list."""
 */
  __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__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_stdErr, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(2, 127, __pyx_L1_error)

  /* "include/Functions.pyx":133
 * 
 * 
 * def RMS(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted RMS of the entries in the provided sample list."""
 */
  __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_RMS, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(2, 133, __pyx_L1_error)

  /* "include/Functions.pyx":139
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */
  __pyx_tuple__316 = PyTuple_Pack(2, __pyx_n_s_sample1, __pyx_n_s_sample2); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__316);
  __Pyx_GIVEREF(__pyx_tuple__316);
  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__316, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_covariance, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(2, 139, __pyx_L1_error)

  /* "include/Functions.pyx":145
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */
  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__316, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_correlation, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(2, 145, __pyx_L1_error)

  /* "include/Functions.pyx":150
 *     return c.correlation(sample1, sample2)
 * 
 * def naiveChi2(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted chi2 statistic of the two provided sample lists.
 */
  __pyx_tuple__319 = PyTuple_Pack(4, __pyx_n_s_sample1, __pyx_n_s_sample2, __pyx_n_s_errors1, __pyx_n_s_errors2); if (unlikely(!__pyx_tuple__319)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__319);
  __Pyx_GIVEREF(__pyx_tuple__319);
  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_naiveChi2, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(2, 150, __pyx_L1_error)

  /* "include/Functions.pyx":160
 *    return c.naiveChi2(sample1, sample2, errors1, errors2)
 * 
 * def naiveChi2reduced(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted reduced chi2 statistic of the two provided sample lists.
 */
  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_naiveChi2reduced, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(2, 160, __pyx_L1_error)

  /* "include/IO.pyx":17
 * 
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):             # <<<<<<<<<<<<<<
 *     if not patterns:
 *         patterns = [ ]
 */
  __pyx_tuple__322 = PyTuple_Pack(1, __pyx_n_s_patterns); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(3, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__322);
  __Pyx_GIVEREF(__pyx_tuple__322);
  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_prep_patterns, 17, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(3, 17, __pyx_L1_error)

  /* "include/IO.pyx":24
 *     return ','.join(patterns)
 * 
 * def _mapTypes(cpptype):             # <<<<<<<<<<<<<<
 *     if 'Binned' not in cpptype:
 *         return cpptype
 */
  __pyx_tuple__324 = PyTuple_Pack(4, __pyx_n_s_cpptype, __pyx_n_s_pos, __pyx_n_s_base, __pyx_n_s_N); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__324);
  __Pyx_GIVEREF(__pyx_tuple__324);
  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_IO_pyx, __pyx_n_s_mapTypes, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(3, 24, __pyx_L1_error)

  /* "include/IO.pyx":95
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */
  __pyx_tuple__326 = PyTuple_Pack(3, __pyx_n_s_file_or_filename, __pyx_n_s_s, __pyx_n_s_f); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__326);
  __Pyx_GIVEREF(__pyx_tuple__326);
  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_bytestr_from_file, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(3, 95, __pyx_L1_error)

  /* "include/IO.pyx":113
 *     return s
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */
  __pyx_tuple__328 = PyTuple_Pack(3, __pyx_n_s_s, __pyx_n_s_file_or_filename, __pyx_n_s_f); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__328);
  __Pyx_GIVEREF(__pyx_tuple__328);
  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_str_to_file, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(3, 113, __pyx_L1_error)

  /* "include/IO.pyx":128
 *             f.write(s)
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */
  __pyx_tuple__330 = PyTuple_Pack(1, __pyx_n_s_x); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(3, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__330);
  __Pyx_GIVEREF(__pyx_tuple__330);
  __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__330, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_istxt, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(3, 128, __pyx_L1_error)

  /* "include/IO.pyx":134
 *         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__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__330, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_mktxtifstr, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(3, 134, __pyx_L1_error)

  /* "include/IO.pyx":145
 * ##
 * 
 * def read(filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */
  __pyx_tuple__333 = 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__333)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__333);
  __Pyx_GIVEREF(__pyx_tuple__333);
  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_read, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(3, 145, __pyx_L1_error)
  __pyx_tuple__335 = PyTuple_Pack(3, ((PyObject *)Py_True), ((PyObject*)__pyx_kp_s__2), ((PyObject*)__pyx_kp_s__2)); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__335);
  __Pyx_GIVEREF(__pyx_tuple__335);

  /* "include/IO.pyx":181
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */
  __pyx_tuple__336 = 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__336)) __PYX_ERR(3, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__336);
  __Pyx_GIVEREF(__pyx_tuple__336);
  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_readYODA, 181, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(3, 181, __pyx_L1_error)

  /* "include/IO.pyx":204
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */
  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_readFLAT, 204, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(3, 204, __pyx_L1_error)

  /* "include/IO.pyx":231
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */
  __pyx_tuple__339 = 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__339)) __PYX_ERR(3, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__339);
  __Pyx_GIVEREF(__pyx_tuple__339);
  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__339, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_write, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(3, 231, __pyx_L1_error)
  __pyx_tuple__341 = PyTuple_Pack(1, ((PyObject *)__pyx_int_neg_1)); if (unlikely(!__pyx_tuple__341)) __PYX_ERR(3, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__341);
  __Pyx_GIVEREF(__pyx_tuple__341);

  /* "include/IO.pyx":247
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */
  __pyx_tuple__342 = 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__342)) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__342);
  __Pyx_GIVEREF(__pyx_tuple__342);
  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeYODA, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(3, 247, __pyx_L1_error)

  /* "include/IO.pyx":269
 * 
 * 
 * def writeYODA1(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA1 format.
 */
  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeYODA1, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(3, 269, __pyx_L1_error)

  /* "include/IO.pyx":291
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */
  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeFLAT, 291, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(3, 291, __pyx_L1_error)

  /* "include/Point.pyx":24
 * 
 * 
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 * 
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_dim, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(14, 24, __pyx_L1_error)

  /* "include/Point.pyx":31
 * 
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """int -> float
 *         Value on axis i"""
 */
  __pyx_tuple__347 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_i); if (unlikely(!__pyx_tuple__347)) __PYX_ERR(14, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__347);
  __Pyx_GIVEREF(__pyx_tuple__347);
  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_val, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(14, 31, __pyx_L1_error)

  /* "include/Point.pyx":36
 *         return self.pptr().val(i)
 * 
 *     def setVal(self, i, val):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_tuple__349 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_val); if (unlikely(!__pyx_tuple__349)) __PYX_ERR(14, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__349);
  __Pyx_GIVEREF(__pyx_tuple__349);
  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setVal, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(14, 36, __pyx_L1_error)

  /* "include/Point.pyx":50
 *     #    return util.read_error_pair(self.pptr().errs(i))
 * 
 *     def setErr(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_tuple__351 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_e); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(14, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErr, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(14, 50, __pyx_L1_error)

  /* "include/Point.pyx":57
 *         self.pptr().setErr(i, e)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_tuple__353 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_es, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(14, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__353);
  __Pyx_GIVEREF(__pyx_tuple__353);
  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrs, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(14, 57, __pyx_L1_error)

  /* "include/Point.pyx":82
 *     #    return self.pptr().errMinus(i)
 * 
 *     def setErrMinus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrMinus, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(14, 82, __pyx_L1_error)

  /* "include/Point.pyx":97
 *     #    return self.pptr().errPlus(i)
 * 
 *     def setErrPlus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_codeobj__356 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrPlus, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__356)) __PYX_ERR(14, 97, __pyx_L1_error)

  /* "include/Point.pyx":130
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_tuple__357 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_scale); if (unlikely(!__pyx_tuple__357)) __PYX_ERR(14, 130, __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_Point_pyx, __pyx_n_s_scale, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__358)) __PYX_ERR(14, 130, __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__359 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(1, 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__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__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__360)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Axis.pyx":28
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Axis[double]())
 *         self.axisT = 'd'
 */
  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_init1, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(4, 28, __pyx_L1_error)

  /* "include/generated/Axis.pyx":32
 *         self.axisT = 'd'
 * 
 *     def __init2(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] edges_d
 *         cdef vector[int] edges_i
 */
  __pyx_tuple__362 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_edges, __pyx_n_s_edges_d, __pyx_n_s_edges_i, __pyx_n_s_edges_s, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(4, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__362);
  __Pyx_GIVEREF(__pyx_tuple__362);
  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 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_generated_Axis_pyx, __pyx_n_s_init2, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(4, 32, __pyx_L1_error)

  /* "include/generated/Axis.pyx":55
 *     #    return cutil.set_owned_ptr(self, new c.Axis(deref(self.aptr())))
 * 
 *     def numBins(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 */
  __pyx_tuple__364 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_includeOverflows); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(4, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__364);
  __Pyx_GIVEREF(__pyx_tuple__364);
  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_numBins, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(4, 55, __pyx_L1_error)

  /* "include/generated/Axis.pyx":64
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def type(self):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 */
  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_type, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(4, 64, __pyx_L1_error)

  /* "include/generated/Axis.pyx":73
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def index(self, edge):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 */
  __pyx_tuple__367 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_edge); if (unlikely(!__pyx_tuple__367)) __PYX_ERR(4, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__367);
  __Pyx_GIVEREF(__pyx_tuple__367);
  __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__367, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_index, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(4, 73, __pyx_L1_error)

  /* "include/generated/Axis.pyx":82
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def width(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)
 */
  __pyx_tuple__369 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_index); if (unlikely(!__pyx_tuple__369)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__369);
  __Pyx_GIVEREF(__pyx_tuple__369);
  __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_width, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(4, 82, __pyx_L1_error)

  /* "include/generated/Axis.pyx":87
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def max(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)
 */
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_max, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(4, 87, __pyx_L1_error)

  /* "include/generated/Axis.pyx":92
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def min(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)
 */
  __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_min, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(4, 92, __pyx_L1_error)

  /* "include/generated/Axis.pyx":97
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def mid(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)
 */
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_mid, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(4, 97, __pyx_L1_error)

  /* "include/generated/Axis.pyx":102
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def edge(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 */
  __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__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Axis_pyx, __pyx_n_s_edge, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__374)) __PYX_ERR(4, 102, __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__375 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(1, 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__376 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__376)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double]())
 *         #self._set_config()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_init1, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(6, 48, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_tuple__378 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_edgesA1, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges_d, __pyx_n_s_edges_i, __pyx_n_s_edges_s, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__378)) __PYX_ERR(6, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__378);
  __Pyx_GIVEREF(__pyx_tuple__378);
  __pyx_codeobj__379 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_init2, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__379)) __PYX_ERR(6, 52, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_tuple__380 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_nbinsX, __pyx_n_s_lowerX, __pyx_n_s_upperX, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__380)) __PYX_ERR(6, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__380);
  __Pyx_GIVEREF(__pyx_tuple__380);
  __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__380, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_init3, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(6, 72, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_tuple__382 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__382)) __PYX_ERR(6, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__382);
  __Pyx_GIVEREF(__pyx_tuple__382);
  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_init4, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(6, 78, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__384 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_set_config, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__384)) __PYX_ERR(6, 93, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate1D.
 *         Clone this BinnedEstimate1D."""
 */
  __pyx_tuple__385 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_rtn); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(6, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__385);
  __Pyx_GIVEREF(__pyx_tuple__385);
  __pyx_codeobj__386 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedEstimate, __pyx_n_s_clone, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__386)) __PYX_ERR(6, 130, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_tuple__387 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_indices_2, __pyx_n_s_localIndices, __pyx_n_s_i); if (unlikely(!__pyx_tuple__387)) __PYX_ERR(6, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__387);
  __Pyx_GIVEREF(__pyx_tuple__387);
  __pyx_codeobj__388 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_localToGlobalIndex, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__388)) __PYX_ERR(6, 147, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_tuple__389 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_idx, __pyx_n_s_cont); if (unlikely(!__pyx_tuple__389)) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__389);
  __Pyx_GIVEREF(__pyx_tuple__389);
  __pyx_codeobj__390 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_global_set, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__390)) __PYX_ERR(6, 161, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_tuple__391 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_indices_2, __pyx_n_s_cont); if (unlikely(!__pyx_tuple__391)) __PYX_ERR(6, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__391);
  __Pyx_GIVEREF(__pyx_tuple__391);
  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_local_set, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(6, 174, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_tuple__393 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__393)) __PYX_ERR(6, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__393);
  __Pyx_GIVEREF(__pyx_tuple__393);
  __pyx_codeobj__394 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_set, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__394)) __PYX_ERR(6, 186, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_reset, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(6, 194, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_tuple__396 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins); if (unlikely(!__pyx_tuple__396)) __PYX_ERR(6, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__396);
  __Pyx_GIVEREF(__pyx_tuple__396);
  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_numBins, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(6, 206, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_isMasked, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(6, 218, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_isVisible, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(6, 229, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_binDim, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(6, 240, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_tuple__401 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins, __pyx_n_s_i); if (unlikely(!__pyx_tuple__401)) __PYX_ERR(6, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__401);
  __Pyx_GIVEREF(__pyx_tuple__401);
  __pyx_codeobj__402 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_bins, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__402)) __PYX_ERR(6, 254, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_tuple__403 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_rtn, __pyx_n_s_st, __pyx_n_s_b); if (unlikely(!__pyx_tuple__403)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__403);
  __Pyx_GIVEREF(__pyx_tuple__403);
  __pyx_codeobj__404 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_bin_2, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__404)) __PYX_ERR(6, 260, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_tuple__405 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_indices_2, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__405)) __PYX_ERR(6, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__405);
  __Pyx_GIVEREF(__pyx_tuple__405);
  __pyx_codeobj__406 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_bin, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__406)) __PYX_ERR(6, 277, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __pyx_tuple__407 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_x); if (unlikely(!__pyx_tuple__407)) __PYX_ERR(6, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__407);
  __Pyx_GIVEREF(__pyx_tuple__407);
  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_binAt, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(6, 283, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_tuple__409 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_idx, __pyx_n_s_status); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(6, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__409);
  __Pyx_GIVEREF(__pyx_tuple__409);
  __pyx_codeobj__410 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_maskBin, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__410)) __PYX_ERR(6, 287, __pyx_L1_error)
  __pyx_tuple__411 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__411)) __PYX_ERR(6, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__411);
  __Pyx_GIVEREF(__pyx_tuple__411);

  /* "include/generated/BinnedEstimate1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_tuple__412 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_index_list, __pyx_n_s_status, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__412)) __PYX_ERR(6, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__412);
  __Pyx_GIVEREF(__pyx_tuple__412);
  __pyx_codeobj__413 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_maskBins, 298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__413)) __PYX_ERR(6, 298, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_tuple__414 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_status); if (unlikely(!__pyx_tuple__414)) __PYX_ERR(6, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__414);
  __Pyx_GIVEREF(__pyx_tuple__414);
  __pyx_codeobj__415 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__414, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_maskBinAt, 304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__415)) __PYX_ERR(6, 304, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_tuple__416 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_dim, __pyx_n_s_idx, __pyx_n_s_status); if (unlikely(!__pyx_tuple__416)) __PYX_ERR(6, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__416);
  __Pyx_GIVEREF(__pyx_tuple__416);
  __pyx_codeobj__417 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_maskSlice, 308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__417)) __PYX_ERR(6, 308, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":322
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_tuple__418 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_pat_match, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins, __pyx_n_s_s); if (unlikely(!__pyx_tuple__418)) __PYX_ERR(6, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__418);
  __Pyx_GIVEREF(__pyx_tuple__418);
  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__418, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_mkScatter, 322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(6, 322, __pyx_L1_error)
  __pyx_tuple__420 = PyTuple_Pack(4, __pyx_kp_s__2, __pyx_kp_s__2, Py_False, Py_False); if (unlikely(!__pyx_tuple__420)) __PYX_ERR(6, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__420);
  __Pyx_GIVEREF(__pyx_tuple__420);

  /* "include/generated/BinnedEstimate1D.pyx":336
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate1D self, BinnedEstimate1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate1D -> BinnedEstimate1D
 * 
 */
  __pyx_tuple__421 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_efficiency, __pyx_n_s_rtn, __pyx_n_s_tmp); if (unlikely(!__pyx_tuple__421)) __PYX_ERR(6, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__421);
  __Pyx_GIVEREF(__pyx_tuple__421);
  __pyx_codeobj__422 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_divideBy, 336, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(6, 336, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":373
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_tuple__423 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs, __pyx_n_s_numpy); if (unlikely(!__pyx_tuple__423)) __PYX_ERR(6, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__423);
  __Pyx_GIVEREF(__pyx_tuple__423);
  __pyx_codeobj__424 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_mknp, 373, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__424)) __PYX_ERR(6, 373, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":381
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_lengthContent, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(6, 381, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":391
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__426 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_serializeContent, 391, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__426)) __PYX_ERR(6, 391, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":401
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__427 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_deserializeContent, 401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__427)) __PYX_ERR(6, 401, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":413
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__428 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_lengthMeta, 413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__428)) __PYX_ERR(6, 413, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":423
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__429 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_serializeMeta, 423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(6, 423, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":433
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__430 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_deserializeMeta, 433, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__430)) __PYX_ERR(6, 433, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":446
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_tuple__431 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_b); if (unlikely(!__pyx_tuple__431)) __PYX_ERR(6, 446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__431);
  __Pyx_GIVEREF(__pyx_tuple__431);
  __pyx_codeobj__432 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__431, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_vals, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__432)) __PYX_ERR(6, 446, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":449
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_tuple__433 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_includeBinVol, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins); if (unlikely(!__pyx_tuple__433)) __PYX_ERR(6, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__433);
  __Pyx_GIVEREF(__pyx_tuple__433);
  __pyx_codeobj__434 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_auc, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__434)) __PYX_ERR(6, 449, __pyx_L1_error)
  __pyx_tuple__435 = PyTuple_Pack(3, Py_True, Py_False, Py_False); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(6, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__435);
  __Pyx_GIVEREF(__pyx_tuple__435);

  /* "include/generated/BinnedEstimate1D.pyx":453
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 */
  __pyx_codeobj__436 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedEstimate, __pyx_n_s_scale, 453, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__436)) __PYX_ERR(6, 453, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":462
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __pyx_codeobj__437 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_indexAt, 462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__437)) __PYX_ERR(6, 462, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":471
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_maskedBins, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__438)) __PYX_ERR(6, 471, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":480
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_sources, 480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__439)) __PYX_ERR(6, 480, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":489
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_codeobj__440 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_areaUnderCurve, 489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__440)) __PYX_ERR(6, 489, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":498
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_tuple__441 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_ignoreOffDiagonalTerms, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins, __pyx_n_s_pat_uncorr); if (unlikely(!__pyx_tuple__441)) __PYX_ERR(6, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__441);
  __Pyx_GIVEREF(__pyx_tuple__441);
  __pyx_codeobj__442 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__441, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_covarianceMatrix, 498, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(6, 498, __pyx_L1_error)
  __pyx_tuple__443 = PyTuple_Pack(4, Py_False, Py_False, Py_False, __pyx_kp_s_stat_uncor); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(6, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__443);
  __Pyx_GIVEREF(__pyx_tuple__443);

  /* "include/generated/BinnedEstimate1D.pyx":507
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_numBinsX, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(6, 507, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":518
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__445 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_xEdges, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__445)) __PYX_ERR(6, 518, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":529
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_xWidths, 529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(6, 529, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":536
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_xMin, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(6, 536, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":543
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_xMax, 543, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(6, 543, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":550
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __pyx_tuple__449 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n, __pyx_n_s_begin, __pyx_n_s_end); if (unlikely(!__pyx_tuple__449)) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__449);
  __Pyx_GIVEREF(__pyx_tuple__449);
  __pyx_codeobj__450 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_rebinXBy, 550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__450)) __PYX_ERR(6, 550, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":557
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_tuple__451 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__451)) __PYX_ERR(6, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__451);
  __Pyx_GIVEREF(__pyx_tuple__451);
  __pyx_codeobj__452 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_rebinXTo, 557, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__452)) __PYX_ERR(6, 557, __pyx_L1_error)

  /* "include/generated/BinnedEstimate1D.pyx":564
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_tuple__453 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_arg, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__453)) __PYX_ERR(6, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__453);
  __Pyx_GIVEREF(__pyx_tuple__453);
  __pyx_codeobj__454 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate, __pyx_n_s_rebinX, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__454)) __PYX_ERR(6, 564, __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__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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__455)) __PYX_ERR(1, 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__456 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__456)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double]())
 *         #self._set_config()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_init1, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__457)) __PYX_ERR(17, 72, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_tuple__458 = PyTuple_Pack(27, __pyx_n_s_self, __pyx_n_s_edgesA1, __pyx_n_s_edgesA2, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges_d, __pyx_n_s_edges_i, __pyx_n_s_edges_s, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__458)) __PYX_ERR(17, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__458);
  __Pyx_GIVEREF(__pyx_tuple__458);
  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 27, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_init2, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(17, 76, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_tuple__460 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_nbinsX, __pyx_n_s_lowerX, __pyx_n_s_upperX, __pyx_n_s_nbinsY, __pyx_n_s_lowerY, __pyx_n_s_upperY, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__460)) __PYX_ERR(17, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__460);
  __Pyx_GIVEREF(__pyx_tuple__460);
  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_init3, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(17, 130, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __pyx_codeobj__462 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_init4, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__462)) __PYX_ERR(17, 137, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__463 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_set_config, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__463)) __PYX_ERR(17, 164, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate2D.
 *         Clone this BinnedEstimate2D."""
 */
  __pyx_codeobj__464 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedEstimate_2, __pyx_n_s_clone, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__464)) __PYX_ERR(17, 258, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_codeobj__465 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_localToGlobalIndex, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__465)) __PYX_ERR(17, 287, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_codeobj__466 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_global_set, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__466)) __PYX_ERR(17, 313, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_codeobj__467 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_local_set, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__467)) __PYX_ERR(17, 338, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__468 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_set, 362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__468)) __PYX_ERR(17, 362, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_reset, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(17, 370, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_codeobj__470 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_numBins, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__470)) __PYX_ERR(17, 394, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_isMasked, 418, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(17, 418, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__472 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_isVisible, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__472)) __PYX_ERR(17, 441, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_binDim, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(17, 464, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__474 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_bins, 490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__474)) __PYX_ERR(17, 490, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_bin_2, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(17, 496, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__476 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_bin, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__476)) __PYX_ERR(17, 531, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __pyx_tuple__477 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__477)) __PYX_ERR(17, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__477);
  __Pyx_GIVEREF(__pyx_tuple__477);
  __pyx_codeobj__478 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_binAt, 537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__478)) __PYX_ERR(17, 537, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__479 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_maskBin, 541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(17, 541, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__480 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_maskBins, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__480)) __PYX_ERR(17, 564, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __pyx_tuple__481 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_status); if (unlikely(!__pyx_tuple__481)) __PYX_ERR(17, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__481);
  __Pyx_GIVEREF(__pyx_tuple__481);
  __pyx_codeobj__482 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_maskBinAt, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__482)) __PYX_ERR(17, 570, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__483 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_maskSlice, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__483)) __PYX_ERR(17, 574, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":600
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_codeobj__484 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__418, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_mkScatter, 600, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__484)) __PYX_ERR(17, 600, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":632
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate2D self, BinnedEstimate2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate2D -> BinnedEstimate2D
 * 
 */
  __pyx_codeobj__485 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_divideBy, 632, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__485)) __PYX_ERR(17, 632, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":705
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__486 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_mknp, 705, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__486)) __PYX_ERR(17, 705, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":713
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__487 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_lengthContent, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__487)) __PYX_ERR(17, 713, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":735
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_serializeContent, 735, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(17, 735, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":757
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__489 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_deserializeContent, 757, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__489)) __PYX_ERR(17, 757, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":781
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_lengthMeta, 781, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(17, 781, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":803
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__491 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_serializeMeta, 803, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__491)) __PYX_ERR(17, 803, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":825
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__492 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_deserializeMeta, 825, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(17, 825, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":850
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_codeobj__493 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__431, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_vals, 850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__493)) __PYX_ERR(17, 850, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":853
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_auc, 853, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(17, 853, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":857
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 */
  __pyx_codeobj__495 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedEstimate_2, __pyx_n_s_scale, 857, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__495)) __PYX_ERR(17, 857, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":878
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_indexAt, 878, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(17, 878, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":899
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_maskedBins, 899, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__497)) __PYX_ERR(17, 899, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":920
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_sources, 920, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(17, 920, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":941
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_areaUnderCurve, 941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(17, 941, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":962
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_codeobj__500 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__441, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_covarianceMatrix, 962, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__500)) __PYX_ERR(17, 962, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":983
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_numBinsX, 983, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(17, 983, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1006
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_xEdges, 1006, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(17, 1006, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1029
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_xWidths, 1029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(17, 1029, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1040
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_xMin, 1040, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(17, 1040, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1051
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__505 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_xMax, 1051, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__505)) __PYX_ERR(17, 1051, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1062
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinXBy, 1062, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(17, 1062, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1073
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __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__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinXTo, 1073, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(17, 1073, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1084
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinX, 1084, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(17, 1084, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1090
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_numBinsY, 1090, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(17, 1090, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1113
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_yEdges, 1113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(17, 1113, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1136
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_yWidths, 1136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(17, 1136, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1147
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__512 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_yMin, 1147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__512)) __PYX_ERR(17, 1147, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1158
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_yMax, 1158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(17, 1158, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1169
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__514 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinYBy, 1169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__514)) __PYX_ERR(17, 1169, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1180
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __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__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinYTo, 1180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(17, 1180, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":1191
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_codeobj__516 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_2, __pyx_n_s_rebinY, 1191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__516)) __PYX_ERR(17, 1191, __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__517 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__517)) __PYX_ERR(1, 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__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__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__518)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":144
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double]())
 *         #self._set_config()
 */
  __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_init1, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(18, 144, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":148
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_tuple__520 = PyTuple_Pack(91, __pyx_n_s_self, __pyx_n_s_edgesA1, __pyx_n_s_edgesA2, __pyx_n_s_edgesA3, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges_d, __pyx_n_s_edges_i, __pyx_n_s_edges_s, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(18, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__520);
  __Pyx_GIVEREF(__pyx_tuple__520);
  __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 91, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__520, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_init2, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(18, 148, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":320
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_tuple__522 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_nbinsX, __pyx_n_s_lowerX, __pyx_n_s_upperX, __pyx_n_s_nbinsY, __pyx_n_s_lowerY, __pyx_n_s_upperY, __pyx_n_s_nbinsZ, __pyx_n_s_lowerZ, __pyx_n_s_upperZ, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(18, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__522);
  __Pyx_GIVEREF(__pyx_tuple__522);
  __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(12, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_init3, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(18, 320, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":328
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */
  __pyx_codeobj__524 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_init4, 328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__524)) __PYX_ERR(18, 328, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":391
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_set_config, 391, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(18, 391, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":674
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate3D.
 *         Clone this BinnedEstimate3D."""
 */
  __pyx_codeobj__526 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedEstimate_3, __pyx_n_s_clone, 674, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__526)) __PYX_ERR(18, 674, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":739
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */
  __pyx_codeobj__527 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_localToGlobalIndex, 739, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(18, 739, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":801
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_codeobj__528 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_global_set, 801, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__528)) __PYX_ERR(18, 801, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":862
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_local_set, 862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(18, 862, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":922
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__530 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_set, 922, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__530)) __PYX_ERR(18, 922, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":930
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_reset, 930, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(18, 930, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":990
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_codeobj__532 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_numBins, 990, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__532)) __PYX_ERR(18, 990, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1050
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */
  __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__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_isMasked, 1050, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(18, 1050, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1109
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__534 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_isVisible, 1109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__534)) __PYX_ERR(18, 1109, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1168
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__535 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_binDim, 1168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__535)) __PYX_ERR(18, 1168, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1230
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__536 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_bins, 1230, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__536)) __PYX_ERR(18, 1230, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1236
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__537 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_bin_2, 1236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__537)) __PYX_ERR(18, 1236, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1325
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__538 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_bin, 1325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__538)) __PYX_ERR(18, 1325, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1331
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */
  __pyx_tuple__539 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_z); if (unlikely(!__pyx_tuple__539)) __PYX_ERR(18, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__539);
  __Pyx_GIVEREF(__pyx_tuple__539);
  __pyx_codeobj__540 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_binAt, 1331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__540)) __PYX_ERR(18, 1331, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1335
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_maskBin, 1335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(18, 1335, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1394
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__542 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_maskBins, 1394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__542)) __PYX_ERR(18, 1394, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1400
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */
  __pyx_tuple__543 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_z, __pyx_n_s_status); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(18, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__543);
  __Pyx_GIVEREF(__pyx_tuple__543);
  __pyx_codeobj__544 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_maskBinAt, 1400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__544)) __PYX_ERR(18, 1400, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1404
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__545 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_maskSlice, 1404, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__545)) __PYX_ERR(18, 1404, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1466
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */
  __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__418, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_mkScatter, 1466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(18, 1466, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1552
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate3D self, BinnedEstimate3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate3D -> BinnedEstimate3D
 * 
 */
  __pyx_codeobj__547 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_divideBy, 1552, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__547)) __PYX_ERR(18, 1552, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1733
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__548 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_mknp, 1733, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__548)) __PYX_ERR(18, 1733, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1741
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__549 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_lengthContent, 1741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__549)) __PYX_ERR(18, 1741, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1799
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_serializeContent, 1799, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(18, 1799, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1857
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__551 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_deserializeContent, 1857, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__551)) __PYX_ERR(18, 1857, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1917
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_lengthMeta, 1917, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(18, 1917, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":1975
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__553 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_serializeMeta, 1975, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__553)) __PYX_ERR(18, 1975, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2033
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__554 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_deserializeMeta, 2033, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__554)) __PYX_ERR(18, 2033, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2094
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_codeobj__555 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__431, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_vals, 2094, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__555)) __PYX_ERR(18, 2094, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2097
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_codeobj__556 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_auc, 2097, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__556)) __PYX_ERR(18, 2097, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2101
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 */
  __pyx_codeobj__557 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedEstimate_3, __pyx_n_s_scale, 2101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__557)) __PYX_ERR(18, 2101, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2158
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */
  __pyx_codeobj__558 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_indexAt, 2158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__558)) __PYX_ERR(18, 2158, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2215
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */
  __pyx_codeobj__559 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_maskedBins, 2215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__559)) __PYX_ERR(18, 2215, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2272
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 */
  __pyx_codeobj__560 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_sources, 2272, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__560)) __PYX_ERR(18, 2272, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2329
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_codeobj__561 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_areaUnderCurve, 2329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__561)) __PYX_ERR(18, 2329, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2386
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_codeobj__562 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__441, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_covarianceMatrix, 2386, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__562)) __PYX_ERR(18, 2386, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2443
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__563 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_numBinsX, 2443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__563)) __PYX_ERR(18, 2443, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2502
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__564 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_xEdges, 2502, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__564)) __PYX_ERR(18, 2502, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2561
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__565 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_xWidths, 2561, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__565)) __PYX_ERR(18, 2561, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2584
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__566 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_xMin, 2584, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__566)) __PYX_ERR(18, 2584, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2607
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__567 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_xMax, 2607, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__567)) __PYX_ERR(18, 2607, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2630
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__568 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinXBy, 2630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__568)) __PYX_ERR(18, 2630, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2653
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__569 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinXTo, 2653, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__569)) __PYX_ERR(18, 2653, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2676
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__570 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinX, 2676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__570)) __PYX_ERR(18, 2676, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2682
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__571 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_numBinsY, 2682, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__571)) __PYX_ERR(18, 2682, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2741
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_yEdges, 2741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(18, 2741, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2800
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__573 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_yWidths, 2800, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__573)) __PYX_ERR(18, 2800, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2823
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__574 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_yMin, 2823, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__574)) __PYX_ERR(18, 2823, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2846
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__575 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_yMax, 2846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__575)) __PYX_ERR(18, 2846, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2869
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__576 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinYBy, 2869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__576)) __PYX_ERR(18, 2869, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2892
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__577 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinYTo, 2892, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__577)) __PYX_ERR(18, 2892, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2915
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_codeobj__578 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinY, 2915, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__578)) __PYX_ERR(18, 2915, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2921
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__579 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_numBinsZ, 2921, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__579)) __PYX_ERR(18, 2921, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":2980
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__580 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_zEdges, 2980, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__580)) __PYX_ERR(18, 2980, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3039
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__581 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_zWidths, 3039, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__581)) __PYX_ERR(18, 3039, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3062
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__582 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_zMin, 3062, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__582)) __PYX_ERR(18, 3062, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3085
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__583 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_zMax, 3085, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__583)) __PYX_ERR(18, 3085, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3108
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__584 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinZBy, 3108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__584)) __PYX_ERR(18, 3108, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3131
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */
  __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__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinZTo, 3131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__585)) __PYX_ERR(18, 3131, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":3154
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */
  __pyx_codeobj__586 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedEstimate_3, __pyx_n_s_rebinZ, 3154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__586)) __PYX_ERR(18, 3154, __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__587 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__587)) __PYX_ERR(1, 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__588 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__588)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto1D[double]())
 *         #self._set_config()
 */
  __pyx_codeobj__589 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_init1, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__589)) __PYX_ERR(19, 48, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_codeobj__590 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_init2, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__590)) __PYX_ERR(19, 52, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_codeobj__591 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__380, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_init3, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__591)) __PYX_ERR(19, 72, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_codeobj__592 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_init4, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__592)) __PYX_ERR(19, 78, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__593 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_set_config, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__593)) __PYX_ERR(19, 93, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto1D.
 *         Clone this BinnedHisto1D."""
 */
  __pyx_codeobj__594 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedHisto1D, __pyx_n_s_clone, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__594)) __PYX_ERR(19, 130, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_codeobj__595 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_localToGlobalIndex, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__595)) __PYX_ERR(19, 147, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 */
  __pyx_codeobj__596 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_global_set, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__596)) __PYX_ERR(19, 161, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 */
  __pyx_codeobj__597 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_local_set, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__597)) __PYX_ERR(19, 174, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__598 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_set, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__598)) __PYX_ERR(19, 186, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __pyx_codeobj__599 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_reset, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__599)) __PYX_ERR(19, 194, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __pyx_codeobj__600 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_numBins, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__600)) __PYX_ERR(19, 206, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __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__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_isMasked, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__601)) __PYX_ERR(19, 218, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __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__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_isVisible, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__602)) __PYX_ERR(19, 229, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __pyx_codeobj__603 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_binDim, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__603)) __PYX_ERR(19, 240, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__604 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_bins, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__604)) __PYX_ERR(19, 254, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__605 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_bin_2, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__605)) __PYX_ERR(19, 260, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_bin, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(19, 277, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __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__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_binAt, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__607)) __PYX_ERR(19, 283, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maskBin, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(19, 287, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__609 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maskBins, 298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__609)) __PYX_ERR(19, 298, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__414, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maskBinAt, 304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(19, 304, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_codeobj__611 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maskSlice, 308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__611)) __PYX_ERR(19, 308, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_tuple__612 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_source, __pyx_n_s_divbyvol, __pyx_n_s_rtn, __pyx_n_s_tmp); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(19, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__612);
  __Pyx_GIVEREF(__pyx_tuple__612);
  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_mkEstimate, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(19, 321, __pyx_L1_error)
  __pyx_tuple__614 = PyTuple_Pack(3, __pyx_kp_s__2, __pyx_kp_s__2, Py_True); if (unlikely(!__pyx_tuple__614)) __PYX_ERR(19, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__614);
  __Pyx_GIVEREF(__pyx_tuple__614);

  /* "include/generated/BinnedHisto1D.pyx":338
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_tuple__615 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_binwidthdiv, __pyx_n_s_useFocus, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins, __pyx_n_s_s); if (unlikely(!__pyx_tuple__615)) __PYX_ERR(19, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__615);
  __Pyx_GIVEREF(__pyx_tuple__615);
  __pyx_codeobj__616 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_mkScatter, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__616)) __PYX_ERR(19, 338, __pyx_L1_error)
  __pyx_tuple__617 = PyTuple_Pack(5, __pyx_kp_s__2, Py_True, Py_False, Py_False, Py_False); if (unlikely(!__pyx_tuple__617)) __PYX_ERR(19, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__617);
  __Pyx_GIVEREF(__pyx_tuple__617);

  /* "include/generated/BinnedHisto1D.pyx":352
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedHisto1D self, BinnedHisto1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto1D -> BinnedEstimate1D
 * 
 */
  __pyx_codeobj__618 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_divideBy, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__618)) __PYX_ERR(19, 352, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":389
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__619 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_mknp, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__619)) __PYX_ERR(19, 389, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":397
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_lengthContent, 397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(19, 397, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":407
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__621 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_serializeContent, 407, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__621)) __PYX_ERR(19, 407, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":417
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__622 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_deserializeContent, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__622)) __PYX_ERR(19, 417, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":429
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__623 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_lengthMeta, 429, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__623)) __PYX_ERR(19, 429, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":439
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__624 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_serializeMeta, 439, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__624)) __PYX_ERR(19, 439, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":449
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__625 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_deserializeMeta, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__625)) __PYX_ERR(19, 449, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":462
 * 
 * 
 *     def fill(self, x, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_tuple__626 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__626)) __PYX_ERR(19, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__626);
  __Pyx_GIVEREF(__pyx_tuple__626);
  __pyx_codeobj__627 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__626, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_fill, 462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__627)) __PYX_ERR(19, 462, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":477
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __pyx_codeobj__628 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_indexAt, 477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__628)) __PYX_ERR(19, 477, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":486
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */
  __pyx_codeobj__629 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_fillDim, 486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__629)) __PYX_ERR(19, 486, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":495
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */
  __pyx_tuple__630 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_normto, __pyx_n_s_includeOverflows); if (unlikely(!__pyx_tuple__630)) __PYX_ERR(19, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__630);
  __Pyx_GIVEREF(__pyx_tuple__630);
  __pyx_codeobj__631 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_generated_BinnedHisto1D, __pyx_n_s_normalize, 495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__631)) __PYX_ERR(19, 495, __pyx_L1_error)
  __pyx_tuple__632 = PyTuple_Pack(2, __pyx_float_1_0, Py_True); if (unlikely(!__pyx_tuple__632)) __PYX_ERR(19, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__632);
  __Pyx_GIVEREF(__pyx_tuple__632);

  /* "include/generated/BinnedHisto1D.pyx":504
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */
  __pyx_codeobj__633 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedHisto1D, __pyx_n_s_scaleW, 504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__633)) __PYX_ERR(19, 504, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":513
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */
  __pyx_codeobj__634 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_sumW, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__634)) __PYX_ERR(19, 513, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":522
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */
  __pyx_codeobj__635 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_sumW2, 522, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__635)) __PYX_ERR(19, 522, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":531
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_tuple__636 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_dim, __pyx_n_s_includeOverflows); if (unlikely(!__pyx_tuple__636)) __PYX_ERR(19, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__636);
  __Pyx_GIVEREF(__pyx_tuple__636);
  __pyx_codeobj__637 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_sumWA, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__637)) __PYX_ERR(19, 531, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":540
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_codeobj__638 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_sumWA2, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__638)) __PYX_ERR(19, 540, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":549
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */
  __pyx_codeobj__639 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_numEntries, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__639)) __PYX_ERR(19, 549, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":558
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */
  __pyx_codeobj__640 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_effNumEntries, 558, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__640)) __PYX_ERR(19, 558, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":567
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */
  __pyx_codeobj__641 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_integral, 567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__641)) __PYX_ERR(19, 567, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":576
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */
  __pyx_codeobj__642 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_integralError, 576, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__642)) __PYX_ERR(19, 576, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":585
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */
  __pyx_codeobj__643 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_dVol, 585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__643)) __PYX_ERR(19, 585, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":594
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */
  __pyx_codeobj__644 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_density, 594, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__644)) __PYX_ERR(19, 594, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":603
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */
  __pyx_codeobj__645 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_densityError, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__645)) __PYX_ERR(19, 603, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":612
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */
  __pyx_codeobj__646 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_densitySum, 612, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__646)) __PYX_ERR(19, 612, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":621
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */
  __pyx_codeobj__647 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maxDensity, 621, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__647)) __PYX_ERR(19, 621, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":630
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_maskedBins, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__648)) __PYX_ERR(19, 630, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":639
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__649 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_numBinsX, 639, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__649)) __PYX_ERR(19, 639, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":650
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__650 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xEdges, 650, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__650)) __PYX_ERR(19, 650, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":661
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__651 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xWidths, 661, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__651)) __PYX_ERR(19, 661, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":668
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__652 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xMin, 668, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__652)) __PYX_ERR(19, 668, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":675
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__653 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xMax, 675, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__653)) __PYX_ERR(19, 675, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":682
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__654 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_rebinXBy, 682, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__654)) __PYX_ERR(19, 682, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":689
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__655 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_rebinXTo, 689, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__655)) __PYX_ERR(19, 689, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":696
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__656 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xMean, 696, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__656)) __PYX_ERR(19, 696, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":703
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__657 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xVariance, 703, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__657)) __PYX_ERR(19, 703, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":710
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__658 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xStdDev, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__658)) __PYX_ERR(19, 710, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":717
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xStdErr, 717, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__659)) __PYX_ERR(19, 717, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":724
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__660 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_xRMS, 724, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__660)) __PYX_ERR(19, 724, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":731
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__661 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto1D, __pyx_n_s_rebinX, 731, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__661)) __PYX_ERR(19, 731, __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__662 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__662)) __PYX_ERR(1, 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__663 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__663)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double]())
 *         #self._set_config()
 */
  __pyx_codeobj__664 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_init1, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__664)) __PYX_ERR(20, 72, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_codeobj__665 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 27, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_init2, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__665)) __PYX_ERR(20, 76, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_codeobj__666 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_init3, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__666)) __PYX_ERR(20, 130, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __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__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_init4, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__667)) __PYX_ERR(20, 137, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__668 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_set_config, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__668)) __PYX_ERR(20, 164, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto2D.
 *         Clone this BinnedHisto2D."""
 */
  __pyx_codeobj__669 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedHisto2D, __pyx_n_s_clone, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__669)) __PYX_ERR(20, 258, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_codeobj__670 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_localToGlobalIndex, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(20, 287, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */
  __pyx_codeobj__671 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_global_set, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__671)) __PYX_ERR(20, 313, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */
  __pyx_codeobj__672 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_local_set, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__672)) __PYX_ERR(20, 338, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__673 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_set, 362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__673)) __PYX_ERR(20, 362, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __pyx_codeobj__674 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_reset, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__674)) __PYX_ERR(20, 370, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __pyx_codeobj__675 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_numBins, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__675)) __PYX_ERR(20, 394, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__676 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_isMasked, 418, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__676)) __PYX_ERR(20, 418, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__677 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_isVisible, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__677)) __PYX_ERR(20, 441, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__678 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_binDim, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__678)) __PYX_ERR(20, 464, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__679 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_bins, 490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__679)) __PYX_ERR(20, 490, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__680 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_bin_2, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__680)) __PYX_ERR(20, 496, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__681 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_bin, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__681)) __PYX_ERR(20, 531, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __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__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_binAt, 537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__682)) __PYX_ERR(20, 537, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__683 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maskBin, 541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__683)) __PYX_ERR(20, 541, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__684 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maskBins, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__684)) __PYX_ERR(20, 564, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __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__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maskBinAt, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__685)) __PYX_ERR(20, 570, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__686 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maskSlice, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__686)) __PYX_ERR(20, 574, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_codeobj__687 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_mkEstimate, 599, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__687)) __PYX_ERR(20, 599, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":634
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_codeobj__688 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_mkScatter, 634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__688)) __PYX_ERR(20, 634, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":666
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedHisto2D self, BinnedHisto2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto2D -> BinnedEstimate2D
 * 
 */
  __pyx_codeobj__689 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_divideBy, 666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__689)) __PYX_ERR(20, 666, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":739
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__690 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_mknp, 739, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__690)) __PYX_ERR(20, 739, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":747
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__691 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_lengthContent, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__691)) __PYX_ERR(20, 747, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":769
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__692 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_serializeContent, 769, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__692)) __PYX_ERR(20, 769, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":791
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__693 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_deserializeContent, 791, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__693)) __PYX_ERR(20, 791, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":815
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__694 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_lengthMeta, 815, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__694)) __PYX_ERR(20, 815, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":837
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__695 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_serializeMeta, 837, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__695)) __PYX_ERR(20, 837, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":859
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__696 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_deserializeMeta, 859, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__696)) __PYX_ERR(20, 859, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":884
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_tuple__697 = 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__697)) __PYX_ERR(20, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__697);
  __Pyx_GIVEREF(__pyx_tuple__697);
  __pyx_codeobj__698 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_fill, 884, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__698)) __PYX_ERR(20, 884, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":911
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_codeobj__699 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_indexAt, 911, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__699)) __PYX_ERR(20, 911, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":932
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */
  __pyx_codeobj__700 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_fillDim, 932, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__700)) __PYX_ERR(20, 932, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":953
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_codeobj__701 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_generated_BinnedHisto2D, __pyx_n_s_normalize, 953, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__701)) __PYX_ERR(20, 953, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":974
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */
  __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__250, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_scaleW, 974, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__702)) __PYX_ERR(20, 974, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":995
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */
  __pyx_codeobj__703 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_sumW, 995, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__703)) __PYX_ERR(20, 995, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1016
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */
  __pyx_codeobj__704 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_sumW2, 1016, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__704)) __PYX_ERR(20, 1016, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1037
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_codeobj__705 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_sumWA, 1037, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__705)) __PYX_ERR(20, 1037, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1058
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_codeobj__706 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_sumWA2, 1058, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__706)) __PYX_ERR(20, 1058, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1079
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */
  __pyx_codeobj__707 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_numEntries, 1079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__707)) __PYX_ERR(20, 1079, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1100
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_codeobj__708 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_effNumEntries, 1100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__708)) __PYX_ERR(20, 1100, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1121
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */
  __pyx_codeobj__709 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_integral, 1121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__709)) __PYX_ERR(20, 1121, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1142
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */
  __pyx_codeobj__710 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_integralError, 1142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__710)) __PYX_ERR(20, 1142, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1163
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_dVol, 1163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__711)) __PYX_ERR(20, 1163, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1184
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */
  __pyx_codeobj__712 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_density, 1184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__712)) __PYX_ERR(20, 1184, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1205
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_densityError, 1205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__713)) __PYX_ERR(20, 1205, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1226
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */
  __pyx_codeobj__714 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_densitySum, 1226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__714)) __PYX_ERR(20, 1226, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1247
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */
  __pyx_codeobj__715 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maxDensity, 1247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__715)) __PYX_ERR(20, 1247, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1268
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __pyx_codeobj__716 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_maskedBins, 1268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__716)) __PYX_ERR(20, 1268, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1289
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__717 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_numBinsX, 1289, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__717)) __PYX_ERR(20, 1289, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1312
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__718 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xEdges, 1312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__718)) __PYX_ERR(20, 1312, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1335
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xWidths, 1335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__719)) __PYX_ERR(20, 1335, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1346
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xMin, 1346, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__720)) __PYX_ERR(20, 1346, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1357
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xMax, 1357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__721)) __PYX_ERR(20, 1357, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1368
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__722 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinXBy, 1368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__722)) __PYX_ERR(20, 1368, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1379
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__723 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinXTo, 1379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__723)) __PYX_ERR(20, 1379, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1390
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xMean, 1390, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__724)) __PYX_ERR(20, 1390, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1401
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__725 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xVariance, 1401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__725)) __PYX_ERR(20, 1401, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1412
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xStdDev, 1412, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__726)) __PYX_ERR(20, 1412, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1423
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__727 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xStdErr, 1423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__727)) __PYX_ERR(20, 1423, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1434
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__728 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_xRMS, 1434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__728)) __PYX_ERR(20, 1434, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1445
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__729 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinX, 1445, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__729)) __PYX_ERR(20, 1445, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1451
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__730 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_numBinsY, 1451, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__730)) __PYX_ERR(20, 1451, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1474
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yEdges, 1474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__731)) __PYX_ERR(20, 1474, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1497
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yWidths, 1497, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__732)) __PYX_ERR(20, 1497, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1508
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__733 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yMin, 1508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__733)) __PYX_ERR(20, 1508, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1519
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__734 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yMax, 1519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__734)) __PYX_ERR(20, 1519, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1530
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__735 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinYBy, 1530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__735)) __PYX_ERR(20, 1530, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1541
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __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__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinYTo, 1541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__736)) __PYX_ERR(20, 1541, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1552
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__737 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yMean, 1552, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__737)) __PYX_ERR(20, 1552, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1563
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__738 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yVariance, 1563, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__738)) __PYX_ERR(20, 1563, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1574
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yStdDev, 1574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__739)) __PYX_ERR(20, 1574, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1585
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__740 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yStdErr, 1585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__740)) __PYX_ERR(20, 1585, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1596
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_yRMS, 1596, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__741)) __PYX_ERR(20, 1596, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1607
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_codeobj__742 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto2D, __pyx_n_s_rebinY, 1607, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__742)) __PYX_ERR(20, 1607, __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__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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__743)) __PYX_ERR(1, 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__744 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__744)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":40
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double]())
 *         #self._set_config()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_init1, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__745)) __PYX_ERR(21, 40, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":44
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_tuple__746 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_edgesA1, __pyx_n_s_edgesA2, __pyx_n_s_edgesA3, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges_d, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__746)) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__746);
  __Pyx_GIVEREF(__pyx_tuple__746);
  __pyx_codeobj__747 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__746, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_init2, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__747)) __PYX_ERR(21, 44, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":58
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_codeobj__748 = (PyObject*)__Pyx_PyCode_New(12, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_init3, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__748)) __PYX_ERR(21, 58, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":66
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */
  __pyx_codeobj__749 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_init4, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__749)) __PYX_ERR(21, 66, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":77
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__750 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_set_config, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__750)) __PYX_ERR(21, 77, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":100
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto3D.
 *         Clone this BinnedHisto3D."""
 */
  __pyx_codeobj__751 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedHisto3D, __pyx_n_s_clone, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__751)) __PYX_ERR(21, 100, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":113
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */
  __pyx_codeobj__752 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_localToGlobalIndex, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__752)) __PYX_ERR(21, 113, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":123
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */
  __pyx_codeobj__753 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_global_set, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__753)) __PYX_ERR(21, 123, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":132
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */
  __pyx_codeobj__754 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_local_set, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__754)) __PYX_ERR(21, 132, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":140
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__755 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_set, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__755)) __PYX_ERR(21, 140, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":148
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */
  __pyx_codeobj__756 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_reset, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__756)) __PYX_ERR(21, 148, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":156
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __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__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_numBins, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__757)) __PYX_ERR(21, 156, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":164
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__758 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_isMasked, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__758)) __PYX_ERR(21, 164, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":171
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__759 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_isVisible, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__759)) __PYX_ERR(21, 171, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":178
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_binDim, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__760)) __PYX_ERR(21, 178, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":188
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__761 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_bins, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__761)) __PYX_ERR(21, 188, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":194
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__762 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_bin_2, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__762)) __PYX_ERR(21, 194, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":205
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__763 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_bin, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__763)) __PYX_ERR(21, 205, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":211
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */
  __pyx_codeobj__764 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_binAt, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__764)) __PYX_ERR(21, 211, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":215
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__765 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maskBin, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__765)) __PYX_ERR(21, 215, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":222
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__766 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maskBins, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__766)) __PYX_ERR(21, 222, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":228
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */
  __pyx_codeobj__767 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maskBinAt, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__767)) __PYX_ERR(21, 228, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":232
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */
  __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__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maskSlice, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__768)) __PYX_ERR(21, 232, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":241
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_codeobj__769 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_mkEstimate, 241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__769)) __PYX_ERR(21, 241, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":252
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */
  __pyx_codeobj__770 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_mkScatter, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__770)) __PYX_ERR(21, 252, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":260
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedHisto3D self, BinnedHisto3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto3D -> BinnedEstimate3D
 * 
 */
  __pyx_codeobj__771 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_divideBy, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__771)) __PYX_ERR(21, 260, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":285
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__772 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_mknp, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__772)) __PYX_ERR(21, 285, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":293
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__773 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_lengthContent, 293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__773)) __PYX_ERR(21, 293, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":299
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__774 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_serializeContent, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__774)) __PYX_ERR(21, 299, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":305
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__775 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_deserializeContent, 305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__775)) __PYX_ERR(21, 305, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":313
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__776 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_lengthMeta, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__776)) __PYX_ERR(21, 313, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":319
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__777 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_serializeMeta, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__777)) __PYX_ERR(21, 319, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":325
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__778 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_deserializeMeta, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__778)) __PYX_ERR(21, 325, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":334
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_tuple__779 = 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__779)) __PYX_ERR(21, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__779);
  __Pyx_GIVEREF(__pyx_tuple__779);
  __pyx_codeobj__780 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__779, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_fill, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__780)) __PYX_ERR(21, 334, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":345
 * 
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */
  __pyx_codeobj__781 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_indexAt, 345, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__781)) __PYX_ERR(21, 345, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":350
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()
 */
  __pyx_codeobj__782 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_fillDim, 350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__782)) __PYX_ERR(21, 350, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":355
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_codeobj__783 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_generated_BinnedHisto3D, __pyx_n_s_normalize, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__783)) __PYX_ERR(21, 355, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":360
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)
 */
  __pyx_codeobj__784 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedHisto3D, __pyx_n_s_scaleW, 360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__784)) __PYX_ERR(21, 360, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":365
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 */
  __pyx_codeobj__785 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_sumW, 365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__785)) __PYX_ERR(21, 365, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":370
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 */
  __pyx_codeobj__786 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_sumW2, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__786)) __PYX_ERR(21, 370, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":375
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_codeobj__787 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_sumWA, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__787)) __PYX_ERR(21, 375, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":380
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_codeobj__788 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_sumWA2, 380, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__788)) __PYX_ERR(21, 380, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":385
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 */
  __pyx_codeobj__789 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_numEntries, 385, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__789)) __PYX_ERR(21, 385, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":390
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_codeobj__790 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_effNumEntries, 390, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__790)) __PYX_ERR(21, 390, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":395
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_integral, 395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__791)) __PYX_ERR(21, 395, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":400
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 */
  __pyx_codeobj__792 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_integralError, 400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__792)) __PYX_ERR(21, 400, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":405
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_dVol, 405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__793)) __PYX_ERR(21, 405, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":410
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)
 */
  __pyx_codeobj__794 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_density, 410, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__794)) __PYX_ERR(21, 410, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":415
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 */
  __pyx_codeobj__795 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_densityError, 415, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__795)) __PYX_ERR(21, 415, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":420
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 */
  __pyx_codeobj__796 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_densitySum, 420, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__796)) __PYX_ERR(21, 420, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":425
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 */
  __pyx_codeobj__797 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maxDensity, 425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__797)) __PYX_ERR(21, 425, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":430
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */
  __pyx_codeobj__798 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_maskedBins, 430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__798)) __PYX_ERR(21, 430, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":435
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__799 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_numBinsX, 435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__799)) __PYX_ERR(21, 435, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":442
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__800 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xEdges, 442, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__800)) __PYX_ERR(21, 442, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":449
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__801 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xWidths, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__801)) __PYX_ERR(21, 449, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":456
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xMin, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__802)) __PYX_ERR(21, 456, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":463
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xMax, 463, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__803)) __PYX_ERR(21, 463, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":470
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__804 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinXBy, 470, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__804)) __PYX_ERR(21, 470, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":477
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__805 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinXTo, 477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__805)) __PYX_ERR(21, 477, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":484
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__806 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xMean, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__806)) __PYX_ERR(21, 484, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":491
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__807 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xVariance, 491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__807)) __PYX_ERR(21, 491, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":498
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__808 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xStdDev, 498, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__808)) __PYX_ERR(21, 498, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":505
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__809 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xStdErr, 505, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__809)) __PYX_ERR(21, 505, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":512
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__810 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_xRMS, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__810)) __PYX_ERR(21, 512, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":519
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__811 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinX, 519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__811)) __PYX_ERR(21, 519, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":525
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__812 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_numBinsY, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__812)) __PYX_ERR(21, 525, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":532
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__813 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yEdges, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__813)) __PYX_ERR(21, 532, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":539
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__814 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yWidths, 539, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__814)) __PYX_ERR(21, 539, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":546
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yMin, 546, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__815)) __PYX_ERR(21, 546, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":553
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yMax, 553, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__816)) __PYX_ERR(21, 553, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":560
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__817 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinYBy, 560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__817)) __PYX_ERR(21, 560, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":567
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__818 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinYTo, 567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__818)) __PYX_ERR(21, 567, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":574
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__819 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yMean, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__819)) __PYX_ERR(21, 574, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":581
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__820 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yVariance, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__820)) __PYX_ERR(21, 581, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":588
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__821 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yStdDev, 588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__821)) __PYX_ERR(21, 588, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":595
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__822 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yStdErr, 595, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__822)) __PYX_ERR(21, 595, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":602
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__823 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_yRMS, 602, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__823)) __PYX_ERR(21, 602, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":609
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_codeobj__824 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinY, 609, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__824)) __PYX_ERR(21, 609, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":615
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__825 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_numBinsZ, 615, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__825)) __PYX_ERR(21, 615, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":622
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__826 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zEdges, 622, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__826)) __PYX_ERR(21, 622, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":629
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__827 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zWidths, 629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__827)) __PYX_ERR(21, 629, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":636
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__828 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zMin, 636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__828)) __PYX_ERR(21, 636, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":643
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__829 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zMax, 643, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__829)) __PYX_ERR(21, 643, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":650
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__830 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinZBy, 650, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__830)) __PYX_ERR(21, 650, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":657
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */
  __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__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinZTo, 657, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__831)) __PYX_ERR(21, 657, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":664
 * 
 * 
 *     def zMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zMean on z axis."""
 *         if self._config == "ddd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zMean, 664, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__832)) __PYX_ERR(21, 664, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":671
 * 
 * 
 *     def zVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zVariance on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__833 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zVariance, 671, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__833)) __PYX_ERR(21, 671, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":678
 * 
 * 
 *     def zStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_codeobj__834 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zStdDev, 678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__834)) __PYX_ERR(21, 678, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":685
 * 
 * 
 *     def zStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zStdErr, 685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__835)) __PYX_ERR(21, 685, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":692
 * 
 * 
 *     def zRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zRMS on z axis."""
 *         if self._config == "ddd":
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_zRMS, 692, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__836)) __PYX_ERR(21, 692, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":699
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */
  __pyx_codeobj__837 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedHisto3D, __pyx_n_s_rebinZ, 699, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__837)) __PYX_ERR(21, 699, __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__838 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__838)) __PYX_ERR(1, 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__839 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__839)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile1D[double]())
 *         #self._set_config()
 */
  __pyx_codeobj__840 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_init1, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__840)) __PYX_ERR(22, 48, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_codeobj__841 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_init2, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__841)) __PYX_ERR(22, 52, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_codeobj__842 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__380, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_init3, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__842)) __PYX_ERR(22, 72, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_codeobj__843 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_init4, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__843)) __PYX_ERR(22, 78, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__844 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_set_config, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__844)) __PYX_ERR(22, 93, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile1D.
 *         Clone this BinnedProfile1D."""
 */
  __pyx_codeobj__845 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedProfile1, __pyx_n_s_clone, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__845)) __PYX_ERR(22, 130, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_codeobj__846 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_localToGlobalIndex, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__846)) __PYX_ERR(22, 147, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */
  __pyx_codeobj__847 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_global_set, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__847)) __PYX_ERR(22, 161, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */
  __pyx_codeobj__848 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_local_set, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__848)) __PYX_ERR(22, 174, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__849 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_set, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__849)) __PYX_ERR(22, 186, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __pyx_codeobj__850 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_reset, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__850)) __PYX_ERR(22, 194, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */
  __pyx_codeobj__851 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_numBins, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__851)) __PYX_ERR(22, 206, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __pyx_codeobj__852 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_isMasked, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__852)) __PYX_ERR(22, 218, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __pyx_codeobj__853 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_isVisible, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__853)) __PYX_ERR(22, 229, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __pyx_codeobj__854 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_binDim, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__854)) __PYX_ERR(22, 240, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__855 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_bins, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__855)) __PYX_ERR(22, 254, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__856 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_bin_2, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__856)) __PYX_ERR(22, 260, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__857 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_bin, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__857)) __PYX_ERR(22, 277, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __pyx_codeobj__858 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_binAt, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__858)) __PYX_ERR(22, 283, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__859 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maskBin, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__859)) __PYX_ERR(22, 287, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__860 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maskBins, 298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__860)) __PYX_ERR(22, 298, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_codeobj__861 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__414, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maskBinAt, 304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__861)) __PYX_ERR(22, 304, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_codeobj__862 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maskSlice, 308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__862)) __PYX_ERR(22, 308, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_codeobj__863 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_mkEstimate, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__863)) __PYX_ERR(22, 321, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":338
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto1D.
 * 
 */
  __pyx_tuple__864 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_rtn, __pyx_n_s_tmp); if (unlikely(!__pyx_tuple__864)) __PYX_ERR(22, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__864);
  __Pyx_GIVEREF(__pyx_tuple__864);
  __pyx_codeobj__865 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__864, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_mkHisto, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__865)) __PYX_ERR(22, 338, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":355
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_codeobj__866 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_mkScatter, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__866)) __PYX_ERR(22, 355, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":369
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedProfile1D self, BinnedProfile1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile1D -> BinnedEstimate1D
 * 
 */
  __pyx_codeobj__867 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_divideBy, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__867)) __PYX_ERR(22, 369, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":406
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__868 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_mknp, 406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__868)) __PYX_ERR(22, 406, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":414
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__869 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_lengthContent, 414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__869)) __PYX_ERR(22, 414, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":424
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__870 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_serializeContent, 424, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__870)) __PYX_ERR(22, 424, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":434
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__871 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_deserializeContent, 434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__871)) __PYX_ERR(22, 434, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":446
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__872 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_lengthMeta, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__872)) __PYX_ERR(22, 446, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":456
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_codeobj__873 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_serializeMeta, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__873)) __PYX_ERR(22, 456, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":466
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__874 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_deserializeMeta, 466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__874)) __PYX_ERR(22, 466, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":479
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_codeobj__875 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_fill, 479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__875)) __PYX_ERR(22, 479, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":494
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __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__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_indexAt, 494, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__876)) __PYX_ERR(22, 494, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":503
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */
  __pyx_codeobj__877 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_fillDim, 503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__877)) __PYX_ERR(22, 503, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":512
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */
  __pyx_codeobj__878 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_generated_BinnedProfile1, __pyx_n_s_normalize, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__878)) __PYX_ERR(22, 512, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":521
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */
  __pyx_codeobj__879 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedProfile1, __pyx_n_s_scaleW, 521, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__879)) __PYX_ERR(22, 521, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":530
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */
  __pyx_codeobj__880 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_sumW, 530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__880)) __PYX_ERR(22, 530, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":539
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_sumW2, 539, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__881)) __PYX_ERR(22, 539, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":548
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_codeobj__882 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_sumWA, 548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__882)) __PYX_ERR(22, 548, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":557
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_codeobj__883 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_sumWA2, 557, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__883)) __PYX_ERR(22, 557, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":566
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_numEntries, 566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__884)) __PYX_ERR(22, 566, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":575
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */
  __pyx_codeobj__885 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_effNumEntries, 575, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__885)) __PYX_ERR(22, 575, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":584
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */
  __pyx_codeobj__886 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_integral, 584, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__886)) __PYX_ERR(22, 584, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":593
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */
  __pyx_codeobj__887 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_integralError, 593, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__887)) __PYX_ERR(22, 593, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":602
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_dVol, 602, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__888)) __PYX_ERR(22, 602, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":611
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_density, 611, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__889)) __PYX_ERR(22, 611, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":620
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */
  __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__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_densityError, 620, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__890)) __PYX_ERR(22, 620, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":629
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */
  __pyx_codeobj__891 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_densitySum, 629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__891)) __PYX_ERR(22, 629, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":638
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */
  __pyx_codeobj__892 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maxDensity, 638, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__892)) __PYX_ERR(22, 638, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":647
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __pyx_codeobj__893 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_maskedBins, 647, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__893)) __PYX_ERR(22, 647, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":656
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__894 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_numBinsX, 656, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__894)) __PYX_ERR(22, 656, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":667
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__895 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xEdges, 667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__895)) __PYX_ERR(22, 667, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":678
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__896 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xWidths, 678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__896)) __PYX_ERR(22, 678, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":685
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xMin, 685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__897)) __PYX_ERR(22, 685, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":692
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xMax, 692, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__898)) __PYX_ERR(22, 692, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":699
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__899 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_rebinXBy, 699, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__899)) __PYX_ERR(22, 699, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":706
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__900 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_rebinXTo, 706, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__900)) __PYX_ERR(22, 706, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":713
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__901 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xMean, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__901)) __PYX_ERR(22, 713, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":720
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__902 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xVariance, 720, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__902)) __PYX_ERR(22, 720, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":727
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__903 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xStdDev, 727, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__903)) __PYX_ERR(22, 727, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":734
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__904 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xStdErr, 734, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__904)) __PYX_ERR(22, 734, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":741
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */
  __pyx_codeobj__905 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_xRMS, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__905)) __PYX_ERR(22, 741, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":748
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__906 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile1, __pyx_n_s_rebinX, 748, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__906)) __PYX_ERR(22, 748, __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__907 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__907)) __PYX_ERR(1, 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__908 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__908)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double]())
 *         #self._set_config()
 */
  __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__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_init1, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__909)) __PYX_ERR(23, 72, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_codeobj__910 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 27, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_init2, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__910)) __PYX_ERR(23, 76, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_codeobj__911 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_init3, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__911)) __PYX_ERR(23, 130, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __pyx_codeobj__912 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_init4, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__912)) __PYX_ERR(23, 137, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_codeobj__913 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_set_config, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__913)) __PYX_ERR(23, 164, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile2D.
 *         Clone this BinnedProfile2D."""
 */
  __pyx_codeobj__914 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_generated_BinnedProfile2, __pyx_n_s_clone, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__914)) __PYX_ERR(23, 258, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_codeobj__915 = (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__387, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_localToGlobalIndex, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__915)) __PYX_ERR(23, 287, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */
  __pyx_codeobj__916 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_global_set, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__916)) __PYX_ERR(23, 313, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */
  __pyx_codeobj__917 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_local_set, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__917)) __PYX_ERR(23, 338, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_codeobj__918 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_set, 362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__918)) __PYX_ERR(23, 362, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __pyx_codeobj__919 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_reset, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__919)) __PYX_ERR(23, 370, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */
  __pyx_codeobj__920 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__396, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_numBins, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__920)) __PYX_ERR(23, 394, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__921 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_isMasked, 418, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__921)) __PYX_ERR(23, 418, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__922 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_isVisible, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__922)) __PYX_ERR(23, 441, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__923 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_binDim, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__923)) __PYX_ERR(23, 464, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_codeobj__924 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_bins, 490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__924)) __PYX_ERR(23, 490, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_codeobj__925 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_bin_2, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__925)) __PYX_ERR(23, 496, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_codeobj__926 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_bin, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__926)) __PYX_ERR(23, 531, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __pyx_codeobj__927 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_binAt, 537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__927)) __PYX_ERR(23, 537, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_codeobj__928 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maskBin, 541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__928)) __PYX_ERR(23, 541, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_codeobj__929 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maskBins, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__929)) __PYX_ERR(23, 564, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __pyx_codeobj__930 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maskBinAt, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__930)) __PYX_ERR(23, 570, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__931 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maskSlice, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__931)) __PYX_ERR(23, 574, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_codeobj__932 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_mkEstimate, 599, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__932)) __PYX_ERR(23, 599, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":634
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto2D.
 * 
 */
  __pyx_codeobj__933 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__864, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_mkHisto, 634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__933)) __PYX_ERR(23, 634, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":669
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_codeobj__934 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_mkScatter, 669, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__934)) __PYX_ERR(23, 669, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":701
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedProfile2D self, BinnedProfile2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile2D -> BinnedEstimate2D
 * 
 */
  __pyx_codeobj__935 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_divideBy, 701, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__935)) __PYX_ERR(23, 701, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":774
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__936 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_mknp, 774, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__936)) __PYX_ERR(23, 774, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":782
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__937 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_lengthContent, 782, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__937)) __PYX_ERR(23, 782, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__938 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_serializeContent, 804, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__938)) __PYX_ERR(23, 804, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":826
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__939 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_deserializeContent, 826, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__939)) __PYX_ERR(23, 826, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":850
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__940 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_lengthMeta, 850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__940)) __PYX_ERR(23, 850, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":872
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__941 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_serializeMeta, 872, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__941)) __PYX_ERR(23, 872, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":894
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__942 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_deserializeMeta, 894, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__942)) __PYX_ERR(23, 894, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":919
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_codeobj__943 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__779, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_fill, 919, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__943)) __PYX_ERR(23, 919, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":946
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_codeobj__944 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_indexAt, 946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__944)) __PYX_ERR(23, 946, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":967
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */
  __pyx_codeobj__945 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_fillDim, 967, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__945)) __PYX_ERR(23, 967, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":988
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_codeobj__946 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_generated_BinnedProfile2, __pyx_n_s_normalize, 988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__946)) __PYX_ERR(23, 988, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1009
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */
  __pyx_codeobj__947 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_generated_BinnedProfile2, __pyx_n_s_scaleW, 1009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__947)) __PYX_ERR(23, 1009, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1030
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */
  __pyx_codeobj__948 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_sumW, 1030, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__948)) __PYX_ERR(23, 1030, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1051
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */
  __pyx_codeobj__949 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_sumW2, 1051, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__949)) __PYX_ERR(23, 1051, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1072
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_codeobj__950 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_sumWA, 1072, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__950)) __PYX_ERR(23, 1072, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1093
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_codeobj__951 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_sumWA2, 1093, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__951)) __PYX_ERR(23, 1093, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1114
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */
  __pyx_codeobj__952 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_numEntries, 1114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__952)) __PYX_ERR(23, 1114, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1135
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_codeobj__953 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_effNumEntries, 1135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__953)) __PYX_ERR(23, 1135, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1156
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */
  __pyx_codeobj__954 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_integral, 1156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__954)) __PYX_ERR(23, 1156, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1177
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */
  __pyx_codeobj__955 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_integralError, 1177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__955)) __PYX_ERR(23, 1177, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1198
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */
  __pyx_codeobj__956 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_dVol, 1198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__956)) __PYX_ERR(23, 1198, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1219
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */
  __pyx_codeobj__957 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_density, 1219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__957)) __PYX_ERR(23, 1219, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1240
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */
  __pyx_codeobj__958 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_densityError, 1240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__958)) __PYX_ERR(23, 1240, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1261
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */
  __pyx_codeobj__959 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_densitySum, 1261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__959)) __PYX_ERR(23, 1261, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1282
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */
  __pyx_codeobj__960 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maxDensity, 1282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__960)) __PYX_ERR(23, 1282, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1303
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __pyx_codeobj__961 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_maskedBins, 1303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__961)) __PYX_ERR(23, 1303, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1324
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__962 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_numBinsX, 1324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__962)) __PYX_ERR(23, 1324, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1347
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__963 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xEdges, 1347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__963)) __PYX_ERR(23, 1347, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1370
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__964 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xWidths, 1370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__964)) __PYX_ERR(23, 1370, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1381
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__965 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xMin, 1381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__965)) __PYX_ERR(23, 1381, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1392
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__966 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xMax, 1392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__966)) __PYX_ERR(23, 1392, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1403
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__967 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinXBy, 1403, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__967)) __PYX_ERR(23, 1403, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1414
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__968 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinXTo, 1414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__968)) __PYX_ERR(23, 1414, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1425
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__969 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xMean, 1425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__969)) __PYX_ERR(23, 1425, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1436
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__970 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xVariance, 1436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__970)) __PYX_ERR(23, 1436, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1447
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__971 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xStdDev, 1447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__971)) __PYX_ERR(23, 1447, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1458
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__972 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xStdErr, 1458, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__972)) __PYX_ERR(23, 1458, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1469
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__973 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_xRMS, 1469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__973)) __PYX_ERR(23, 1469, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1480
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_codeobj__974 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinX, 1480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__974)) __PYX_ERR(23, 1480, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1486
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__975 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_numBinsY, 1486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__975)) __PYX_ERR(23, 1486, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1509
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__976 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yEdges, 1509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__976)) __PYX_ERR(23, 1509, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1532
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__977 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yWidths, 1532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__977)) __PYX_ERR(23, 1532, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1543
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__978 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yMin, 1543, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__978)) __PYX_ERR(23, 1543, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1554
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__979 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yMax, 1554, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__979)) __PYX_ERR(23, 1554, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1565
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__980 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinYBy, 1565, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__980)) __PYX_ERR(23, 1565, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1576
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__981 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinYTo, 1576, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__981)) __PYX_ERR(23, 1576, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1587
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__982 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yMean, 1587, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__982)) __PYX_ERR(23, 1587, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1598
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__983 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yVariance, 1598, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__983)) __PYX_ERR(23, 1598, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1609
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__984 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yStdDev, 1609, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__984)) __PYX_ERR(23, 1609, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1620
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__985 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yStdErr, 1620, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__985)) __PYX_ERR(23, 1620, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1631
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */
  __pyx_codeobj__986 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_yRMS, 1631, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__986)) __PYX_ERR(23, 1631, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1642
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_codeobj__987 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_BinnedProfile2, __pyx_n_s_rebinY, 1642, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__987)) __PYX_ERR(23, 1642, __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__988 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__988)) __PYX_ERR(1, 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__989 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__989)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":25
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */
  __pyx_codeobj__990 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_copy, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__990)) __PYX_ERR(24, 25, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__991 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_reset, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__991)) __PYX_ERR(24, 28, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":36
 *         self.d1ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_tuple__992 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_numEntries, __pyx_n_s_sumW, __pyx_n_s_sumW2, __pyx_n_s_sW, __pyx_n_s_sW2, __pyx_n_s_w); if (unlikely(!__pyx_tuple__992)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__992);
  __Pyx_GIVEREF(__pyx_tuple__992);
  __pyx_codeobj__993 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__992, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_set, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__993)) __PYX_ERR(24, 36, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":48
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float weight=1.0) -> None
 */
  __pyx_codeobj__994 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__626, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_fill, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__994)) __PYX_ERR(24, 48, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":56
 *         self.d1ptr().fill(x, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__995 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_scaleW, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__995)) __PYX_ERR(24, 56, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":64
 *         self.d1ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_tuple__996 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_w); if (unlikely(!__pyx_tuple__996)) __PYX_ERR(24, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__996);
  __Pyx_GIVEREF(__pyx_tuple__996);
  __pyx_codeobj__997 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__996, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_scale, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__997)) __PYX_ERR(24, 64, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":72
 *         self.d1ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */
  __pyx_codeobj__998 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_numEntries, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__998)) __PYX_ERR(24, 72, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":76
 *         return self.d1ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */
  __pyx_codeobj__999 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_effNumEntries, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__999)) __PYX_ERR(24, 76, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":80
 *         return self.d1ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */
  __pyx_codeobj__1000 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_sumW, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1000)) __PYX_ERR(24, 80, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":84
 *         return self.d1ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */
  __pyx_codeobj__1001 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_sumW2, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1001)) __PYX_ERR(24, 84, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":88
 *         return self.d1ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */
  __pyx_codeobj__1002 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_errW, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1002)) __PYX_ERR(24, 88, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":92
 *         return self.d1ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */
  __pyx_codeobj__1003 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_relErrW, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1003)) __PYX_ERR(24, 92, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":96
 *         return self.d1ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d1ptr().mean(dim)
 */
  __pyx_tuple__1004 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_dim); if (unlikely(!__pyx_tuple__1004)) __PYX_ERR(24, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1004);
  __Pyx_GIVEREF(__pyx_tuple__1004);
  __pyx_codeobj__1005 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_mean, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1005)) __PYX_ERR(24, 96, __pyx_L1_error)
  __pyx_tuple__1006 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__1006)) __PYX_ERR(24, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1006);
  __Pyx_GIVEREF(__pyx_tuple__1006);

  /* "include/generated/Dbn1D.pyx":100
 *         return self.d1ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d1ptr().variance(dim)
 */
  __pyx_codeobj__1007 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_variance, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1007)) __PYX_ERR(24, 100, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":104
 *         return self.d1ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d1ptr().stdDev(dim)
 */
  __pyx_codeobj__1008 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_stdDev, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1008)) __PYX_ERR(24, 104, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":108
 *         return self.d1ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d1ptr().stdErr(dim)
 */
  __pyx_codeobj__1009 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_stdErr, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1009)) __PYX_ERR(24, 108, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":112
 *         return self.d1ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d1ptr().RMS(dim)
 */
  __pyx_codeobj__1010 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_RMS, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1010)) __PYX_ERR(24, 112, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":122
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1011 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_scaleX, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1011)) __PYX_ERR(24, 122, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":130
 *         self.d1ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */
  __pyx_codeobj__1012 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_xMean, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1012)) __PYX_ERR(24, 130, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":134
 *         return self.d1ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */
  __pyx_codeobj__1013 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_xVariance, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1013)) __PYX_ERR(24, 134, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":138
 *         return self.d1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */
  __pyx_codeobj__1014 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_xStdDev, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1014)) __PYX_ERR(24, 138, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":142
 *         return self.d1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */
  __pyx_codeobj__1015 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_xStdErr, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1015)) __PYX_ERR(24, 142, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":146
 *         return self.d1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */
  __pyx_codeobj__1016 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_xRMS, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1016)) __PYX_ERR(24, 146, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":150
 *         return self.d1ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */
  __pyx_codeobj__1017 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_sumWX, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1017)) __PYX_ERR(24, 150, __pyx_L1_error)

  /* "include/generated/Dbn1D.pyx":154
 *         return self.d1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */
  __pyx_codeobj__1018 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn1D_pyx, __pyx_n_s_sumWX2, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1018)) __PYX_ERR(24, 154, __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__1019 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1019)) __PYX_ERR(1, 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__1020 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1020)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":25
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */
  __pyx_codeobj__1021 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_copy, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1021)) __PYX_ERR(25, 25, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__1022 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_reset, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1022)) __PYX_ERR(25, 28, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":36
 *         self.d2ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_tuple__1023 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_numEntries, __pyx_n_s_sumW, __pyx_n_s_sumW2, __pyx_n_s_sumWcross, __pyx_n_s_sW, __pyx_n_s_sW2, __pyx_n_s_sWcross, __pyx_n_s_w); if (unlikely(!__pyx_tuple__1023)) __PYX_ERR(25, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1023);
  __Pyx_GIVEREF(__pyx_tuple__1023);
  __pyx_codeobj__1024 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1023, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_set, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1024)) __PYX_ERR(25, 36, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":49
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float weight=1.0) -> None
 */
  __pyx_codeobj__1025 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_fill, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1025)) __PYX_ERR(25, 49, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":57
 *         self.d2ptr().fill(x, y, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1026 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_scaleW, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1026)) __PYX_ERR(25, 57, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":65
 *         self.d2ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_codeobj__1027 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__996, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_scale, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1027)) __PYX_ERR(25, 65, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":73
 *         self.d2ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */
  __pyx_codeobj__1028 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_numEntries, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1028)) __PYX_ERR(25, 73, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":77
 *         return self.d2ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */
  __pyx_codeobj__1029 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_effNumEntries, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1029)) __PYX_ERR(25, 77, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":81
 *         return self.d2ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */
  __pyx_codeobj__1030 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumW, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1030)) __PYX_ERR(25, 81, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":85
 *         return self.d2ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */
  __pyx_codeobj__1031 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumW2, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1031)) __PYX_ERR(25, 85, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":89
 *         return self.d2ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */
  __pyx_codeobj__1032 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_errW, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1032)) __PYX_ERR(25, 89, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":93
 *         return self.d2ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */
  __pyx_codeobj__1033 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_relErrW, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1033)) __PYX_ERR(25, 93, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":97
 *         return self.d2ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d2ptr().mean(dim)
 */
  __pyx_codeobj__1034 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_mean, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1034)) __PYX_ERR(25, 97, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":101
 *         return self.d2ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d2ptr().variance(dim)
 */
  __pyx_codeobj__1035 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_variance, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1035)) __PYX_ERR(25, 101, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":105
 *         return self.d2ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d2ptr().stdDev(dim)
 */
  __pyx_codeobj__1036 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_stdDev, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1036)) __PYX_ERR(25, 105, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":109
 *         return self.d2ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d2ptr().stdErr(dim)
 */
  __pyx_codeobj__1037 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_stdErr, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1037)) __PYX_ERR(25, 109, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":113
 *         return self.d2ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d2ptr().RMS(dim)
 */
  __pyx_codeobj__1038 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_RMS, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1038)) __PYX_ERR(25, 113, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":123
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1039 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_scaleX, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1039)) __PYX_ERR(25, 123, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":131
 *         self.d2ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d2ptr().xMean()
 */
  __pyx_codeobj__1040 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_xMean, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1040)) __PYX_ERR(25, 131, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":135
 *         return self.d2ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d2ptr().xVariance()
 */
  __pyx_codeobj__1041 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_xVariance, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1041)) __PYX_ERR(25, 135, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":139
 *         return self.d2ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d2ptr().xStdDev()
 */
  __pyx_codeobj__1042 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_xStdDev, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1042)) __PYX_ERR(25, 139, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":143
 *         return self.d2ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d2ptr().xStdErr()
 */
  __pyx_codeobj__1043 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_xStdErr, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1043)) __PYX_ERR(25, 143, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":147
 *         return self.d2ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d2ptr().xRMS()
 */
  __pyx_codeobj__1044 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_xRMS, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1044)) __PYX_ERR(25, 147, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":151
 *         return self.d2ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */
  __pyx_codeobj__1045 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumWX, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1045)) __PYX_ERR(25, 151, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":155
 *         return self.d2ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */
  __pyx_codeobj__1046 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumWX2, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1046)) __PYX_ERR(25, 155, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__1047 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_y); if (unlikely(!__pyx_tuple__1047)) __PYX_ERR(25, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1047);
  __Pyx_GIVEREF(__pyx_tuple__1047);
  __pyx_codeobj__1048 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_scaleY, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1048)) __PYX_ERR(25, 160, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":168
 *         self.d2ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d2ptr().yMean()
 */
  __pyx_codeobj__1049 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_yMean, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1049)) __PYX_ERR(25, 168, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":172
 *         return self.d2ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d2ptr().yVariance()
 */
  __pyx_codeobj__1050 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_yVariance, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1050)) __PYX_ERR(25, 172, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":176
 *         return self.d2ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d2ptr().yStdDev()
 */
  __pyx_codeobj__1051 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_yStdDev, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1051)) __PYX_ERR(25, 176, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":180
 *         return self.d2ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d2ptr().yStdErr()
 */
  __pyx_codeobj__1052 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_yStdErr, 180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1052)) __PYX_ERR(25, 180, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":184
 *         return self.d2ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d2ptr().yRMS()
 */
  __pyx_codeobj__1053 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_yRMS, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1053)) __PYX_ERR(25, 184, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":188
 *         return self.d2ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWY()
 */
  __pyx_codeobj__1054 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumWY, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1054)) __PYX_ERR(25, 188, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":192
 *         return self.d2ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */
  __pyx_codeobj__1055 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_sumWY2, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1055)) __PYX_ERR(25, 192, __pyx_L1_error)

  /* "include/generated/Dbn2D.pyx":196
 *         return self.d2ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */
  __pyx_tuple__1056 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j); if (unlikely(!__pyx_tuple__1056)) __PYX_ERR(25, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1056);
  __Pyx_GIVEREF(__pyx_tuple__1056);
  __pyx_codeobj__1057 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1056, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn2D_pyx, __pyx_n_s_crossTerm, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1057)) __PYX_ERR(25, 196, __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__1058 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1058)) __PYX_ERR(1, 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__1059 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1059)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":25
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */
  __pyx_codeobj__1060 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_copy, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1060)) __PYX_ERR(26, 25, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__1061 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_reset, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1061)) __PYX_ERR(26, 28, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":36
 *         self.d3ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_codeobj__1062 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1023, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_set, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1062)) __PYX_ERR(26, 36, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":49
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float z, float weight=1.0) -> None
 */
  __pyx_codeobj__1063 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__779, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_fill, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1063)) __PYX_ERR(26, 49, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":57
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1064 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_scaleW, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1064)) __PYX_ERR(26, 57, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":65
 *         self.d3ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_codeobj__1065 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__996, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_scale, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1065)) __PYX_ERR(26, 65, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":73
 *         self.d3ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */
  __pyx_codeobj__1066 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_numEntries, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1066)) __PYX_ERR(26, 73, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":77
 *         return self.d3ptr().numEntries()
 * 
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */
  __pyx_codeobj__1067 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_effNumEntries, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1067)) __PYX_ERR(26, 77, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":81
 *         return self.d3ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */
  __pyx_codeobj__1068 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumW, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1068)) __PYX_ERR(26, 81, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":85
 *         return self.d3ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */
  __pyx_codeobj__1069 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumW2, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1069)) __PYX_ERR(26, 85, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":89
 *         return self.d3ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */
  __pyx_codeobj__1070 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_errW, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1070)) __PYX_ERR(26, 89, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":93
 *         return self.d3ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */
  __pyx_codeobj__1071 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_relErrW, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1071)) __PYX_ERR(26, 93, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":97
 *         return self.d3ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d3ptr().mean(dim)
 */
  __pyx_codeobj__1072 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_mean, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1072)) __PYX_ERR(26, 97, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":101
 *         return self.d3ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d3ptr().variance(dim)
 */
  __pyx_codeobj__1073 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_variance, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1073)) __PYX_ERR(26, 101, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":105
 *         return self.d3ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d3ptr().stdDev(dim)
 */
  __pyx_codeobj__1074 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_stdDev, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1074)) __PYX_ERR(26, 105, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":109
 *         return self.d3ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d3ptr().stdErr(dim)
 */
  __pyx_codeobj__1075 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_stdErr, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1075)) __PYX_ERR(26, 109, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":113
 *         return self.d3ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d3ptr().RMS(dim)
 */
  __pyx_codeobj__1076 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_RMS, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1076)) __PYX_ERR(26, 113, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":123
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1077 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_scaleX, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1077)) __PYX_ERR(26, 123, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":131
 *         self.d3ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d3ptr().xMean()
 */
  __pyx_codeobj__1078 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_xMean, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1078)) __PYX_ERR(26, 131, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":135
 *         return self.d3ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d3ptr().xVariance()
 */
  __pyx_codeobj__1079 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_xVariance, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1079)) __PYX_ERR(26, 135, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":139
 *         return self.d3ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d3ptr().xStdDev()
 */
  __pyx_codeobj__1080 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_xStdDev, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1080)) __PYX_ERR(26, 139, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":143
 *         return self.d3ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d3ptr().xStdErr()
 */
  __pyx_codeobj__1081 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_xStdErr, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1081)) __PYX_ERR(26, 143, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":147
 *         return self.d3ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d3ptr().xRMS()
 */
  __pyx_codeobj__1082 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_xRMS, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1082)) __PYX_ERR(26, 147, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":151
 *         return self.d3ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */
  __pyx_codeobj__1083 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWX, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1083)) __PYX_ERR(26, 151, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":155
 *         return self.d3ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */
  __pyx_codeobj__1084 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWX2, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1084)) __PYX_ERR(26, 155, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__1085 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_scaleY, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1085)) __PYX_ERR(26, 160, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":168
 *         self.d3ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d3ptr().yMean()
 */
  __pyx_codeobj__1086 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_yMean, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1086)) __PYX_ERR(26, 168, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":172
 *         return self.d3ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d3ptr().yVariance()
 */
  __pyx_codeobj__1087 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_yVariance, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1087)) __PYX_ERR(26, 172, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":176
 *         return self.d3ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d3ptr().yStdDev()
 */
  __pyx_codeobj__1088 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_yStdDev, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1088)) __PYX_ERR(26, 176, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":180
 *         return self.d3ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d3ptr().yStdErr()
 */
  __pyx_codeobj__1089 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_yStdErr, 180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1089)) __PYX_ERR(26, 180, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":184
 *         return self.d3ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d3ptr().yRMS()
 */
  __pyx_codeobj__1090 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_yRMS, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1090)) __PYX_ERR(26, 184, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":188
 *         return self.d3ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWY()
 */
  __pyx_codeobj__1091 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWY, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1091)) __PYX_ERR(26, 188, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":192
 *         return self.d3ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */
  __pyx_codeobj__1092 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWY2, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1092)) __PYX_ERR(26, 192, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":196
 *         return self.d3ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */
  __pyx_codeobj__1093 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1056, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_crossTerm, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1093)) __PYX_ERR(26, 196, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":201
 * 
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__1094 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_z); if (unlikely(!__pyx_tuple__1094)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1094);
  __Pyx_GIVEREF(__pyx_tuple__1094);
  __pyx_codeobj__1095 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1094, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_scaleZ, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1095)) __PYX_ERR(26, 201, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":209
 *         self.d3ptr().scaleZ(z)
 * 
 *     def zMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of z"""
 *         return self.d3ptr().zMean()
 */
  __pyx_codeobj__1096 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_zMean, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1096)) __PYX_ERR(26, 209, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":213
 *         return self.d3ptr().zMean()
 * 
 *     def zVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of z"""
 *         return self.d3ptr().zVariance()
 */
  __pyx_codeobj__1097 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_zVariance, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1097)) __PYX_ERR(26, 213, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":217
 *         return self.d3ptr().zVariance()
 * 
 *     def zStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of z"""
 *         return self.d3ptr().zStdDev()
 */
  __pyx_codeobj__1098 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_zStdDev, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1098)) __PYX_ERR(26, 217, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":221
 *         return self.d3ptr().zStdDev()
 * 
 *     def zStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <z>"""
 *         return self.d3ptr().zStdErr()
 */
  __pyx_codeobj__1099 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_zStdErr, 221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1099)) __PYX_ERR(26, 221, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":225
 *         return self.d3ptr().zStdErr()
 * 
 *     def zRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of z"""
 *         return self.d3ptr().zRMS()
 */
  __pyx_codeobj__1100 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_zRMS, 225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1100)) __PYX_ERR(26, 225, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":229
 *         return self.d3ptr().zRMS()
 * 
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWZ()
 */
  __pyx_codeobj__1101 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWZ, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1101)) __PYX_ERR(26, 229, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":233
 *         return self.d3ptr().sumWZ()
 * 
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */
  __pyx_codeobj__1102 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_sumWZ2, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1102)) __PYX_ERR(26, 233, __pyx_L1_error)

  /* "include/generated/Dbn3D.pyx":237
 *         return self.d3ptr().sumWZ2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d3ptr().crossTerm(i,j)
 */
  __pyx_codeobj__1103 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1056, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Dbn3D_pyx, __pyx_n_s_crossTerm, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1103)) __PYX_ERR(26, 237, __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__1104 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1104)) __PYX_ERR(1, 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__1105 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1105)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 */
  __pyx_codeobj__1106 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_init1, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1106)) __PYX_ERR(27, 21, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_tuple__1107 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_vals, __pyx_n_s_errsdn, __pyx_n_s_errsup, __pyx_n_s_args, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__1107)) __PYX_ERR(27, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1107);
  __Pyx_GIVEREF(__pyx_tuple__1107);
  __pyx_codeobj__1108 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_init2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1108)) __PYX_ERR(27, 24, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]
 */
  __pyx_tuple__1109 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_xErrDn, __pyx_n_s_xErrUp, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1109)) __PYX_ERR(27, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1109);
  __Pyx_GIVEREF(__pyx_tuple__1109);
  __pyx_codeobj__1110 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_init3, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1110)) __PYX_ERR(27, 41, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, xErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErr ]
 */
  __pyx_tuple__1111 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_xErr, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1111)) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1111);
  __Pyx_GIVEREF(__pyx_tuple__1111);
  __pyx_codeobj__1112 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_init4, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1112)) __PYX_ERR(27, 47, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */
  __pyx_codeobj__1113 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_copy, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1113)) __PYX_ERR(27, 53, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":59
 *         return '<Point1D(v1=%g)>' % (self.val(0))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_codeobj__1114 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_val, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1114)) __PYX_ERR(27, 59, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":64
 *         return self.p1ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_codeobj__1115 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_max, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1115)) __PYX_ERR(27, 64, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":69
 *         return self.p1ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_codeobj__1116 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_min, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1116)) __PYX_ERR(27, 69, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":74
 *         return self.p1ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_codeobj__1117 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_errs, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1117)) __PYX_ERR(27, 74, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":93
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_tuple__1118 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_es, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__1118)) __PYX_ERR(27, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1118);
  __Pyx_GIVEREF(__pyx_tuple__1118);
  __pyx_codeobj__1119 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_setXErrs, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1119)) __PYX_ERR(27, 93, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */
  __pyx_codeobj__1120 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_x, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1120)) __PYX_ERR(27, 110, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":114
 *         return self.p1ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */
  __pyx_codeobj__1121 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_setX, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1121)) __PYX_ERR(27, 114, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":118
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p1ptr().xErrs()
 */
  __pyx_codeobj__1122 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xErrs, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1122)) __PYX_ERR(27, 118, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":122
 *         return self.p1ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */
  __pyx_codeobj__1123 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xMin, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1123)) __PYX_ERR(27, 122, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":126
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */
  __pyx_codeobj__1124 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xMax, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1124)) __PYX_ERR(27, 126, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":130
 *         return self.p1ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrMinus()
 * 
 */
  __pyx_codeobj__1125 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xErrMinus, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1125)) __PYX_ERR(27, 130, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":133
 *         return self.p1ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrPlus()
 * 
 */
  __pyx_codeobj__1126 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xErrPlus, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1126)) __PYX_ERR(27, 133, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":136
 *         return self.p1ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__1127 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_xErrAvg, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1127)) __PYX_ERR(27, 136, __pyx_L1_error)

  /* "include/generated/Point1D.pyx":139
 *         return self.p1ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_codeobj__1128 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point1D_pyx, __pyx_n_s_scaleX, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1128)) __PYX_ERR(27, 139, __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__1129 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1129)) __PYX_ERR(1, 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__1130 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1130)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 */
  __pyx_codeobj__1131 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_init1, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1131)) __PYX_ERR(28, 21, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_codeobj__1132 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_init2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1132)) __PYX_ERR(28, 24, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]
 */
  __pyx_tuple__1133 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_yVal, __pyx_n_s_xErrDn, __pyx_n_s_xErrUp, __pyx_n_s_yErrDn, __pyx_n_s_yErrUp, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1133)) __PYX_ERR(28, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1133);
  __Pyx_GIVEREF(__pyx_tuple__1133);
  __pyx_codeobj__1134 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_init3, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1134)) __PYX_ERR(28, 41, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]
 */
  __pyx_tuple__1135 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_yVal, __pyx_n_s_xErr, __pyx_n_s_yErr, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1135)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1135);
  __Pyx_GIVEREF(__pyx_tuple__1135);
  __pyx_codeobj__1136 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_init4, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1136)) __PYX_ERR(28, 47, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */
  __pyx_codeobj__1137 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_copy, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1137)) __PYX_ERR(28, 53, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":59
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_codeobj__1138 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_val, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1138)) __PYX_ERR(28, 59, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":64
 *         return self.p2ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_codeobj__1139 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_max, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1139)) __PYX_ERR(28, 64, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":69
 *         return self.p2ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_codeobj__1140 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_min, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1140)) __PYX_ERR(28, 69, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":74
 *         return self.p2ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_codeobj__1141 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_errs, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1141)) __PYX_ERR(28, 74, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":93
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__1142 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_setXErrs, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1142)) __PYX_ERR(28, 93, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */
  __pyx_codeobj__1143 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_x, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1143)) __PYX_ERR(28, 110, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":114
 *         return self.p2ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */
  __pyx_codeobj__1144 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_setX, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1144)) __PYX_ERR(28, 114, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":118
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p2ptr().xErrs()
 */
  __pyx_codeobj__1145 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xErrs, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1145)) __PYX_ERR(28, 118, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":122
 *         return self.p2ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */
  __pyx_codeobj__1146 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xMin, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1146)) __PYX_ERR(28, 122, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":126
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */
  __pyx_codeobj__1147 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xMax, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1147)) __PYX_ERR(28, 126, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":130
 *         return self.p2ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrMinus()
 * 
 */
  __pyx_codeobj__1148 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xErrMinus, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1148)) __PYX_ERR(28, 130, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":133
 *         return self.p2ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrPlus()
 * 
 */
  __pyx_codeobj__1149 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xErrPlus, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1149)) __PYX_ERR(28, 133, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":136
 *         return self.p2ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__1150 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_xErrAvg, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1150)) __PYX_ERR(28, 136, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":139
 *         return self.p2ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_codeobj__1151 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_scaleX, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1151)) __PYX_ERR(28, 139, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__1152 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_setYErrs, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1152)) __PYX_ERR(28, 145, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */
  __pyx_codeobj__1153 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_y, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1153)) __PYX_ERR(28, 162, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":166
 *         return self.p2ptr().y()
 * 
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */
  __pyx_codeobj__1154 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_setY, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1154)) __PYX_ERR(28, 166, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":170
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p2ptr().yErrs()
 */
  __pyx_codeobj__1155 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yErrs, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1155)) __PYX_ERR(28, 170, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":174
 *         return self.p2ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */
  __pyx_codeobj__1156 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yMin, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1156)) __PYX_ERR(28, 174, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":178
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */
  __pyx_codeobj__1157 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yMax, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1157)) __PYX_ERR(28, 178, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":182
 *         return self.p2ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrMinus()
 * 
 */
  __pyx_codeobj__1158 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yErrMinus, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1158)) __PYX_ERR(28, 182, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":185
 *         return self.p2ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrPlus()
 * 
 */
  __pyx_codeobj__1159 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yErrPlus, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1159)) __PYX_ERR(28, 185, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":188
 *         return self.p2ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */
  __pyx_codeobj__1160 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_yErrAvg, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1160)) __PYX_ERR(28, 188, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":191
 *         return self.p2ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_codeobj__1161 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point2D_pyx, __pyx_n_s_scaleY, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1161)) __PYX_ERR(28, 191, __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__1162 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1162)) __PYX_ERR(1, 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__1163 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1163)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 */
  __pyx_codeobj__1164 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_init1, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1164)) __PYX_ERR(29, 21, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_codeobj__1165 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_init2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1165)) __PYX_ERR(29, 24, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 */
  __pyx_tuple__1166 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_yVal, __pyx_n_s_zVal, __pyx_n_s_xErrDn, __pyx_n_s_xErrUp, __pyx_n_s_yErrDn, __pyx_n_s_yErrUp, __pyx_n_s_zErrDn, __pyx_n_s_zErrUp, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1166)) __PYX_ERR(29, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1166);
  __Pyx_GIVEREF(__pyx_tuple__1166);
  __pyx_codeobj__1167 = (PyObject*)__Pyx_PyCode_New(10, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_init3, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1167)) __PYX_ERR(29, 41, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]
 */
  __pyx_tuple__1168 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_xVal, __pyx_n_s_yVal, __pyx_n_s_zVal, __pyx_n_s_xErr, __pyx_n_s_yErr, __pyx_n_s_zErr, __pyx_n_s_vals, __pyx_n_s_errm, __pyx_n_s_errp); if (unlikely(!__pyx_tuple__1168)) __PYX_ERR(29, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1168);
  __Pyx_GIVEREF(__pyx_tuple__1168);
  __pyx_codeobj__1169 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1168, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_init4, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1169)) __PYX_ERR(29, 47, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */
  __pyx_codeobj__1170 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_copy, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1170)) __PYX_ERR(29, 53, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":59
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_codeobj__1171 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_val, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1171)) __PYX_ERR(29, 59, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":64
 *         return self.p3ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_codeobj__1172 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_max, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1172)) __PYX_ERR(29, 64, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":69
 *         return self.p3ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_codeobj__1173 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_min, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1173)) __PYX_ERR(29, 69, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":74
 *         return self.p3ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_codeobj__1174 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_errs, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1174)) __PYX_ERR(29, 74, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":93
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__1175 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setXErrs, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1175)) __PYX_ERR(29, 93, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */
  __pyx_codeobj__1176 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_x, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1176)) __PYX_ERR(29, 110, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":114
 *         return self.p3ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */
  __pyx_codeobj__1177 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setX, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1177)) __PYX_ERR(29, 114, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":118
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p3ptr().xErrs()
 */
  __pyx_codeobj__1178 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xErrs, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1178)) __PYX_ERR(29, 118, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":122
 *         return self.p3ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */
  __pyx_codeobj__1179 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xMin, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1179)) __PYX_ERR(29, 122, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":126
 *         return self.p3ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */
  __pyx_codeobj__1180 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xMax, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1180)) __PYX_ERR(29, 126, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":130
 *         return self.p3ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrMinus()
 * 
 */
  __pyx_codeobj__1181 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xErrMinus, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1181)) __PYX_ERR(29, 130, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":133
 *         return self.p3ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrPlus()
 * 
 */
  __pyx_codeobj__1182 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xErrPlus, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1182)) __PYX_ERR(29, 133, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":136
 *         return self.p3ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__1183 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_xErrAvg, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1183)) __PYX_ERR(29, 136, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":139
 *         return self.p3ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_codeobj__1184 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_scaleX, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1184)) __PYX_ERR(29, 139, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__1185 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setYErrs, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1185)) __PYX_ERR(29, 145, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */
  __pyx_codeobj__1186 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_y, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1186)) __PYX_ERR(29, 162, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":166
 *         return self.p3ptr().y()
 * 
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */
  __pyx_codeobj__1187 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setY, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1187)) __PYX_ERR(29, 166, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":170
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p3ptr().yErrs()
 */
  __pyx_codeobj__1188 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yErrs, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1188)) __PYX_ERR(29, 170, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":174
 *         return self.p3ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */
  __pyx_codeobj__1189 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yMin, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1189)) __PYX_ERR(29, 174, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":178
 *         return self.p3ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */
  __pyx_codeobj__1190 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yMax, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1190)) __PYX_ERR(29, 178, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":182
 *         return self.p3ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrMinus()
 * 
 */
  __pyx_codeobj__1191 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yErrMinus, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1191)) __PYX_ERR(29, 182, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":185
 *         return self.p3ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrPlus()
 * 
 */
  __pyx_codeobj__1192 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yErrPlus, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1192)) __PYX_ERR(29, 185, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":188
 *         return self.p3ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */
  __pyx_codeobj__1193 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_yErrAvg, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1193)) __PYX_ERR(29, 188, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":191
 *         return self.p3ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_codeobj__1194 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_scaleY, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1194)) __PYX_ERR(29, 191, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":197
 * 
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__1195 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setZErrs, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1195)) __PYX_ERR(29, 197, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":214
 *         self.setErrs(2, tuple(errs))
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */
  __pyx_codeobj__1196 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_z, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1196)) __PYX_ERR(29, 214, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":218
 *         return self.p3ptr().z()
 * 
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */
  __pyx_codeobj__1197 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1094, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_setZ, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1197)) __PYX_ERR(29, 218, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":222
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return self.p3ptr().zErrs()
 */
  __pyx_codeobj__1198 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zErrs, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1198)) __PYX_ERR(29, 222, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":226
 *         return self.p3ptr().zErrs()
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */
  __pyx_codeobj__1199 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zMin, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1199)) __PYX_ERR(29, 226, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":230
 *         return self.p3ptr().zMin()
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */
  __pyx_codeobj__1200 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zMax, 230, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1200)) __PYX_ERR(29, 230, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":234
 *         return self.p3ptr().zMax()
 * 
 *     def zErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrMinus()
 * 
 */
  __pyx_codeobj__1201 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zErrMinus, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1201)) __PYX_ERR(29, 234, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":237
 *         return self.p3ptr().zErrMinus()
 * 
 *     def zErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrPlus()
 * 
 */
  __pyx_codeobj__1202 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zErrPlus, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1202)) __PYX_ERR(29, 237, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":240
 *         return self.p3ptr().zErrPlus()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */
  __pyx_codeobj__1203 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_zErrAvg, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1203)) __PYX_ERR(29, 240, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":243
 *         return self.p3ptr().zErrAvg()
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors by factor a."""
 */
  __pyx_codeobj__1204 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point3D_pyx, __pyx_n_s_scaleZ, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1204)) __PYX_ERR(29, 243, __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__1205 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1205)) __PYX_ERR(1, 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__1206 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1206)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":21
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 */
  __pyx_codeobj__1207 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_init1, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1207)) __PYX_ERR(30, 21, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_codeobj__1208 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_init2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1208)) __PYX_ERR(30, 24, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":43
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 */
  __pyx_codeobj__1209 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_copy, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1209)) __PYX_ERR(30, 43, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":49
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_codeobj__1210 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_val, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1210)) __PYX_ERR(30, 49, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":54
 *         return self.p4ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_codeobj__1211 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_max, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1211)) __PYX_ERR(30, 54, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":59
 *         return self.p4ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_codeobj__1212 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_min, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1212)) __PYX_ERR(30, 59, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":64
 *         return self.p4ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_codeobj__1213 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Point4D_pyx, __pyx_n_s_errs, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1213)) __PYX_ERR(30, 64, __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__1214 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1214)) __PYX_ERR(1, 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__1215 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1215)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 */
  __pyx_tuple__1216 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__1216)) __PYX_ERR(31, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1216);
  __Pyx_GIVEREF(__pyx_tuple__1216);
  __pyx_codeobj__1217 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_init_1, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1217)) __PYX_ERR(31, 32, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_tuple__1218 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_points, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__1218)) __PYX_ERR(31, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1218);
  __Pyx_GIVEREF(__pyx_tuple__1218);
  __pyx_codeobj__1219 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_init_2, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1219)) __PYX_ERR(31, 35, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */
  __pyx_codeobj__1220 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_clone, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1220)) __PYX_ERR(31, 39, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */
  __pyx_codeobj__1221 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_reset, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1221)) __PYX_ERR(31, 51, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__1222 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_numPoints, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1222)) __PYX_ERR(31, 56, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_codeobj__1223 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_points, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1223)) __PYX_ERR(31, 65, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":69
 *         return self._mknp([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__1224 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_point, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1224)) __PYX_ERR(31, 69, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_tuple__1225 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__1225)) __PYX_ERR(31, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1225);
  __Pyx_GIVEREF(__pyx_tuple__1225);
  __pyx_codeobj__1226 = (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__1225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_addPoint, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1226)) __PYX_ERR(31, 78, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(*args))
 * 
 */
  __pyx_codeobj__1227 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_addPoint_explicit, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1227)) __PYX_ERR(31, 86, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":89
 *         self.__addPoint_point(Point1D(*args))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */
  __pyx_tuple__1228 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_p); if (unlikely(!__pyx_tuple__1228)) __PYX_ERR(31, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1228);
  __Pyx_GIVEREF(__pyx_tuple__1228);
  __pyx_codeobj__1229 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_addPoint_point, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1229)) __PYX_ERR(31, 89, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":92
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_tuple__1230 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_iterable, __pyx_n_s_row); if (unlikely(!__pyx_tuple__1230)) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1230);
  __Pyx_GIVEREF(__pyx_tuple__1230);
  __pyx_codeobj__1231 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_addPoints, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1231)) __PYX_ERR(31, 92, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */
  __pyx_tuple__1232 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__1232)) __PYX_ERR(31, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1232);
  __Pyx_GIVEREF(__pyx_tuple__1232);
  __pyx_codeobj__1233 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_rmPoint, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1233)) __PYX_ERR(31, 100, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":103
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */
  __pyx_tuple__1234 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_idxs); if (unlikely(!__pyx_tuple__1234)) __PYX_ERR(31, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1234);
  __Pyx_GIVEREF(__pyx_tuple__1234);
  __pyx_codeobj__1235 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_rmPoints, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1235)) __PYX_ERR(31, 103, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":106
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */
  __pyx_tuple__1236 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_others, __pyx_n_s_other); if (unlikely(!__pyx_tuple__1236)) __PYX_ERR(31, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1236);
  __Pyx_GIVEREF(__pyx_tuple__1236);
  __pyx_codeobj__1237 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_combineWith, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1237)) __PYX_ERR(31, 106, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__1238 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_mknp, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1238)) __PYX_ERR(31, 120, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_tuple__1239 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_includeOverflows, __pyx_n_s_includeMaskedBins, __pyx_n_s_rtn); if (unlikely(!__pyx_tuple__1239)) __PYX_ERR(31, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1239);
  __Pyx_GIVEREF(__pyx_tuple__1239);
  __pyx_codeobj__1240 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_mkScatter, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1240)) __PYX_ERR(31, 127, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_codeobj__1241 = (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_generated_Scatter1D_pyx, __pyx_n_s_scale, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1241)) __PYX_ERR(31, 137, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":142
 *         self.s1ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__1242 = (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_generated_Scatter1D_pyx, __pyx_n_s_scaleVal, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1242)) __PYX_ERR(31, 142, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":147
 *         self.s1ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_codeobj__1243 = (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_generated_Scatter1D_pyx, __pyx_n_s_scaleErr, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1243)) __PYX_ERR(31, 147, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":152
 *         self.s1ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_codeobj__1244 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_edges, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1244)) __PYX_ERR(31, 152, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_codeobj__1245 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_vals, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1245)) __PYX_ERR(31, 158, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":163
 *         return self._mknp(self.s1ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_codeobj__1246 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_mins, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1246)) __PYX_ERR(31, 163, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":168
 *         return self._mknp(self.s1ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_codeobj__1247 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_maxs, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1247)) __PYX_ERR(31, 168, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":173
 *         return self._mknp(self.s1ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_codeobj__1248 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_errs, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1248)) __PYX_ERR(31, 173, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":178
 *         return self._mknp(self.s1ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_codeobj__1249 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_errAvgs, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1249)) __PYX_ERR(31, 178, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":183
 *         return self._mknp(self.s1ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_codeobj__1250 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_lengthContent, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1250)) __PYX_ERR(31, 183, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1251 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_lengthMeta, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1251)) __PYX_ERR(31, 187, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s1ptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__1252 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_serializeContent, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1252)) __PYX_ERR(31, 191, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":195
 *         return self.s1ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__1253 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_deserializeContent, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1253)) __PYX_ERR(31, 195, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":201
 *         self.s1ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1254 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_serializeMeta, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1254)) __PYX_ERR(31, 201, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":205
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__1255 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_deserializeMeta, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1255)) __PYX_ERR(31, 205, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":211
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1256 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_scaleX, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1256)) __PYX_ERR(31, 211, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":227
 *     #    c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s1ptr().xVals())
 */
  __pyx_codeobj__1257 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xVals, 227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1257)) __PYX_ERR(31, 227, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":231
 *         return self._mknp(self.s1ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s1ptr().xMins())
 */
  __pyx_codeobj__1258 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xMins, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1258)) __PYX_ERR(31, 231, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":235
 *         return self._mknp(self.s1ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s1ptr().xMaxs())
 */
  __pyx_codeobj__1259 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xMaxs, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1259)) __PYX_ERR(31, 235, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":239
 *         return self._mknp(self.s1ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s1ptr().xMin())
 */
  __pyx_codeobj__1260 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xMin, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1260)) __PYX_ERR(31, 239, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":243
 *         return self._mknp(self.s1ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s1ptr().xMax())
 */
  __pyx_codeobj__1261 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xMax, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1261)) __PYX_ERR(31, 243, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":247
 *         return self._mknp(self.s1ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrs())
 */
  __pyx_codeobj__1262 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xErrs, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1262)) __PYX_ERR(31, 247, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":251
 *         return self._mknp(self.s1ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrAvgs())
 */
  __pyx_codeobj__1263 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter1D_pyx, __pyx_n_s_xErrAvgs, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1263)) __PYX_ERR(31, 251, __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__1264 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1264)) __PYX_ERR(1, 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__1265 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1265)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 */
  __pyx_codeobj__1266 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_init_1, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1266)) __PYX_ERR(32, 32, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_codeobj__1267 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_init_2, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1267)) __PYX_ERR(32, 35, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter2D."""
 */
  __pyx_codeobj__1268 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_clone, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1268)) __PYX_ERR(32, 39, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */
  __pyx_codeobj__1269 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_reset, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1269)) __PYX_ERR(32, 51, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__1270 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_numPoints, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1270)) __PYX_ERR(32, 56, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_codeobj__1271 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_points, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1271)) __PYX_ERR(32, 65, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":69
 *         return self._mknp([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__1272 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_point, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1272)) __PYX_ERR(32, 69, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_codeobj__1273 = (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__1225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_addPoint, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1273)) __PYX_ERR(32, 78, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(*args))
 * 
 */
  __pyx_codeobj__1274 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_addPoint_explicit, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1274)) __PYX_ERR(32, 86, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":89
 *         self.__addPoint_point(Point2D(*args))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */
  __pyx_codeobj__1275 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_addPoint_point, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1275)) __PYX_ERR(32, 89, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":92
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_codeobj__1276 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_addPoints, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1276)) __PYX_ERR(32, 92, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */
  __pyx_codeobj__1277 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_rmPoint, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1277)) __PYX_ERR(32, 100, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":103
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */
  __pyx_codeobj__1278 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_rmPoints, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1278)) __PYX_ERR(32, 103, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":106
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */
  __pyx_codeobj__1279 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_combineWith, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1279)) __PYX_ERR(32, 106, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__1280 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_mknp, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1280)) __PYX_ERR(32, 120, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_codeobj__1281 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_mkScatter, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1281)) __PYX_ERR(32, 127, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_codeobj__1282 = (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_generated_Scatter2D_pyx, __pyx_n_s_scale, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1282)) __PYX_ERR(32, 137, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":142
 *         self.s2ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__1283 = (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_generated_Scatter2D_pyx, __pyx_n_s_scaleVal, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1283)) __PYX_ERR(32, 142, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":147
 *         self.s2ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_codeobj__1284 = (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_generated_Scatter2D_pyx, __pyx_n_s_scaleErr, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1284)) __PYX_ERR(32, 147, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":152
 *         self.s2ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_codeobj__1285 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_edges, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1285)) __PYX_ERR(32, 152, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_codeobj__1286 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_vals, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1286)) __PYX_ERR(32, 158, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":163
 *         return self._mknp(self.s2ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_codeobj__1287 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_mins, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1287)) __PYX_ERR(32, 163, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":168
 *         return self._mknp(self.s2ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_codeobj__1288 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_maxs, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1288)) __PYX_ERR(32, 168, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":173
 *         return self._mknp(self.s2ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_codeobj__1289 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_errs, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1289)) __PYX_ERR(32, 173, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":178
 *         return self._mknp(self.s2ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_codeobj__1290 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_errAvgs, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1290)) __PYX_ERR(32, 178, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":183
 *         return self._mknp(self.s2ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_codeobj__1291 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_lengthContent, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1291)) __PYX_ERR(32, 183, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1292 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_lengthMeta, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1292)) __PYX_ERR(32, 187, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s2ptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__1293 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_serializeContent, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1293)) __PYX_ERR(32, 191, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":195
 *         return self.s2ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__1294 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_deserializeContent, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1294)) __PYX_ERR(32, 195, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":201
 *         self.s2ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1295 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_serializeMeta, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1295)) __PYX_ERR(32, 201, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":205
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__1296 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_deserializeMeta, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1296)) __PYX_ERR(32, 205, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":211
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1297 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_scaleX, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1297)) __PYX_ERR(32, 211, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":227
 *     #    c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s2ptr().xVals())
 */
  __pyx_codeobj__1298 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xVals, 227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1298)) __PYX_ERR(32, 227, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":231
 *         return self._mknp(self.s2ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s2ptr().xMins())
 */
  __pyx_codeobj__1299 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xMins, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1299)) __PYX_ERR(32, 231, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":235
 *         return self._mknp(self.s2ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s2ptr().xMaxs())
 */
  __pyx_codeobj__1300 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xMaxs, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1300)) __PYX_ERR(32, 235, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":239
 *         return self._mknp(self.s2ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s2ptr().xMin())
 */
  __pyx_codeobj__1301 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xMin, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1301)) __PYX_ERR(32, 239, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":243
 *         return self._mknp(self.s2ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s2ptr().xMax())
 */
  __pyx_codeobj__1302 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xMax, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1302)) __PYX_ERR(32, 243, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":247
 *         return self._mknp(self.s2ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrs())
 */
  __pyx_codeobj__1303 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xErrs, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1303)) __PYX_ERR(32, 247, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":251
 *         return self._mknp(self.s2ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrAvgs())
 */
  __pyx_codeobj__1304 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_xErrAvgs, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1304)) __PYX_ERR(32, 251, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":255
 *         return self._mknp(self.s2ptr().xErrAvgs())
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1305 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_scaleY, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1305)) __PYX_ERR(32, 255, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":271
 *     #    c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s2ptr().yVals())
 */
  __pyx_codeobj__1306 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yVals, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1306)) __PYX_ERR(32, 271, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":275
 *         return self._mknp(self.s2ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s2ptr().yMins())
 */
  __pyx_codeobj__1307 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yMins, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1307)) __PYX_ERR(32, 275, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":279
 *         return self._mknp(self.s2ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s2ptr().yMaxs())
 */
  __pyx_codeobj__1308 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yMaxs, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1308)) __PYX_ERR(32, 279, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":283
 *         return self._mknp(self.s2ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s2ptr().yMin())
 */
  __pyx_codeobj__1309 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yMin, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1309)) __PYX_ERR(32, 283, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":287
 *         return self._mknp(self.s2ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s2ptr().yMax())
 */
  __pyx_codeobj__1310 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yMax, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1310)) __PYX_ERR(32, 287, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":291
 *         return self._mknp(self.s2ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrs())
 */
  __pyx_codeobj__1311 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yErrs, 291, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1311)) __PYX_ERR(32, 291, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":295
 *         return self._mknp(self.s2ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrAvgs())
 */
  __pyx_codeobj__1312 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter2D_pyx, __pyx_n_s_yErrAvgs, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1312)) __PYX_ERR(32, 295, __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__1313 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1313)) __PYX_ERR(1, 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__1314 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1314)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 */
  __pyx_codeobj__1315 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_init_1, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1315)) __PYX_ERR(33, 32, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_codeobj__1316 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_init_2, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1316)) __PYX_ERR(33, 35, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter3D."""
 */
  __pyx_codeobj__1317 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_clone, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1317)) __PYX_ERR(33, 39, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */
  __pyx_codeobj__1318 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_reset, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1318)) __PYX_ERR(33, 51, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__1319 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_numPoints, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1319)) __PYX_ERR(33, 56, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_codeobj__1320 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_points, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1320)) __PYX_ERR(33, 65, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":69
 *         return self._mknp([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__1321 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_point, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1321)) __PYX_ERR(33, 69, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_codeobj__1322 = (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__1225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_addPoint, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1322)) __PYX_ERR(33, 78, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(*args))
 * 
 */
  __pyx_codeobj__1323 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_addPoint_explicit, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1323)) __PYX_ERR(33, 86, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":89
 *         self.__addPoint_point(Point3D(*args))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */
  __pyx_codeobj__1324 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_addPoint_point, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1324)) __PYX_ERR(33, 89, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":92
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_codeobj__1325 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_addPoints, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1325)) __PYX_ERR(33, 92, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */
  __pyx_codeobj__1326 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_rmPoint, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1326)) __PYX_ERR(33, 100, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":103
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */
  __pyx_codeobj__1327 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_rmPoints, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1327)) __PYX_ERR(33, 103, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":106
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */
  __pyx_codeobj__1328 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_combineWith, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1328)) __PYX_ERR(33, 106, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__1329 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_mknp, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1329)) __PYX_ERR(33, 120, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_codeobj__1330 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_mkScatter, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1330)) __PYX_ERR(33, 127, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_codeobj__1331 = (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_generated_Scatter3D_pyx, __pyx_n_s_scale, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1331)) __PYX_ERR(33, 137, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":142
 *         self.s3ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__1332 = (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_generated_Scatter3D_pyx, __pyx_n_s_scaleVal, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1332)) __PYX_ERR(33, 142, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":147
 *         self.s3ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_codeobj__1333 = (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_generated_Scatter3D_pyx, __pyx_n_s_scaleErr, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1333)) __PYX_ERR(33, 147, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":152
 *         self.s3ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_codeobj__1334 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_edges, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1334)) __PYX_ERR(33, 152, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_codeobj__1335 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_vals, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1335)) __PYX_ERR(33, 158, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":163
 *         return self._mknp(self.s3ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_codeobj__1336 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_mins, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1336)) __PYX_ERR(33, 163, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":168
 *         return self._mknp(self.s3ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_codeobj__1337 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_maxs, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1337)) __PYX_ERR(33, 168, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":173
 *         return self._mknp(self.s3ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_codeobj__1338 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_errs, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1338)) __PYX_ERR(33, 173, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":178
 *         return self._mknp(self.s3ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_codeobj__1339 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_errAvgs, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1339)) __PYX_ERR(33, 178, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":183
 *         return self._mknp(self.s3ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_codeobj__1340 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_lengthContent, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1340)) __PYX_ERR(33, 183, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1341 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_lengthMeta, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1341)) __PYX_ERR(33, 187, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s3ptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__1342 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_serializeContent, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1342)) __PYX_ERR(33, 191, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":195
 *         return self.s3ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__1343 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_deserializeContent, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1343)) __PYX_ERR(33, 195, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":201
 *         self.s3ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1344 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_serializeMeta, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1344)) __PYX_ERR(33, 201, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":205
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__1345 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_deserializeMeta, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1345)) __PYX_ERR(33, 205, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":211
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1346 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_scaleX, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1346)) __PYX_ERR(33, 211, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":227
 *     #    c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s3ptr().xVals())
 */
  __pyx_codeobj__1347 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xVals, 227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1347)) __PYX_ERR(33, 227, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":231
 *         return self._mknp(self.s3ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s3ptr().xMins())
 */
  __pyx_codeobj__1348 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xMins, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1348)) __PYX_ERR(33, 231, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":235
 *         return self._mknp(self.s3ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s3ptr().xMaxs())
 */
  __pyx_codeobj__1349 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xMaxs, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1349)) __PYX_ERR(33, 235, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":239
 *         return self._mknp(self.s3ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s3ptr().xMin())
 */
  __pyx_codeobj__1350 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xMin, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1350)) __PYX_ERR(33, 239, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":243
 *         return self._mknp(self.s3ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s3ptr().xMax())
 */
  __pyx_codeobj__1351 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xMax, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1351)) __PYX_ERR(33, 243, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":247
 *         return self._mknp(self.s3ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrs())
 */
  __pyx_codeobj__1352 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xErrs, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1352)) __PYX_ERR(33, 247, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":251
 *         return self._mknp(self.s3ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrAvgs())
 */
  __pyx_codeobj__1353 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_xErrAvgs, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1353)) __PYX_ERR(33, 251, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":255
 *         return self._mknp(self.s3ptr().xErrAvgs())
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1354 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_scaleY, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1354)) __PYX_ERR(33, 255, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":271
 *     #    c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s3ptr().yVals())
 */
  __pyx_codeobj__1355 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yVals, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1355)) __PYX_ERR(33, 271, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":275
 *         return self._mknp(self.s3ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s3ptr().yMins())
 */
  __pyx_codeobj__1356 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yMins, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1356)) __PYX_ERR(33, 275, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":279
 *         return self._mknp(self.s3ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s3ptr().yMaxs())
 */
  __pyx_codeobj__1357 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yMaxs, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1357)) __PYX_ERR(33, 279, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":283
 *         return self._mknp(self.s3ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s3ptr().yMin())
 */
  __pyx_codeobj__1358 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yMin, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1358)) __PYX_ERR(33, 283, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":287
 *         return self._mknp(self.s3ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s3ptr().yMax())
 */
  __pyx_codeobj__1359 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yMax, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1359)) __PYX_ERR(33, 287, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":291
 *         return self._mknp(self.s3ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrs())
 */
  __pyx_codeobj__1360 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yErrs, 291, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1360)) __PYX_ERR(33, 291, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":295
 *         return self._mknp(self.s3ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrAvgs())
 */
  __pyx_codeobj__1361 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_yErrAvgs, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1361)) __PYX_ERR(33, 295, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":299
 *         return self._mknp(self.s3ptr().yErrAvgs())
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__1362 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_scaleZ, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1362)) __PYX_ERR(33, 299, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":315
 *     #    c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         """All z values."""
 *         return self._mknp(self.s3ptr().zVals())
 */
  __pyx_codeobj__1363 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zVals, 315, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1363)) __PYX_ERR(33, 315, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":319
 *         return self._mknp(self.s3ptr().zVals())
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp(self.s3ptr().zMins())
 */
  __pyx_codeobj__1364 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zMins, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1364)) __PYX_ERR(33, 319, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":323
 *         return self._mknp(self.s3ptr().zMins())
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp(self.s3ptr().zMaxs())
 */
  __pyx_codeobj__1365 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zMaxs, 323, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1365)) __PYX_ERR(33, 323, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":327
 *         return self._mknp(self.s3ptr().zMaxs())
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central z values."""
 *         return self._mknp(self.s3ptr().zMin())
 */
  __pyx_codeobj__1366 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zMin, 327, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1366)) __PYX_ERR(33, 327, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":331
 *         return self._mknp(self.s3ptr().zMin())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central z values."""
 *         return self._mknp(self.s3ptr().zMax())
 */
  __pyx_codeobj__1367 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zMax, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1367)) __PYX_ERR(33, 331, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":335
 *         return self._mknp(self.s3ptr().zMax())
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrs())
 */
  __pyx_codeobj__1368 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zErrs, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1368)) __PYX_ERR(33, 335, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":339
 *         return self._mknp(self.s3ptr().zErrs())
 * 
 *     def zErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrAvgs())
 */
  __pyx_codeobj__1369 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter3D_pyx, __pyx_n_s_zErrAvgs, 339, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1369)) __PYX_ERR(33, 339, __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__1370 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1370)) __PYX_ERR(1, 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__1371 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1371)) __PYX_ERR(1, 3, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 */
  __pyx_codeobj__1372 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_init_1, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1372)) __PYX_ERR(34, 32, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_codeobj__1373 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_init_2, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1373)) __PYX_ERR(34, 35, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter4D."""
 */
  __pyx_codeobj__1374 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_clone, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1374)) __PYX_ERR(34, 39, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s4ptr().reset()
 */
  __pyx_codeobj__1375 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_reset, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1375)) __PYX_ERR(34, 51, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__1376 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_numPoints, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1376)) __PYX_ERR(34, 56, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_codeobj__1377 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_points, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1377)) __PYX_ERR(34, 65, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":69
 *         return self._mknp([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(Point4D, &self.s4ptr().point(i), self)
 */
  __pyx_codeobj__1378 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_point, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1378)) __PYX_ERR(34, 69, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_codeobj__1379 = (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__1225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_addPoint, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1379)) __PYX_ERR(34, 78, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point4D(*args))
 * 
 */
  __pyx_codeobj__1380 = (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__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_addPoint_explicit, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1380)) __PYX_ERR(34, 86, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":89
 *         self.__addPoint_point(Point4D(*args))
 * 
 *     def __addPoint_point(self, Point4D p):             # <<<<<<<<<<<<<<
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 */
  __pyx_codeobj__1381 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_addPoint_point, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1381)) __PYX_ERR(34, 89, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":92
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_codeobj__1382 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_addPoints, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1382)) __PYX_ERR(34, 92, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoint(idx)
 * 
 */
  __pyx_codeobj__1383 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_rmPoint, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1383)) __PYX_ERR(34, 100, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":103
 *         self.s4ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoints(idxs)
 * 
 */
  __pyx_codeobj__1384 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_rmPoints, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1384)) __PYX_ERR(34, 103, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":106
 *         self.s4ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 */
  __pyx_codeobj__1385 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_combineWith, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1385)) __PYX_ERR(34, 106, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__1386 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_mknp, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1386)) __PYX_ERR(34, 120, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 *         Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_codeobj__1387 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_mkScatter, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1387)) __PYX_ERR(34, 127, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_codeobj__1388 = (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_generated_Scatter4D_pyx, __pyx_n_s_scale, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1388)) __PYX_ERR(34, 137, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":142
 *         self.s4ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__1389 = (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_generated_Scatter4D_pyx, __pyx_n_s_scaleVal, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1389)) __PYX_ERR(34, 142, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":147
 *         self.s4ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_codeobj__1390 = (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_generated_Scatter4D_pyx, __pyx_n_s_scaleErr, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1390)) __PYX_ERR(34, 147, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":152
 *         self.s4ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_codeobj__1391 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_edges, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1391)) __PYX_ERR(34, 152, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_codeobj__1392 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_vals, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1392)) __PYX_ERR(34, 158, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":163
 *         return self._mknp(self.s4ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_codeobj__1393 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_mins, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1393)) __PYX_ERR(34, 163, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":168
 *         return self._mknp(self.s4ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_codeobj__1394 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_maxs, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1394)) __PYX_ERR(34, 168, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":173
 *         return self._mknp(self.s4ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_codeobj__1395 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_errs, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1395)) __PYX_ERR(34, 173, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":178
 *         return self._mknp(self.s4ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_codeobj__1396 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_errAvgs, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1396)) __PYX_ERR(34, 178, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":183
 *         return self._mknp(self.s4ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_codeobj__1397 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_lengthContent, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1397)) __PYX_ERR(34, 183, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1398 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_lengthMeta, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1398)) __PYX_ERR(34, 187, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s4ptr().serializeContent(fixed_length)
 */
  __pyx_codeobj__1399 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_serializeContent, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1399)) __PYX_ERR(34, 191, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":195
 *         return self.s4ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_codeobj__1400 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_deserializeContent, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1400)) __PYX_ERR(34, 195, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":201
 *         self.s4ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_codeobj__1401 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_serializeMeta, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1401)) __PYX_ERR(34, 201, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":205
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_codeobj__1402 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Scatter4D_pyx, __pyx_n_s_deserializeMeta, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1402)) __PYX_ERR(34, 205, __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__1403 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1403)) __PYX_ERR(1, 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__1404 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1404)) __PYX_ERR(1, 3, __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;
  if (__Pyx_CreateStringTabAndInitStrings() < 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_0 = PyFloat_FromDouble(0.0); if (unlikely(!__pyx_float_0_0)) __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_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 */
  if (likely(__Pyx_init_assertions_enabled() == 0)); else

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_11(__pyx_t_1, "yoda.util", "Base", sizeof(struct __pyx_obj_4yoda_4util_Base), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_4yoda_4util_Base),__Pyx_ImportType_CheckSize_Warn_3_0_11); 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_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(9, 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(9, 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(9, 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(9, 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(9, 3, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(9, 3, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AnalysisObject, (PyObject *) __pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(9, 3, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(9, 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(10, 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(10, 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(10, 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(10, 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(10, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Counter, (PyObject *) __pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #endif
  __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;
  #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_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(11, 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(11, 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_dealloc = __pyx_ptype_4yoda_4util_Base->tp_dealloc;
  __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(11, 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(11, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn0D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Estimate = &__pyx_vtable_4yoda_4core_Estimate;
  __pyx_vtable_4yoda_4core_Estimate.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Estimate.estptr = (YODA::Estimate *(*)(struct __pyx_obj_4yoda_4core_Estimate *))__pyx_f_4yoda_4core_8Estimate_estptr;
  #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_Estimate = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Estimate_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Estimate)) __PYX_ERR(12, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Estimate_spec, __pyx_ptype_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Estimate = &__pyx_type_4yoda_4core_Estimate;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Estimate->tp_dealloc = __pyx_ptype_4yoda_4util_Base->tp_dealloc;
  __pyx_ptype_4yoda_4core_Estimate->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Estimate->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Estimate->tp_dictoffset && __pyx_ptype_4yoda_4core_Estimate->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Estimate->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Estimate, __pyx_vtabptr_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Estimate, (PyObject *) __pyx_ptype_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Estimate) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Estimate0D = &__pyx_vtable_4yoda_4core_Estimate0D;
  __pyx_vtable_4yoda_4core_Estimate0D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Estimate0D.estptr = (YODA::Estimate0D *(*)(struct __pyx_obj_4yoda_4core_Estimate0D *))__pyx_f_4yoda_4core_10Estimate0D_estptr;
  #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, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Estimate0D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Estimate0D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Estimate0D)) __PYX_ERR(13, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Estimate0D_spec, __pyx_ptype_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Estimate0D = &__pyx_type_4yoda_4core_Estimate0D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Estimate0D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Estimate0D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Estimate0D->tp_dictoffset && __pyx_ptype_4yoda_4core_Estimate0D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Estimate0D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Estimate0D, __pyx_vtabptr_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Estimate0D, (PyObject *) __pyx_ptype_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Estimate0D) < 0) __PYX_ERR(13, 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(14, 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(14, 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(14, 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(14, 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(14, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point, (PyObject *) __pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Axis = &__pyx_vtable_4yoda_4core_Axis;
  __pyx_vtable_4yoda_4core_Axis.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Axis.axis_d_ptr = (YODA::Axis<double>  *(*)(struct __pyx_obj_4yoda_4core_Axis *))__pyx_f_4yoda_4core_4Axis_axis_d_ptr;
  __pyx_vtable_4yoda_4core_Axis.axis_i_ptr = (YODA::Axis<int>  *(*)(struct __pyx_obj_4yoda_4core_Axis *))__pyx_f_4yoda_4core_4Axis_axis_i_ptr;
  __pyx_vtable_4yoda_4core_Axis.axis_s_ptr = (YODA::Axis<std::string>  *(*)(struct __pyx_obj_4yoda_4core_Axis *))__pyx_f_4yoda_4core_4Axis_axis_s_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Axis = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Axis_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Axis)) __PYX_ERR(4, 9, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Axis_spec, __pyx_ptype_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Axis = &__pyx_type_4yoda_4core_Axis;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Axis->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Axis->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Axis->tp_dictoffset && __pyx_ptype_4yoda_4core_Axis->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Axis->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Axis, __pyx_vtabptr_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Axis, (PyObject *) __pyx_ptype_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Axis) < 0) __PYX_ERR(4, 9, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedEstimate1D = &__pyx_vtable_4yoda_4core_BinnedEstimate1D;
  __pyx_vtable_4yoda_4core_BinnedEstimate1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedEstimate1D.binned_d_ptr = (YODA::BinnedEstimate1D<double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *))__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_d_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate1D.binned_i_ptr = (YODA::BinnedEstimate1D<int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *))__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_i_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate1D.binned_s_ptr = (YODA::BinnedEstimate1D<std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate1D *))__pyx_f_4yoda_4core_16BinnedEstimate1D_binned_s_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedEstimate1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedEstimate1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedEstimate1D)) __PYX_ERR(6, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedEstimate1D_spec, __pyx_ptype_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedEstimate1D = &__pyx_type_4yoda_4core_BinnedEstimate1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedEstimate1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedEstimate1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedEstimate1D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedEstimate1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedEstimate1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_vtabptr_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedEstimate1D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate1D) < 0) __PYX_ERR(6, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedEstimate2D = &__pyx_vtable_4yoda_4core_BinnedEstimate2D;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_dd_ptr = (YODA::BinnedEstimate2D<double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_dd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_di_ptr = (YODA::BinnedEstimate2D<double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_di_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_ds_ptr = (YODA::BinnedEstimate2D<double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ds_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_id_ptr = (YODA::BinnedEstimate2D<int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_id_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_ii_ptr = (YODA::BinnedEstimate2D<int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ii_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_is_ptr = (YODA::BinnedEstimate2D<int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_is_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_sd_ptr = (YODA::BinnedEstimate2D<std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_sd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_si_ptr = (YODA::BinnedEstimate2D<std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_si_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate2D.binned_ss_ptr = (YODA::BinnedEstimate2D<std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate2D *))__pyx_f_4yoda_4core_16BinnedEstimate2D_binned_ss_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedEstimate2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedEstimate2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedEstimate2D)) __PYX_ERR(17, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedEstimate2D_spec, __pyx_ptype_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedEstimate2D = &__pyx_type_4yoda_4core_BinnedEstimate2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedEstimate2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedEstimate2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedEstimate2D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedEstimate2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedEstimate2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_vtabptr_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedEstimate2D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate2D) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedEstimate3D = &__pyx_vtable_4yoda_4core_BinnedEstimate3D;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_ddd_ptr = (YODA::BinnedEstimate3D<double,double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_ddi_ptr = (YODA::BinnedEstimate3D<double,double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ddi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dds_ptr = (YODA::BinnedEstimate3D<double,double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dds_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_did_ptr = (YODA::BinnedEstimate3D<double,int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_did_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dii_ptr = (YODA::BinnedEstimate3D<double,int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dii_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dis_ptr = (YODA::BinnedEstimate3D<double,int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dis_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dsd_ptr = (YODA::BinnedEstimate3D<double,std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dsi_ptr = (YODA::BinnedEstimate3D<double,std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dsi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_dss_ptr = (YODA::BinnedEstimate3D<double,std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_dss_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_idd_ptr = (YODA::BinnedEstimate3D<int,double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_idi_ptr = (YODA::BinnedEstimate3D<int,double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_idi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_ids_ptr = (YODA::BinnedEstimate3D<int,double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ids_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_iid_ptr = (YODA::BinnedEstimate3D<int,int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iid_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_iii_ptr = (YODA::BinnedEstimate3D<int,int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iii_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_iis_ptr = (YODA::BinnedEstimate3D<int,int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iis_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_isd_ptr = (YODA::BinnedEstimate3D<int,std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_isi_ptr = (YODA::BinnedEstimate3D<int,std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_isi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_iss_ptr = (YODA::BinnedEstimate3D<int,std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_iss_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sdd_ptr = (YODA::BinnedEstimate3D<std::string,double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sdi_ptr = (YODA::BinnedEstimate3D<std::string,double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sdi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sds_ptr = (YODA::BinnedEstimate3D<std::string,double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sds_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sid_ptr = (YODA::BinnedEstimate3D<std::string,int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sid_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sii_ptr = (YODA::BinnedEstimate3D<std::string,int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sii_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sis_ptr = (YODA::BinnedEstimate3D<std::string,int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sis_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_ssd_ptr = (YODA::BinnedEstimate3D<std::string,std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssd_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_ssi_ptr = (YODA::BinnedEstimate3D<std::string,std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_ssi_ptr;
  __pyx_vtable_4yoda_4core_BinnedEstimate3D.binned_sss_ptr = (YODA::BinnedEstimate3D<std::string,std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedEstimate3D *))__pyx_f_4yoda_4core_16BinnedEstimate3D_binned_sss_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedEstimate3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedEstimate3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedEstimate3D)) __PYX_ERR(18, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedEstimate3D_spec, __pyx_ptype_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedEstimate3D = &__pyx_type_4yoda_4core_BinnedEstimate3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedEstimate3D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedEstimate3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedEstimate3D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedEstimate3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedEstimate3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_vtabptr_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedEstimate3D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedEstimate3D) < 0) __PYX_ERR(18, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedHisto1D = &__pyx_vtable_4yoda_4core_BinnedHisto1D;
  __pyx_vtable_4yoda_4core_BinnedHisto1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedHisto1D.binned_d_ptr = (YODA::BinnedHisto1D<double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *))__pyx_f_4yoda_4core_13BinnedHisto1D_binned_d_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto1D.binned_i_ptr = (YODA::BinnedHisto1D<int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *))__pyx_f_4yoda_4core_13BinnedHisto1D_binned_i_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto1D.binned_s_ptr = (YODA::BinnedHisto1D<std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto1D *))__pyx_f_4yoda_4core_13BinnedHisto1D_binned_s_ptr;
  #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, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedHisto1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedHisto1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedHisto1D)) __PYX_ERR(19, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedHisto1D_spec, __pyx_ptype_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedHisto1D = &__pyx_type_4yoda_4core_BinnedHisto1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedHisto1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedHisto1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedHisto1D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedHisto1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedHisto1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_vtabptr_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedHisto1D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto1D) < 0) __PYX_ERR(19, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedHisto2D = &__pyx_vtable_4yoda_4core_BinnedHisto2D;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_dd_ptr = (YODA::BinnedHisto2D<double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_dd_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_di_ptr = (YODA::BinnedHisto2D<double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_di_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_ds_ptr = (YODA::BinnedHisto2D<double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ds_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_id_ptr = (YODA::BinnedHisto2D<int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_id_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_ii_ptr = (YODA::BinnedHisto2D<int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ii_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_is_ptr = (YODA::BinnedHisto2D<int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_is_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_sd_ptr = (YODA::BinnedHisto2D<std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_sd_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_si_ptr = (YODA::BinnedHisto2D<std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_si_ptr;
  __pyx_vtable_4yoda_4core_BinnedHisto2D.binned_ss_ptr = (YODA::BinnedHisto2D<std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto2D *))__pyx_f_4yoda_4core_13BinnedHisto2D_binned_ss_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedHisto2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedHisto2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedHisto2D)) __PYX_ERR(20, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedHisto2D_spec, __pyx_ptype_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedHisto2D = &__pyx_type_4yoda_4core_BinnedHisto2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedHisto2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedHisto2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedHisto2D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedHisto2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedHisto2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_vtabptr_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedHisto2D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedHisto3D = &__pyx_vtable_4yoda_4core_BinnedHisto3D;
  __pyx_vtable_4yoda_4core_BinnedHisto3D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedHisto3D.binned_ddd_ptr = (YODA::BinnedHisto3D<double,double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedHisto3D *))__pyx_f_4yoda_4core_13BinnedHisto3D_binned_ddd_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedHisto3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedHisto3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedHisto3D)) __PYX_ERR(21, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedHisto3D_spec, __pyx_ptype_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedHisto3D = &__pyx_type_4yoda_4core_BinnedHisto3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedHisto3D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedHisto3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedHisto3D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedHisto3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedHisto3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_vtabptr_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedHisto3D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedHisto3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedProfile1D = &__pyx_vtable_4yoda_4core_BinnedProfile1D;
  __pyx_vtable_4yoda_4core_BinnedProfile1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedProfile1D.binned_d_ptr = (YODA::BinnedProfile1D<double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *))__pyx_f_4yoda_4core_15BinnedProfile1D_binned_d_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile1D.binned_i_ptr = (YODA::BinnedProfile1D<int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *))__pyx_f_4yoda_4core_15BinnedProfile1D_binned_i_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile1D.binned_s_ptr = (YODA::BinnedProfile1D<std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile1D *))__pyx_f_4yoda_4core_15BinnedProfile1D_binned_s_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedProfile1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedProfile1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedProfile1D)) __PYX_ERR(22, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedProfile1D_spec, __pyx_ptype_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedProfile1D = &__pyx_type_4yoda_4core_BinnedProfile1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedProfile1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedProfile1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedProfile1D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedProfile1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedProfile1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_vtabptr_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedProfile1D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedProfile1D) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_BinnedProfile2D = &__pyx_vtable_4yoda_4core_BinnedProfile2D;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_dd_ptr = (YODA::BinnedProfile2D<double,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_dd_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_di_ptr = (YODA::BinnedProfile2D<double,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_di_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_ds_ptr = (YODA::BinnedProfile2D<double,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ds_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_id_ptr = (YODA::BinnedProfile2D<int,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_id_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_ii_ptr = (YODA::BinnedProfile2D<int,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ii_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_is_ptr = (YODA::BinnedProfile2D<int,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_is_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_sd_ptr = (YODA::BinnedProfile2D<std::string,double>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_sd_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_si_ptr = (YODA::BinnedProfile2D<std::string,int>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_si_ptr;
  __pyx_vtable_4yoda_4core_BinnedProfile2D.binned_ss_ptr = (YODA::BinnedProfile2D<std::string,std::string>  *(*)(struct __pyx_obj_4yoda_4core_BinnedProfile2D *))__pyx_f_4yoda_4core_15BinnedProfile2D_binned_ss_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_BinnedProfile2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_BinnedProfile2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_BinnedProfile2D)) __PYX_ERR(23, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_BinnedProfile2D_spec, __pyx_ptype_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_BinnedProfile2D = &__pyx_type_4yoda_4core_BinnedProfile2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_BinnedProfile2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_BinnedProfile2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_BinnedProfile2D->tp_dictoffset && __pyx_ptype_4yoda_4core_BinnedProfile2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_BinnedProfile2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_vtabptr_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BinnedProfile2D, (PyObject *) __pyx_ptype_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_BinnedProfile2D) < 0) __PYX_ERR(23, 10, __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;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 9, __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(24, 9, __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(24, 9, __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_dealloc = __pyx_ptype_4yoda_4util_Base->tp_dealloc;
  __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(24, 9, __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(24, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(24, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn1D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(24, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(24, 9, __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;
  #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, 9, __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(25, 9, __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(25, 9, __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_dealloc = __pyx_ptype_4yoda_4util_Base->tp_dealloc;
  __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(25, 9, __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(25, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(25, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn2D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(25, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(25, 9, __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;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 9, __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(26, 9, __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(26, 9, __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_dealloc = __pyx_ptype_4yoda_4util_Base->tp_dealloc;
  __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(26, 9, __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(26, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(26, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn3D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(26, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(26, 9, __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(27, 9, __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(27, 9, __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(27, 9, __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(27, 9, __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(27, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(27, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point1D, (PyObject *) __pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(27, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(27, 9, __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(28, 9, __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(28, 9, __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(28, 9, __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(28, 9, __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(28, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(28, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point2D, (PyObject *) __pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(28, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(28, 9, __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(29, 9, __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(29, 9, __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(29, 9, __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(29, 9, __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(29, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(29, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point3D, (PyObject *) __pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(29, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(29, 9, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Point4D = &__pyx_vtable_4yoda_4core_Point4D;
  __pyx_vtable_4yoda_4core_Point4D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Point;
  __pyx_vtable_4yoda_4core_Point4D.p4ptr = (YODA::Point4D *(*)(struct __pyx_obj_4yoda_4core_Point4D *))__pyx_f_4yoda_4core_7Point4D_p4ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Point); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Point4D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Point4D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Point4D)) __PYX_ERR(30, 9, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Point4D_spec, __pyx_ptype_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Point4D = &__pyx_type_4yoda_4core_Point4D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Point4D->tp_base = __pyx_ptype_4yoda_4core_Point;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Point4D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Point4D->tp_dictoffset && __pyx_ptype_4yoda_4core_Point4D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Point4D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Point4D, __pyx_vtabptr_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point4D, (PyObject *) __pyx_ptype_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point4D) < 0) __PYX_ERR(30, 9, __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(31, 9, __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(31, 9, __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(31, 9, __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(31, 9, __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(31, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(31, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter1D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(31, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(31, 9, __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(32, 9, __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(32, 9, __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(32, 9, __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(32, 9, __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(32, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(32, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter2D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(32, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(32, 9, __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(33, 9, __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(33, 9, __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(33, 9, __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(33, 9, __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(33, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(33, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter3D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(33, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(33, 9, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Scatter4D = &__pyx_vtable_4yoda_4core_Scatter4D;
  __pyx_vtable_4yoda_4core_Scatter4D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Scatter4D.s4ptr = (YODA::Scatter4D *(*)(struct __pyx_obj_4yoda_4core_Scatter4D *))__pyx_f_4yoda_4core_9Scatter4D_s4ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Scatter4D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Scatter4D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Scatter4D)) __PYX_ERR(34, 9, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Scatter4D_spec, __pyx_ptype_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Scatter4D = &__pyx_type_4yoda_4core_Scatter4D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Scatter4D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Scatter4D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Scatter4D->tp_dictoffset && __pyx_ptype_4yoda_4core_Scatter4D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Scatter4D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Scatter4D, __pyx_vtabptr_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter4D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter4D) < 0) __PYX_ERR(34, 9, __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(9, 38, __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(9, 38, __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(9, 38, __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(9, 42, __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(9, 42, __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(9, 42, __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(0, 11, __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(0, 11, __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(0, 11, __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(4, 38, __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(4, 38, __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(4, 38, __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(4, 42, __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(4, 42, __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(4, 42, __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_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr)) __PYX_ERR(4, 46, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_5_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr) < 0) __PYX_ERR(4, 46, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_5_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_5_genexpr) < 0) __PYX_ERR(4, 46, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_5_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_5_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_5_genexpr->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, 58, __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, 58, __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, 58, __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, 62, __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, 62, __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, 62, __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
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr)) __PYX_ERR(6, 66, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_8_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr) < 0) __PYX_ERR(6, 66, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_8_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_8_genexpr) < 0) __PYX_ERR(6, 66, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_8_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_8_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_8_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr)) __PYX_ERR(17, 83, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_9_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr) < 0) __PYX_ERR(17, 83, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_9_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_9_genexpr) < 0) __PYX_ERR(17, 83, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_9_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_9_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_9_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr)) __PYX_ERR(17, 84, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_10_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr) < 0) __PYX_ERR(17, 84, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_10_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_10_genexpr) < 0) __PYX_ERR(17, 84, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_10_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_10_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_10_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr)) __PYX_ERR(17, 88, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_11_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr) < 0) __PYX_ERR(17, 88, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_11_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_11_genexpr) < 0) __PYX_ERR(17, 88, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_11_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_11_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_11_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr)) __PYX_ERR(17, 89, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_12_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr) < 0) __PYX_ERR(17, 89, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_12_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_12_genexpr) < 0) __PYX_ERR(17, 89, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_12_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_12_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_12_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr)) __PYX_ERR(17, 93, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_13_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr) < 0) __PYX_ERR(17, 93, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_13_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_13_genexpr) < 0) __PYX_ERR(17, 93, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_13_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_13_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_13_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr)) __PYX_ERR(17, 94, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_14_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr) < 0) __PYX_ERR(17, 94, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_14_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_14_genexpr) < 0) __PYX_ERR(17, 94, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_14_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_14_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_14_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr)) __PYX_ERR(17, 98, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_15_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr) < 0) __PYX_ERR(17, 98, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_15_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_15_genexpr) < 0) __PYX_ERR(17, 98, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_15_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_15_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_15_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr)) __PYX_ERR(17, 99, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_16_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr) < 0) __PYX_ERR(17, 99, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_16_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_16_genexpr) < 0) __PYX_ERR(17, 99, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_16_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_16_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_16_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr)) __PYX_ERR(17, 103, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_17_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr) < 0) __PYX_ERR(17, 103, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_17_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_17_genexpr) < 0) __PYX_ERR(17, 103, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_17_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_17_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_17_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr)) __PYX_ERR(17, 104, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_18_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr) < 0) __PYX_ERR(17, 104, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_18_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_18_genexpr) < 0) __PYX_ERR(17, 104, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_18_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_18_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_18_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr)) __PYX_ERR(17, 108, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_19_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr) < 0) __PYX_ERR(17, 108, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_19_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_19_genexpr) < 0) __PYX_ERR(17, 108, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_19_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_19_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_19_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr)) __PYX_ERR(17, 109, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_20_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr) < 0) __PYX_ERR(17, 109, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_20_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_20_genexpr) < 0) __PYX_ERR(17, 109, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_20_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_20_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_20_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr)) __PYX_ERR(17, 113, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_21_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr) < 0) __PYX_ERR(17, 113, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_21_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_21_genexpr) < 0) __PYX_ERR(17, 113, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_21_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_21_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_21_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr)) __PYX_ERR(17, 114, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_22_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr) < 0) __PYX_ERR(17, 114, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_22_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_22_genexpr) < 0) __PYX_ERR(17, 114, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_22_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_22_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_22_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr)) __PYX_ERR(17, 118, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_23_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr) < 0) __PYX_ERR(17, 118, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_23_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_23_genexpr) < 0) __PYX_ERR(17, 118, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_23_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_23_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_23_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr)) __PYX_ERR(17, 119, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_24_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr) < 0) __PYX_ERR(17, 119, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_24_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_24_genexpr) < 0) __PYX_ERR(17, 119, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_24_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_24_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_24_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr)) __PYX_ERR(17, 123, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_25_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr) < 0) __PYX_ERR(17, 123, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_25_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_25_genexpr) < 0) __PYX_ERR(17, 123, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_25_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_25_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_25_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr)) __PYX_ERR(17, 124, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_26_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr) < 0) __PYX_ERR(17, 124, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_26_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_26_genexpr) < 0) __PYX_ERR(17, 124, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_26_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_26_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_26_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr)) __PYX_ERR(18, 156, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_27_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr) < 0) __PYX_ERR(18, 156, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_27_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_27_genexpr) < 0) __PYX_ERR(18, 156, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_27_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_27_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_27_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr)) __PYX_ERR(18, 157, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_28_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr) < 0) __PYX_ERR(18, 157, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_28_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_28_genexpr) < 0) __PYX_ERR(18, 157, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_28_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_28_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_28_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr)) __PYX_ERR(18, 158, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_29_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr) < 0) __PYX_ERR(18, 158, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_29_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_29_genexpr) < 0) __PYX_ERR(18, 158, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_29_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_29_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_29_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr)) __PYX_ERR(18, 162, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_30_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr) < 0) __PYX_ERR(18, 162, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_30_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_30_genexpr) < 0) __PYX_ERR(18, 162, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_30_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_30_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_30_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr)) __PYX_ERR(18, 163, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_31_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr) < 0) __PYX_ERR(18, 163, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_31_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_31_genexpr) < 0) __PYX_ERR(18, 163, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_31_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_31_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_31_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr)) __PYX_ERR(18, 164, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_32_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr) < 0) __PYX_ERR(18, 164, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_32_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_32_genexpr) < 0) __PYX_ERR(18, 164, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_32_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_32_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_32_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr)) __PYX_ERR(18, 168, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_33_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr) < 0) __PYX_ERR(18, 168, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_33_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_33_genexpr) < 0) __PYX_ERR(18, 168, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_33_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_33_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_33_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr)) __PYX_ERR(18, 169, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_34_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr) < 0) __PYX_ERR(18, 169, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_34_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_34_genexpr) < 0) __PYX_ERR(18, 169, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_34_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_34_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_34_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr)) __PYX_ERR(18, 170, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_35_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr) < 0) __PYX_ERR(18, 170, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_35_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_35_genexpr) < 0) __PYX_ERR(18, 170, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_35_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_35_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_35_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr)) __PYX_ERR(18, 174, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_36_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr) < 0) __PYX_ERR(18, 174, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_36_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_36_genexpr) < 0) __PYX_ERR(18, 174, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_36_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_36_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_36_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr)) __PYX_ERR(18, 175, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_37_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr) < 0) __PYX_ERR(18, 175, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_37_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_37_genexpr) < 0) __PYX_ERR(18, 175, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_37_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_37_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_37_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr)) __PYX_ERR(18, 176, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_38_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr) < 0) __PYX_ERR(18, 176, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_38_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_38_genexpr) < 0) __PYX_ERR(18, 176, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_38_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_38_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_38_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr)) __PYX_ERR(18, 180, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_39_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr) < 0) __PYX_ERR(18, 180, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_39_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_39_genexpr) < 0) __PYX_ERR(18, 180, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_39_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_39_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_39_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr)) __PYX_ERR(18, 181, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_40_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr) < 0) __PYX_ERR(18, 181, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_40_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_40_genexpr) < 0) __PYX_ERR(18, 181, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_40_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_40_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_40_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr)) __PYX_ERR(18, 182, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_41_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr) < 0) __PYX_ERR(18, 182, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_41_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_41_genexpr) < 0) __PYX_ERR(18, 182, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_41_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_41_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_41_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr)) __PYX_ERR(18, 186, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_42_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr) < 0) __PYX_ERR(18, 186, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_42_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_42_genexpr) < 0) __PYX_ERR(18, 186, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_42_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_42_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_42_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr)) __PYX_ERR(18, 187, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_43_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr) < 0) __PYX_ERR(18, 187, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_43_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_43_genexpr) < 0) __PYX_ERR(18, 187, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_43_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_43_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_43_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr)) __PYX_ERR(18, 188, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_44_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr) < 0) __PYX_ERR(18, 188, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_44_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_44_genexpr) < 0) __PYX_ERR(18, 188, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_44_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_44_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_44_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr)) __PYX_ERR(18, 192, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_45_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr) < 0) __PYX_ERR(18, 192, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_45_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_45_genexpr) < 0) __PYX_ERR(18, 192, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_45_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_45_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_45_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr)) __PYX_ERR(18, 193, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_46_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr) < 0) __PYX_ERR(18, 193, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_46_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_46_genexpr) < 0) __PYX_ERR(18, 193, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_46_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_46_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_46_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr)) __PYX_ERR(18, 194, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_47_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr) < 0) __PYX_ERR(18, 194, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_47_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_47_genexpr) < 0) __PYX_ERR(18, 194, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_47_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_47_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_47_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr)) __PYX_ERR(18, 198, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_48_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr) < 0) __PYX_ERR(18, 198, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_48_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_48_genexpr) < 0) __PYX_ERR(18, 198, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_48_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_48_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_48_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr)) __PYX_ERR(18, 199, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_49_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr) < 0) __PYX_ERR(18, 199, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_49_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_49_genexpr) < 0) __PYX_ERR(18, 199, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_49_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_49_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_49_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr)) __PYX_ERR(18, 200, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_50_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr) < 0) __PYX_ERR(18, 200, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_50_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_50_genexpr) < 0) __PYX_ERR(18, 200, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_50_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_50_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_50_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr)) __PYX_ERR(18, 204, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_51_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr) < 0) __PYX_ERR(18, 204, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_51_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_51_genexpr) < 0) __PYX_ERR(18, 204, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_51_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_51_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_51_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr)) __PYX_ERR(18, 205, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_52_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr) < 0) __PYX_ERR(18, 205, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_52_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_52_genexpr) < 0) __PYX_ERR(18, 205, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_52_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_52_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_52_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr)) __PYX_ERR(18, 206, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_53_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr) < 0) __PYX_ERR(18, 206, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_53_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_53_genexpr) < 0) __PYX_ERR(18, 206, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_53_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_53_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_53_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr)) __PYX_ERR(18, 210, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_54_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr) < 0) __PYX_ERR(18, 210, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_54_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_54_genexpr) < 0) __PYX_ERR(18, 210, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_54_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_54_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_54_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr)) __PYX_ERR(18, 211, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_55_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr) < 0) __PYX_ERR(18, 211, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_55_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_55_genexpr) < 0) __PYX_ERR(18, 211, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_55_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_55_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_55_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr)) __PYX_ERR(18, 212, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_56_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr) < 0) __PYX_ERR(18, 212, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_56_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_56_genexpr) < 0) __PYX_ERR(18, 212, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_56_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_56_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_56_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr)) __PYX_ERR(18, 216, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_57_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr) < 0) __PYX_ERR(18, 216, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_57_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_57_genexpr) < 0) __PYX_ERR(18, 216, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_57_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_57_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_57_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr)) __PYX_ERR(18, 217, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_58_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr) < 0) __PYX_ERR(18, 217, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_58_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_58_genexpr) < 0) __PYX_ERR(18, 217, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_58_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_58_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_58_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr)) __PYX_ERR(18, 218, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_59_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr) < 0) __PYX_ERR(18, 218, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_59_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_59_genexpr) < 0) __PYX_ERR(18, 218, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_59_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_59_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_59_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr)) __PYX_ERR(18, 222, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_60_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr) < 0) __PYX_ERR(18, 222, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_60_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_60_genexpr) < 0) __PYX_ERR(18, 222, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_60_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_60_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_60_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr)) __PYX_ERR(18, 223, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_61_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr) < 0) __PYX_ERR(18, 223, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_61_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_61_genexpr) < 0) __PYX_ERR(18, 223, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_61_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_61_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_61_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr)) __PYX_ERR(18, 224, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_62_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr) < 0) __PYX_ERR(18, 224, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_62_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_62_genexpr) < 0) __PYX_ERR(18, 224, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_62_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_62_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_62_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr)) __PYX_ERR(18, 228, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_63_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr) < 0) __PYX_ERR(18, 228, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_63_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_63_genexpr) < 0) __PYX_ERR(18, 228, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_63_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_63_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_63_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr)) __PYX_ERR(18, 229, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_64_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr) < 0) __PYX_ERR(18, 229, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_64_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_64_genexpr) < 0) __PYX_ERR(18, 229, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_64_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_64_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_64_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr)) __PYX_ERR(18, 230, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_65_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr) < 0) __PYX_ERR(18, 230, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_65_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_65_genexpr) < 0) __PYX_ERR(18, 230, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_65_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_65_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_65_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr)) __PYX_ERR(18, 234, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_66_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr) < 0) __PYX_ERR(18, 234, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_66_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_66_genexpr) < 0) __PYX_ERR(18, 234, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_66_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_66_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_66_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr)) __PYX_ERR(18, 235, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_67_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr) < 0) __PYX_ERR(18, 235, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_67_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_67_genexpr) < 0) __PYX_ERR(18, 235, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_67_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_67_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_67_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr)) __PYX_ERR(18, 236, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_68_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr) < 0) __PYX_ERR(18, 236, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_68_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_68_genexpr) < 0) __PYX_ERR(18, 236, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_68_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_68_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_68_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr)) __PYX_ERR(18, 240, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_69_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr) < 0) __PYX_ERR(18, 240, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_69_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_69_genexpr) < 0) __PYX_ERR(18, 240, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_69_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_69_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_69_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr)) __PYX_ERR(18, 241, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_70_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr) < 0) __PYX_ERR(18, 241, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_70_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_70_genexpr) < 0) __PYX_ERR(18, 241, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_70_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_70_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_70_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr)) __PYX_ERR(18, 242, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_71_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr) < 0) __PYX_ERR(18, 242, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_71_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_71_genexpr) < 0) __PYX_ERR(18, 242, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_71_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_71_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_71_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr)) __PYX_ERR(18, 246, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_72_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr) < 0) __PYX_ERR(18, 246, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_72_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_72_genexpr) < 0) __PYX_ERR(18, 246, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_72_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_72_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_72_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr)) __PYX_ERR(18, 247, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_73_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr) < 0) __PYX_ERR(18, 247, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_73_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_73_genexpr) < 0) __PYX_ERR(18, 247, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_73_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_73_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_73_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr)) __PYX_ERR(18, 248, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_74_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr) < 0) __PYX_ERR(18, 248, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_74_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_74_genexpr) < 0) __PYX_ERR(18, 248, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_74_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_74_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_74_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr)) __PYX_ERR(18, 252, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_75_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr) < 0) __PYX_ERR(18, 252, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_75_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_75_genexpr) < 0) __PYX_ERR(18, 252, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_75_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_75_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_75_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr)) __PYX_ERR(18, 253, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_76_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr) < 0) __PYX_ERR(18, 253, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_76_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_76_genexpr) < 0) __PYX_ERR(18, 253, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_76_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_76_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_76_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr)) __PYX_ERR(18, 254, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_77_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr) < 0) __PYX_ERR(18, 254, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_77_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_77_genexpr) < 0) __PYX_ERR(18, 254, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_77_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_77_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_77_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr)) __PYX_ERR(18, 258, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_78_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr) < 0) __PYX_ERR(18, 258, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_78_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_78_genexpr) < 0) __PYX_ERR(18, 258, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_78_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_78_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_78_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr)) __PYX_ERR(18, 259, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_79_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr) < 0) __PYX_ERR(18, 259, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_79_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_79_genexpr) < 0) __PYX_ERR(18, 259, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_79_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_79_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_79_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr)) __PYX_ERR(18, 260, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_80_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr) < 0) __PYX_ERR(18, 260, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_80_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_80_genexpr) < 0) __PYX_ERR(18, 260, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_80_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_80_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_80_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr)) __PYX_ERR(18, 264, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_81_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr) < 0) __PYX_ERR(18, 264, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_81_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_81_genexpr) < 0) __PYX_ERR(18, 264, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_81_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_81_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_81_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr)) __PYX_ERR(18, 265, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_82_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr) < 0) __PYX_ERR(18, 265, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_82_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_82_genexpr) < 0) __PYX_ERR(18, 265, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_82_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_82_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_82_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr)) __PYX_ERR(18, 266, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_83_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr) < 0) __PYX_ERR(18, 266, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_83_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_83_genexpr) < 0) __PYX_ERR(18, 266, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_83_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_83_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_83_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr)) __PYX_ERR(18, 270, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_84_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr) < 0) __PYX_ERR(18, 270, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_84_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_84_genexpr) < 0) __PYX_ERR(18, 270, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_84_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_84_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_84_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr)) __PYX_ERR(18, 271, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_85_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr) < 0) __PYX_ERR(18, 271, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_85_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_85_genexpr) < 0) __PYX_ERR(18, 271, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_85_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_85_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_85_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr)) __PYX_ERR(18, 272, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_86_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr) < 0) __PYX_ERR(18, 272, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_86_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_86_genexpr) < 0) __PYX_ERR(18, 272, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_86_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_86_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_86_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr)) __PYX_ERR(18, 276, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_87_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr) < 0) __PYX_ERR(18, 276, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_87_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_87_genexpr) < 0) __PYX_ERR(18, 276, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_87_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_87_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_87_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr)) __PYX_ERR(18, 277, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_88_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr) < 0) __PYX_ERR(18, 277, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_88_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_88_genexpr) < 0) __PYX_ERR(18, 277, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_88_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_88_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_88_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr)) __PYX_ERR(18, 278, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_89_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr) < 0) __PYX_ERR(18, 278, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_89_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_89_genexpr) < 0) __PYX_ERR(18, 278, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_89_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_89_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_89_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr)) __PYX_ERR(18, 282, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_90_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr) < 0) __PYX_ERR(18, 282, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_90_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_90_genexpr) < 0) __PYX_ERR(18, 282, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_90_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_90_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_90_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr)) __PYX_ERR(18, 283, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_91_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr) < 0) __PYX_ERR(18, 283, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_91_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_91_genexpr) < 0) __PYX_ERR(18, 283, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_91_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_91_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_91_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr)) __PYX_ERR(18, 284, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_92_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr) < 0) __PYX_ERR(18, 284, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_92_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_92_genexpr) < 0) __PYX_ERR(18, 284, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_92_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_92_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_92_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr)) __PYX_ERR(18, 288, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_93_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr) < 0) __PYX_ERR(18, 288, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_93_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_93_genexpr) < 0) __PYX_ERR(18, 288, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_93_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_93_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_93_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr)) __PYX_ERR(18, 289, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_94_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr) < 0) __PYX_ERR(18, 289, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_94_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_94_genexpr) < 0) __PYX_ERR(18, 289, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_94_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_94_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_94_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr)) __PYX_ERR(18, 290, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_95_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr) < 0) __PYX_ERR(18, 290, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_95_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_95_genexpr) < 0) __PYX_ERR(18, 290, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_95_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_95_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_95_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr)) __PYX_ERR(18, 294, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_96_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr) < 0) __PYX_ERR(18, 294, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_96_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_96_genexpr) < 0) __PYX_ERR(18, 294, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_96_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_96_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_96_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr)) __PYX_ERR(18, 295, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_97_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr) < 0) __PYX_ERR(18, 295, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_97_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_97_genexpr) < 0) __PYX_ERR(18, 295, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_97_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_97_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_97_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr)) __PYX_ERR(18, 296, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_98_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr) < 0) __PYX_ERR(18, 296, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_98_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_98_genexpr) < 0) __PYX_ERR(18, 296, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_98_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_98_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_98_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr)) __PYX_ERR(18, 300, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_99_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr) < 0) __PYX_ERR(18, 300, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_99_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_99_genexpr) < 0) __PYX_ERR(18, 300, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_99_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_99_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_99_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr)) __PYX_ERR(18, 301, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_100_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr) < 0) __PYX_ERR(18, 301, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_100_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_100_genexpr) < 0) __PYX_ERR(18, 301, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_100_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_100_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_100_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr)) __PYX_ERR(18, 302, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_101_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr) < 0) __PYX_ERR(18, 302, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_101_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_101_genexpr) < 0) __PYX_ERR(18, 302, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_101_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_101_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_101_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr)) __PYX_ERR(18, 306, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_102_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr) < 0) __PYX_ERR(18, 306, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_102_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_102_genexpr) < 0) __PYX_ERR(18, 306, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_102_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_102_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_102_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr)) __PYX_ERR(18, 307, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_103_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr) < 0) __PYX_ERR(18, 307, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_103_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_103_genexpr) < 0) __PYX_ERR(18, 307, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_103_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_103_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_103_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr)) __PYX_ERR(18, 308, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_104_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr) < 0) __PYX_ERR(18, 308, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_104_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_104_genexpr) < 0) __PYX_ERR(18, 308, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_104_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_104_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_104_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr)) __PYX_ERR(18, 312, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_105_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr) < 0) __PYX_ERR(18, 312, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_105_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_105_genexpr) < 0) __PYX_ERR(18, 312, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_105_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_105_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_105_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr)) __PYX_ERR(18, 313, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_106_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr) < 0) __PYX_ERR(18, 313, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_106_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_106_genexpr) < 0) __PYX_ERR(18, 313, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_106_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_106_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_106_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr)) __PYX_ERR(18, 314, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_107_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr) < 0) __PYX_ERR(18, 314, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_107_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_107_genexpr) < 0) __PYX_ERR(18, 314, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_107_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_107_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_107_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr)) __PYX_ERR(19, 58, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_108_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr) < 0) __PYX_ERR(19, 58, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_108_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_108_genexpr) < 0) __PYX_ERR(19, 58, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_108_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_108_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_108_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr)) __PYX_ERR(19, 62, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_109_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr) < 0) __PYX_ERR(19, 62, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_109_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_109_genexpr) < 0) __PYX_ERR(19, 62, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_109_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_109_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_109_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr)) __PYX_ERR(19, 66, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_110_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr) < 0) __PYX_ERR(19, 66, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_110_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_110_genexpr) < 0) __PYX_ERR(19, 66, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_110_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_110_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_110_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr)) __PYX_ERR(20, 83, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_111_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr) < 0) __PYX_ERR(20, 83, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_111_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_111_genexpr) < 0) __PYX_ERR(20, 83, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_111_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_111_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_111_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr)) __PYX_ERR(20, 84, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_112_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr) < 0) __PYX_ERR(20, 84, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_112_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_112_genexpr) < 0) __PYX_ERR(20, 84, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_112_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_112_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_112_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr)) __PYX_ERR(20, 88, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_113_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr) < 0) __PYX_ERR(20, 88, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_113_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_113_genexpr) < 0) __PYX_ERR(20, 88, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_113_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_113_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_113_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr)) __PYX_ERR(20, 89, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_114_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr) < 0) __PYX_ERR(20, 89, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_114_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_114_genexpr) < 0) __PYX_ERR(20, 89, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_114_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_114_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_114_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr)) __PYX_ERR(20, 93, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_115_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr) < 0) __PYX_ERR(20, 93, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_115_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_115_genexpr) < 0) __PYX_ERR(20, 93, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_115_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_115_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_115_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr)) __PYX_ERR(20, 94, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_116_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr) < 0) __PYX_ERR(20, 94, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_116_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_116_genexpr) < 0) __PYX_ERR(20, 94, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_116_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_116_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_116_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr)) __PYX_ERR(20, 98, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_117_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr) < 0) __PYX_ERR(20, 98, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_117_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_117_genexpr) < 0) __PYX_ERR(20, 98, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_117_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_117_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_117_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr)) __PYX_ERR(20, 99, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_118_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr) < 0) __PYX_ERR(20, 99, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_118_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_118_genexpr) < 0) __PYX_ERR(20, 99, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_118_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_118_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_118_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr)) __PYX_ERR(20, 103, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_119_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr) < 0) __PYX_ERR(20, 103, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_119_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_119_genexpr) < 0) __PYX_ERR(20, 103, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_119_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_119_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_119_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr)) __PYX_ERR(20, 104, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_120_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr) < 0) __PYX_ERR(20, 104, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_120_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_120_genexpr) < 0) __PYX_ERR(20, 104, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_120_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_120_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_120_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr)) __PYX_ERR(20, 108, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_121_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr) < 0) __PYX_ERR(20, 108, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_121_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_121_genexpr) < 0) __PYX_ERR(20, 108, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_121_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_121_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_121_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr)) __PYX_ERR(20, 109, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_122_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr) < 0) __PYX_ERR(20, 109, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_122_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_122_genexpr) < 0) __PYX_ERR(20, 109, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_122_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_122_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_122_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr)) __PYX_ERR(20, 113, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_123_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr) < 0) __PYX_ERR(20, 113, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_123_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_123_genexpr) < 0) __PYX_ERR(20, 113, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_123_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_123_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_123_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr)) __PYX_ERR(20, 114, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_124_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr) < 0) __PYX_ERR(20, 114, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_124_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_124_genexpr) < 0) __PYX_ERR(20, 114, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_124_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_124_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_124_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr)) __PYX_ERR(20, 118, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_125_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr) < 0) __PYX_ERR(20, 118, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_125_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_125_genexpr) < 0) __PYX_ERR(20, 118, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_125_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_125_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_125_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr)) __PYX_ERR(20, 119, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_126_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr) < 0) __PYX_ERR(20, 119, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_126_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_126_genexpr) < 0) __PYX_ERR(20, 119, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_126_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_126_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_126_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr)) __PYX_ERR(20, 123, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_127_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr) < 0) __PYX_ERR(20, 123, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_127_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_127_genexpr) < 0) __PYX_ERR(20, 123, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_127_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_127_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_127_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr)) __PYX_ERR(20, 124, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_128_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr) < 0) __PYX_ERR(20, 124, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_128_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_128_genexpr) < 0) __PYX_ERR(20, 124, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_128_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_128_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_128_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr)) __PYX_ERR(21, 50, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_129_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr) < 0) __PYX_ERR(21, 50, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_129_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_129_genexpr) < 0) __PYX_ERR(21, 50, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_129_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_129_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_129_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr)) __PYX_ERR(21, 51, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_130_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr) < 0) __PYX_ERR(21, 51, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_130_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_130_genexpr) < 0) __PYX_ERR(21, 51, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_130_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_130_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_130_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr)) __PYX_ERR(21, 52, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_131_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr) < 0) __PYX_ERR(21, 52, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_131_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_131_genexpr) < 0) __PYX_ERR(21, 52, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_131_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_131_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_131_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr)) __PYX_ERR(22, 58, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_132_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr) < 0) __PYX_ERR(22, 58, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_132_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_132_genexpr) < 0) __PYX_ERR(22, 58, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_132_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_132_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_132_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr)) __PYX_ERR(22, 62, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_133_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr) < 0) __PYX_ERR(22, 62, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_133_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_133_genexpr) < 0) __PYX_ERR(22, 62, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_133_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_133_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_133_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr)) __PYX_ERR(22, 66, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_134_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr) < 0) __PYX_ERR(22, 66, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_134_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_134_genexpr) < 0) __PYX_ERR(22, 66, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_134_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_134_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_134_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr)) __PYX_ERR(23, 83, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_135_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr) < 0) __PYX_ERR(23, 83, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_135_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_135_genexpr) < 0) __PYX_ERR(23, 83, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_135_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_135_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_135_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr)) __PYX_ERR(23, 84, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_136_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr) < 0) __PYX_ERR(23, 84, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_136_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_136_genexpr) < 0) __PYX_ERR(23, 84, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_136_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_136_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_136_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr)) __PYX_ERR(23, 88, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_137_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr) < 0) __PYX_ERR(23, 88, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_137_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_137_genexpr) < 0) __PYX_ERR(23, 88, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_137_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_137_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_137_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr)) __PYX_ERR(23, 89, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_138_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr) < 0) __PYX_ERR(23, 89, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_138_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_138_genexpr) < 0) __PYX_ERR(23, 89, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_138_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_138_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_138_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr)) __PYX_ERR(23, 93, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_139_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr) < 0) __PYX_ERR(23, 93, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_139_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_139_genexpr) < 0) __PYX_ERR(23, 93, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_139_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_139_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_139_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr)) __PYX_ERR(23, 94, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_140_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr) < 0) __PYX_ERR(23, 94, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_140_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_140_genexpr) < 0) __PYX_ERR(23, 94, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_140_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_140_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_140_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr)) __PYX_ERR(23, 98, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_141_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr) < 0) __PYX_ERR(23, 98, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_141_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_141_genexpr) < 0) __PYX_ERR(23, 98, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_141_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_141_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_141_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr)) __PYX_ERR(23, 99, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_142_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr) < 0) __PYX_ERR(23, 99, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_142_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_142_genexpr) < 0) __PYX_ERR(23, 99, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_142_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_142_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_142_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr)) __PYX_ERR(23, 103, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_143_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr) < 0) __PYX_ERR(23, 103, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_143_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_143_genexpr) < 0) __PYX_ERR(23, 103, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_143_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_143_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_143_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr)) __PYX_ERR(23, 104, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_144_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr) < 0) __PYX_ERR(23, 104, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_144_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_144_genexpr) < 0) __PYX_ERR(23, 104, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_144_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_144_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_144_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr)) __PYX_ERR(23, 108, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_145_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr) < 0) __PYX_ERR(23, 108, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_145_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_145_genexpr) < 0) __PYX_ERR(23, 108, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_145_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_145_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_145_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr)) __PYX_ERR(23, 109, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_146_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr) < 0) __PYX_ERR(23, 109, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_146_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_146_genexpr) < 0) __PYX_ERR(23, 109, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_146_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_146_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_146_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr)) __PYX_ERR(23, 113, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_147_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr) < 0) __PYX_ERR(23, 113, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_147_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_147_genexpr) < 0) __PYX_ERR(23, 113, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_147_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_147_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_147_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr)) __PYX_ERR(23, 114, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_148_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr) < 0) __PYX_ERR(23, 114, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_148_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_148_genexpr) < 0) __PYX_ERR(23, 114, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_148_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_148_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_148_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr)) __PYX_ERR(23, 118, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_149_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr) < 0) __PYX_ERR(23, 118, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_149_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_149_genexpr) < 0) __PYX_ERR(23, 118, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_149_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_149_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_149_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr)) __PYX_ERR(23, 119, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_150_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr) < 0) __PYX_ERR(23, 119, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_150_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_150_genexpr) < 0) __PYX_ERR(23, 119, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_150_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_150_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_150_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr)) __PYX_ERR(23, 123, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_151_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr) < 0) __PYX_ERR(23, 123, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_151_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_151_genexpr) < 0) __PYX_ERR(23, 123, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_151_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_151_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_151_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr)) __PYX_ERR(23, 124, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_152_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr) < 0) __PYX_ERR(23, 124, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_152_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_152_genexpr) < 0) __PYX_ERR(23, 124, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_152_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_152_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_152_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr)) __PYX_ERR(27, 36, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_153_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr) < 0) __PYX_ERR(27, 36, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_153_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_153_genexpr) < 0) __PYX_ERR(27, 36, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_153_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_153_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_153_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr)) __PYX_ERR(27, 37, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_154_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr) < 0) __PYX_ERR(27, 37, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_154_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_154_genexpr) < 0) __PYX_ERR(27, 37, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_154_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_154_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_154_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr)) __PYX_ERR(27, 38, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_155_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr) < 0) __PYX_ERR(27, 38, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_155_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_155_genexpr) < 0) __PYX_ERR(27, 38, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_155_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_155_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_155_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr)) __PYX_ERR(28, 36, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_156_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr) < 0) __PYX_ERR(28, 36, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_156_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_156_genexpr) < 0) __PYX_ERR(28, 36, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_156_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_156_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_156_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr)) __PYX_ERR(28, 37, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_157_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr) < 0) __PYX_ERR(28, 37, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_157_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_157_genexpr) < 0) __PYX_ERR(28, 37, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_157_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_157_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_157_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr)) __PYX_ERR(28, 38, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_158_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr) < 0) __PYX_ERR(28, 38, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_158_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_158_genexpr) < 0) __PYX_ERR(28, 38, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_158_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_158_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_158_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr)) __PYX_ERR(29, 36, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_159_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr) < 0) __PYX_ERR(29, 36, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_159_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_159_genexpr) < 0) __PYX_ERR(29, 36, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_159_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_159_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_159_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr)) __PYX_ERR(29, 37, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_160_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr) < 0) __PYX_ERR(29, 37, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_160_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_160_genexpr) < 0) __PYX_ERR(29, 37, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_160_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_160_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_160_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr)) __PYX_ERR(29, 38, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_161_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr) < 0) __PYX_ERR(29, 38, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_161_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_161_genexpr) < 0) __PYX_ERR(29, 38, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_161_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_161_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_161_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr)) __PYX_ERR(30, 36, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_162_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr) < 0) __PYX_ERR(30, 36, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_162_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_162_genexpr) < 0) __PYX_ERR(30, 36, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_162_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_162_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_162_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr)) __PYX_ERR(30, 37, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_163_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr) < 0) __PYX_ERR(30, 37, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_163_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_163_genexpr) < 0) __PYX_ERR(30, 37, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_163_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_163_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_163_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr)) __PYX_ERR(30, 38, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_164_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr) < 0) __PYX_ERR(30, 38, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_164_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_164_genexpr) < 0) __PYX_ERR(30, 38, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_164_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_164_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_164_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_164_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(35, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_11(__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_11(PyTypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(35, 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;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = 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 = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(8, 1, __pyx_L1_error)
  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(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 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":22
 * 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__107); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_util, __pyx_t_2) < 0) __PYX_ERR(8, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":25
 * 
 * ## 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, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_repeat);
  __Pyx_GIVEREF(__pyx_n_s_repeat);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_repeat)) __PYX_ERR(8, 25, __pyx_L1_error);
  __pyx_t_3 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 25, __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, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_repeat, __pyx_t_2) < 0) __PYX_ERR(8, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "yoda/core.pyx":26
 * ## 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, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_n_s_attrgetter);
  __Pyx_GIVEREF(__pyx_n_s_attrgetter);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_attrgetter)) __PYX_ERR(8, 26, __pyx_L1_error);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_operator, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 26, __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, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_attrgetter, __pyx_t_3) < 0) __PYX_ERR(8, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":28
 * 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__109)); 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_version, __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.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__110)); 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_getLibPath, __pyx_t_2) < 0) __PYX_ERR(8, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":36
 *     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__111)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getDataPath, __pyx_t_2) < 0) __PYX_ERR(8, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":40
 *     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__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getYodaDataPath, __pyx_t_2) < 0) __PYX_ERR(8, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/AnalysisObject.pyx":25
 * 
 * 
 *     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__113)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(9, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":29
 *         return self.aoptr().type()
 * 
 *     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__114)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_dim, __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_AnalysisObject);

  /* "include/AnalysisObject.pyx":33
 *         return self.aoptr().dim()
 * 
 *     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__116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_annotations, __pyx_t_2) < 0) __PYX_ERR(9, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":38
 *         return [ a for a in self.aoptr().annotations() ]
 * 
 *     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__118)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_annotationsDict, __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_AnalysisObject);

  /* "include/AnalysisObject.pyx":44
 *         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__120)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__121);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_annotation, __pyx_t_2) < 0) __PYX_ERR(9, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":57
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k, <string>util._autostr(v))
 */
  __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__123)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_setAnnotation, __pyx_t_2) < 0) __PYX_ERR(9, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":61
 *         self.aoptr().setAnnotation(<string>k, <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__125)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_hasAnnotation, __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_AnalysisObject);

  /* "include/AnalysisObject.pyx":65
 *         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__126)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_rmAnnotation, __pyx_t_2) < 0) __PYX_ERR(9, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":69
 *         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__127)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_clearAnnotations, __pyx_t_2) < 0) __PYX_ERR(9, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":86
 * 
 * 
 *     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_21name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_name, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(9, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":93
 * 
 * 
 *     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_23path, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_path, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_path, __pyx_t_2) < 0) __PYX_ERR(9, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":100
 *         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_25setPath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_setPath, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_setPath, __pyx_t_2) < 0) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":107
 *         self.aoptr().setPath(<string>path)
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_27title, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_title, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_title, __pyx_t_2) < 0) __PYX_ERR(9, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":113
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_29setTitle, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_setTitle, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__134)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_setTitle, __pyx_t_2) < 0) __PYX_ERR(9, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":119
 *         self.aoptr().setTitle(<string>title)
 * 
 *     def axisConfig(self):             # <<<<<<<<<<<<<<
 *       return self.aoptr()._config()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_31axisConfig, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_axisConfig, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_n_s_axisConfig, __pyx_t_2) < 0) __PYX_ERR(9, 119, __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__136)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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__138)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/AnalysisObject.pyx":127
 * 
 * ## Convenience alias
 * AO = AnalysisObject             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AO, ((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject)) < 0) __PYX_ERR(9, 127, __pyx_L1_error)

  /* "include/Binning.pyx":3
 * cimport util
 * 
 * class Binning(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 */
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_tuple__140); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_Binning, __pyx_n_s_Binning, (PyObject *) NULL, __pyx_n_s_yoda_core, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2 != __pyx_tuple__140) {
    if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_tuple__140) < 0))) __PYX_ERR(0, 3, __pyx_L1_error)
  }

  /* "include/Binning.pyx":4
 * 
 * class Binning(object):
 *     def __init__(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self.axes = list(args[0].axes)
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_1__init__, 0, __pyx_n_s_Binning___init, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_5) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":10
 *             self.axes = [ Axis(edges) for edges in args ]
 * 
 *     def config(self):             # <<<<<<<<<<<<<<
 *         return ''.join(a.type() for a in self.axes)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_3config, 0, __pyx_n_s_Binning_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_config, __pyx_t_5) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":13
 *         return ''.join(a.type() for a in self.axes)
 * 
 *     def width(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].width(index)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_5width, 0, __pyx_n_s_Binning_width, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__145)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_width, __pyx_t_5) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":16
 *         return self.axes[dim].width(index)
 * 
 *     def max(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].max(index)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_7max, 0, __pyx_n_s_Binning_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_max, __pyx_t_5) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":19
 *         return self.axes[dim].max(index)
 * 
 *     def min(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].min(index)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_9min, 0, __pyx_n_s_Binning_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_min, __pyx_t_5) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":22
 *         return self.axes[dim].min(index)
 * 
 *     def mid(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].mid(index)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_11mid, 0, __pyx_n_s_Binning_mid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mid, __pyx_t_5) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":25
 *         return self.axes[dim].mid(index)
 * 
 *     def edge(self, dim, index):             # <<<<<<<<<<<<<<
 *         return self.axes[dim].edge(index)
 * 
 */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Binning_13edge, 0, __pyx_n_s_Binning_edge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_edge, __pyx_t_5) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/Binning.pyx":3
 * cimport util
 * 
 * class Binning(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, *args):
 *         if len(args) == 1 and isinstance(args[0], Binning):
 */
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_Binning, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Binning, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __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;

  /* "include/Counter.pyx":28
 * 
 * 
 *     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__150)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_reset, __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_Counter);

  /* "include/Counter.pyx":34
 * 
 * 
 *     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__151)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(10, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":40
 * 
 * 
 *     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__153)); 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__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __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_Counter);

  /* "include/Counter.pyx":45
 *         return self.cptr().fill(weight, fraction)
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_11set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":53
 *         self.cptr().set(numEntries, sumW, sumW2)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_13numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(10, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":58
 *         return self.cptr().numEntries()
 * 
 *     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_15effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(10, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":63
 *         return self.cptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_17sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(10, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":68
 *         return self.cptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_19sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(10, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":73
 *         return self.cptr().sumW2()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_21val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(10, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":78
 *         return self.cptr().val()
 * 
 *     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_23err, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_err, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_err, __pyx_t_2) < 0) __PYX_ERR(10, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":83
 *         return self.cptr().err()
 * 
 *     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_25relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__163)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(10, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":89
 * 
 * 
 *     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_27scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(10, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":95
 * 
 * 
 *     def mkEstimate(self, path = "", source = ""):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 *         Convert this Counter to a Estimate."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_29mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_mkEstimate, __pyx_t_2) < 0) __PYX_ERR(10, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":101
 *         return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def mkScatter(self, path = ""):             # <<<<<<<<<<<<<<
 *         """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_31mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(10, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":107
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(Counter self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         if efficiency:
 *             tmp = c.Counter_eff_Counter(self.cptr(), other.cptr())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_33divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_divideBy, __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_Counter);

  /* "include/Counter.pyx":115
 *             return cutil.new_owned_cls(Estimate, tmp)
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.cptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_35lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(10, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":119
 *         return self.cptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.cptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_37serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(10, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":123
 *         return self.cptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_39deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_deserializeContent, __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_Counter);

  /* "include/Counter.pyx":129
 *         self.cptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_41lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(10, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":133
 *         return self.cptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_43serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(10, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":137
 *         return self.cptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_45deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Counter, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(10, 137, __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_59__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_61__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Dbn0D.pyx":17
 * 
 * 
 *     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_5copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":20
 *         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_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(11, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":28
 *         self.d0ptr().reset()
 * 
 *     def set(self, numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(11, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":36
 *         self.d0ptr().set(numEntries, sumW, sumW2)
 * 
 *     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__190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(11, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":44
 *         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__191)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(11, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":53
 * 
 * 
 *     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__192)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_numEntries, __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_Dbn0D);

  /* "include/Dbn0D.pyx":57
 *         return self.d0ptr().numEntries()
 * 
 *     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__193)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(11, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":62
 * 
 * 
 *     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__194)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":66
 *         return self.d0ptr().errW()
 * 
 *     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__195)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(11, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":71
 * 
 * 
 *     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__196)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(11, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":75
 *         return self.d0ptr().sumW()
 * 
 *     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__197)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(11, 75, __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__198)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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__199)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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(36, 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/Estimate.pyx":14
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Estimate(deref(self.estptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__200)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(12, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":18
 * 
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_5setVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_setVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_setVal, __pyx_t_2) < 0) __PYX_ERR(12, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":22
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_7setErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_setErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_setErr, __pyx_t_2) < 0) __PYX_ERR(12, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":41
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(12, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":46
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_11reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(12, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":55
 * 
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_13val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(12, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":58
 *        return self.estptr().val()
 * 
 *     def valMax(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMax(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_15valMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_valMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_valMax, __pyx_t_2) < 0) __PYX_ERR(12, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":61
 *        return self.estptr().valMax(source)
 * 
 *     def valMin(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().valMin(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_17valMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_valMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__211)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_valMin, __pyx_t_2) < 0) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":64
 *        return self.estptr().valMin(source)
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_19errDownUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errDownUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errDownUp, __pyx_t_2) < 0) __PYX_ERR(12, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":67
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_21err, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_err, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_err, __pyx_t_2) < 0) __PYX_ERR(12, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":70
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_23errNegPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errNegPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errNegPos, __pyx_t_2) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":73
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_25errDown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errDown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errDown, __pyx_t_2) < 0) __PYX_ERR(12, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":76
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_27errUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errUp, __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_Estimate);

  /* "include/Estimate.pyx":79
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_29errNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errNeg, __pyx_t_2) < 0) __PYX_ERR(12, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":82
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_31errPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__218)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errPos, __pyx_t_2) < 0) __PYX_ERR(12, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":85
 *        return self.estptr().errPos(source)
 * 
 *     def errAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errAvg(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_33errAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errAvg, __pyx_t_2) < 0) __PYX_ERR(12, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":88
 *        return self.estptr().errAvg(source)
 * 
 *     def errEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errEnv(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_35errEnv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_errEnv, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__220)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_errEnv, __pyx_t_2) < 0) __PYX_ERR(12, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":91
 *        return self.estptr().errEnv(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_37relErrDownUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErrDownUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErrDownUp, __pyx_t_2) < 0) __PYX_ERR(12, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":94
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_39relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(12, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":97
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_41relErrDown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErrDown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErrDown, __pyx_t_2) < 0) __PYX_ERR(12, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":100
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_43relErrUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErrUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__224)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErrUp, __pyx_t_2) < 0) __PYX_ERR(12, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":103
 *        return self.estptr().relErrUp(source)
 * 
 *     def relErrAvg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrAvg(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_45relErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErrAvg, __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_Estimate);

  /* "include/Estimate.pyx":106
 *        return self.estptr().relErrAvg(source)
 * 
 *     def relErrEnv(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrEnv(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_47relErrEnv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relErrEnv, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relErrEnv, __pyx_t_2) < 0) __PYX_ERR(12, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":109
 *        return self.estptr().relErrEnv(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_49quadSum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_quadSum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_quadSum, __pyx_t_2) < 0) __PYX_ERR(12, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":112
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_51quadSumNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_quadSumNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_quadSumNeg, __pyx_t_2) < 0) __PYX_ERR(12, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":115
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_53quadSumPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_quadSumPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_quadSumPos, __pyx_t_2) < 0) __PYX_ERR(12, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":118
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def quadSumAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_55quadSumAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_quadSumAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_quadSumAvg, __pyx_t_2) < 0) __PYX_ERR(12, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":121
 *        return self.estptr().quadSumAvg(pat_match)
 * 
 *     def quadSumEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_57quadSumEnv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_quadSumEnv, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__232)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_quadSumEnv, __pyx_t_2) < 0) __PYX_ERR(12, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":124
 *        return self.estptr().quadSumEnv(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_59totalErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_totalErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_totalErr, __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_Estimate);

  /* "include/Estimate.pyx":127
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def totalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_61totalErrNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_totalErrNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__234)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_totalErrNeg, __pyx_t_2) < 0) __PYX_ERR(12, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":130
 *        return tuple(self.estptr().totalErrNeg(pat_match))
 * 
 *     def totalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_63totalErrPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_totalErrPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_totalErrPos, __pyx_t_2) < 0) __PYX_ERR(12, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":133
 *        return tuple(self.estptr().totalErrPos(pat_match))
 * 
 *     def totalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_65totalErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_totalErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__236)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_totalErrAvg, __pyx_t_2) < 0) __PYX_ERR(12, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":136
 *        return self.estptr().totalErrAvg(pat_match)
 * 
 *     def totalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_67totalErrEnv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_totalErrEnv, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_totalErrEnv, __pyx_t_2) < 0) __PYX_ERR(12, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":139
 *        return self.estptr().totalErrEnv(pat_match)
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_69relTotalErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relTotalErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__238)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relTotalErr, __pyx_t_2) < 0) __PYX_ERR(12, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":142
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_71relTotalErrNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relTotalErrNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relTotalErrNeg, __pyx_t_2) < 0) __PYX_ERR(12, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":145
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_73relTotalErrPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relTotalErrPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relTotalErrPos, __pyx_t_2) < 0) __PYX_ERR(12, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":148
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def relTotalErrAvg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_75relTotalErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relTotalErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relTotalErrAvg, __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_Estimate);

  /* "include/Estimate.pyx":151
 *        return self.estptr().relTotalErrAvg(pat_match)
 * 
 *     def relTotalErrEnv(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_77relTotalErrEnv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_relTotalErrEnv, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__242)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_relTotalErrEnv, __pyx_t_2) < 0) __PYX_ERR(12, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":154
 *        return self.estptr().relTotalErrEnv(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_79hasSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_hasSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_hasSource, __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_Estimate);

  /* "include/Estimate.pyx":157
 *        return self.estptr().hasSource(<string> source)
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_81sources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_sources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_sources, __pyx_t_2) < 0) __PYX_ERR(12, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":160
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_83numErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_numErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__245)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_numErrs, __pyx_t_2) < 0) __PYX_ERR(12, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":163
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_85rmSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_rmSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_rmSource, __pyx_t_2) < 0) __PYX_ERR(12, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":166
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_87rmErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_rmErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__247)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_rmErrs, __pyx_t_2) < 0) __PYX_ERR(12, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":169
 *       return self.estptr().rmErrs()
 * 
 *     def serializeSources(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().sources()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_89serializeSources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_serializeSources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_serializeSources, __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_Estimate);

  /* "include/Estimate.pyx":172
 *       return self.estptr().sources()
 * 
 *     def deserializeSources(self, data):             # <<<<<<<<<<<<<<
 *       cdef vector[string] cdata
 *       cdata = [ str(x) for x in data ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_91deserializeSources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_deserializeSources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_deserializeSources, __pyx_t_2) < 0) __PYX_ERR(12, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "include/Estimate.pyx":177
 *       return self.estptr().deserializeSources(cdata)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *       self.estptr().scale(factor)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_8Estimate_93scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(12, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate);

  /* "(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_8Estimate_101__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__252)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_8Estimate_103__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Estimate0D.pyx":19
 *         return "<Estimate0D(value=%.2e) '%s'>" % (val, self.path())
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Estimate0D.
 *         Clone this Estimate0Dr."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_5clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__254)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(13, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":24
 *         return cutil.new_owned_cls(Estimate0D, self.estptr().newclone())
 * 
 *     def setVal(self, value):             # <<<<<<<<<<<<<<
 *        self.estptr().setVal(value)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_7setVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_setVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__255)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_setVal, __pyx_t_2) < 0) __PYX_ERR(13, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":28
 * 
 * 
 *     def setErr(self, *es):             # <<<<<<<<<<<<<<
 *        source = None
 *        es = list(es)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_9setErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_setErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_setErr, __pyx_t_2) < 0) __PYX_ERR(13, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":47
 * 
 * 
 *     def set(self, val, errs, source = ""):             # <<<<<<<<<<<<<<
 *        self.setVal(val)
 *        self.setErr(errs, source)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_11set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__257)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(13, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":52
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_13reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":60
 *         self.estptr().reset()
 * 
 *     def val(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().val()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_15val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(13, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":63
 *        return self.estptr().val()
 * 
 *     def errDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errDownUp(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_17errDownUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errDownUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errDownUp, __pyx_t_2) < 0) __PYX_ERR(13, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":66
 *        return tuple(self.estptr().errDownUp(source))
 * 
 *     def err(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().err(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_19err, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_err, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__261)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_err, __pyx_t_2) < 0) __PYX_ERR(13, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":69
 *        return tuple(self.estptr().err(source))
 * 
 *     def errNegPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().errNegPos(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_21errNegPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errNegPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__262)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errNegPos, __pyx_t_2) < 0) __PYX_ERR(13, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":72
 *        return tuple(self.estptr().errNegPos(source))
 * 
 *     def errDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errDown(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_23errDown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errDown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errDown, __pyx_t_2) < 0) __PYX_ERR(13, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":75
 *        return self.estptr().errDown(source)
 * 
 *     def errUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errUp(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_25errUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__264)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errUp, __pyx_t_2) < 0) __PYX_ERR(13, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":78
 *        return self.estptr().errUp(source)
 * 
 *     def errNeg(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errNeg(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_27errNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errNeg, __pyx_t_2) < 0) __PYX_ERR(13, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":81
 *        return self.estptr().errNeg(source)
 * 
 *     def errPos(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().errPos(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_29errPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_errPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__266)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_errPos, __pyx_t_2) < 0) __PYX_ERR(13, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":84
 *        return self.estptr().errPos(source)
 * 
 *     def relErrDownUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_31relErrDownUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relErrDownUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relErrDownUp, __pyx_t_2) < 0) __PYX_ERR(13, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":87
 *        return tuple(self.estptr().relErrDownUp(source))
 * 
 *     def relErr(self, source = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relErr(source))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_33relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__268)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(13, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":90
 *        return tuple(self.estptr().relErr(source))
 * 
 *     def relErrDown(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrDown(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_35relErrDown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relErrDown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relErrDown, __pyx_t_2) < 0) __PYX_ERR(13, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":93
 *        return self.estptr().relErrDown(source)
 * 
 *     def relErrUp(self, source = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relErrUp(source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_37relErrUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relErrUp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__270)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relErrUp, __pyx_t_2) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":96
 *        return self.estptr().relErrUp(source)
 * 
 *     def quadSum(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_39quadSum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_quadSum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__271)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_quadSum, __pyx_t_2) < 0) __PYX_ERR(13, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":99
 *        return tuple(self.estptr().quadSum(pat_match))
 * 
 *     def quadSumNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_41quadSumNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_quadSumNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__272)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_quadSumNeg, __pyx_t_2) < 0) __PYX_ERR(13, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":102
 *        return self.estptr().quadSumNeg(pat_match)
 * 
 *     def quadSumPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().quadSumPos(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_43quadSumPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_quadSumPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__273)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_quadSumPos, __pyx_t_2) < 0) __PYX_ERR(13, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":105
 *        return self.estptr().quadSumPos(pat_match)
 * 
 *     def totalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_45totalErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_totalErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_totalErr, __pyx_t_2) < 0) __PYX_ERR(13, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":108
 *        return tuple(self.estptr().totalErr(pat_match))
 * 
 *     def relTotalErr(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_47relTotalErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relTotalErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__275)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relTotalErr, __pyx_t_2) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":111
 *        return tuple(self.estptr().relTotalErr(pat_match))
 * 
 *     def relTotalErrNeg(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_49relTotalErrNeg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relTotalErrNeg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relTotalErrNeg, __pyx_t_2) < 0) __PYX_ERR(13, 111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":114
 *        return self.estptr().relTotalErrNeg(pat_match)
 * 
 *     def relTotalErrPos(self, pat_match = ""):             # <<<<<<<<<<<<<<
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_51relTotalErrPos, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_relTotalErrPos, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__277)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_relTotalErrPos, __pyx_t_2) < 0) __PYX_ERR(13, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":117
 *        return self.estptr().relTotalErrPos(pat_match)
 * 
 *     def hasSource(self, str source):             # <<<<<<<<<<<<<<
 *        return self.estptr().hasSource(<string> source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_53hasSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_hasSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__278)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_hasSource, __pyx_t_2) < 0) __PYX_ERR(13, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":130
 *         return self
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().sources()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_59sources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_sources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_sources, __pyx_t_2) < 0) __PYX_ERR(13, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":133
 *        return self.estptr().sources()
 * 
 *     def numErrs(self):             # <<<<<<<<<<<<<<
 *        return self.estptr().numErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_61numErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_numErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__280)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_numErrs, __pyx_t_2) < 0) __PYX_ERR(13, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":136
 *        return self.estptr().numErrs()
 * 
 *     def rmSource(self, str source):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmSource(<string> source)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_63rmSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_rmSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__281)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_rmSource, __pyx_t_2) < 0) __PYX_ERR(13, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":139
 *       return self.estptr().rmSource(<string> source)
 * 
 *     def rmErrs(self):             # <<<<<<<<<<<<<<
 *       return self.estptr().rmErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_65rmErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_rmErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__282)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_rmErrs, __pyx_t_2) < 0) __PYX_ERR(13, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":142
 *       return self.estptr().rmErrs()
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_67lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(13, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":146
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         self.estptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_69serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__284)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(13, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":150
 *         self.estptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_71deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(13, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":156
 *         self.estptr().deserializeContent(cdata)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_73lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__286)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(13, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":160
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_75serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(13, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":164
 *         self.estptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_77deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__288)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(13, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":170
 *         self.estptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         self.estptr().scale(factor)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_79scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(13, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "include/Estimate0D.pyx":173
 *         self.estptr().scale(factor)
 * 
 *     def mkScatter(self, path = "", pat_match = ""):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10Estimate0D_81mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Estimate0D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(13, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Estimate0D);

  /* "(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_10Estimate0D_91__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_10Estimate0D_93__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Estimate0D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2, efficiency = False):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9divide, 0, __pyx_n_s_divide, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_divide, __pyx_t_2) < 0) __PYX_ERR(2, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":36
 * 
 * 
 * def efficiency(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Estimate{0,1,2,3}D
 *     Divide one AnalysisObject by another, producing an Estimate appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11efficiency, 0, __pyx_n_s_efficiency, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_efficiency, __pyx_t_2) < 0) __PYX_ERR(2, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":46
 * 
 * 
 * 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13linspace, 0, __pyx_n_s_linspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_linspace, __pyx_t_2) < 0) __PYX_ERR(2, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":53
 * 
 * 
 * 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15logspace, 0, __pyx_n_s_logspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__300)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logspace, __pyx_t_2) < 0) __PYX_ERR(2, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":60
 * 
 * 
 * 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_17pdfspace, 0, __pyx_n_s_pdfspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__302)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__303);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pdfspace, __pyx_t_2) < 0) __PYX_ERR(2, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":90
 * 
 * 
 * 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_2 = __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__305)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_index_between, __pyx_t_2) < 0) __PYX_ERR(2, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":97
 * 
 * 
 * def effNumEntries(weights):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the effective number of entries given a list of weights."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_21effNumEntries, 0, __pyx_n_s_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(2, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":103
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_23mean, 0, __pyx_n_s_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(2, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":109
 * 
 * 
 * def mean(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted mean of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_25mean, 0, __pyx_n_s_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(2, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":115
 * 
 * 
 * def variance(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted variance of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_27variance, 0, __pyx_n_s_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__312)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(2, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":121
 * 
 * 
 * def stdDev(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard deviation of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_29stdDev, 0, __pyx_n_s_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(2, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":127
 * 
 * 
 * def stdErr(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted standard error of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_31stdErr, 0, __pyx_n_s_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__314)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(2, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":133
 * 
 * 
 * def RMS(sample, weights):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the weighted RMS of the entries in the provided sample list."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_33RMS, 0, __pyx_n_s_RMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RMS, __pyx_t_2) < 0) __PYX_ERR(2, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":139
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_35covariance, 0, __pyx_n_s_covariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_covariance, __pyx_t_2) < 0) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":145
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_37correlation, 0, __pyx_n_s_correlation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__318)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_correlation, __pyx_t_2) < 0) __PYX_ERR(2, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":150
 *     return c.correlation(sample1, sample2)
 * 
 * def naiveChi2(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted chi2 statistic of the two provided sample lists.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_39naiveChi2, 0, __pyx_n_s_naiveChi2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__320)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_2, sizeof(__pyx_defaults), 2)) __PYX_ERR(2, 150, __pyx_L1_error)
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_2)->__pyx_arg_errors1 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_2)->__pyx_arg_errors2 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_2, __pyx_pf_4yoda_4core_68__defaults__);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_naiveChi2, __pyx_t_2) < 0) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Functions.pyx":160
 *    return c.naiveChi2(sample1, sample2, errors1, errors2)
 * 
 * def naiveChi2reduced(sample1, sample2, errors1 = [], errors2 = []):             # <<<<<<<<<<<<<<
 *    """(list[float], list[float], list[float], list[float] -> float
 *    Return the error-weighted reduced chi2 statistic of the two provided sample lists.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_41naiveChi2reduced, 0, __pyx_n_s_naiveChi2reduced, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_2, sizeof(__pyx_defaults1), 2)) __PYX_ERR(2, 160, __pyx_L1_error)
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_2)->__pyx_arg_errors1 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_2)->__pyx_arg_errors2 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_2, __pyx_pf_4yoda_4core_70__defaults__);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_naiveChi2reduced, __pyx_t_2) < 0) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":12
 * """
 * 
 * import sys             # <<<<<<<<<<<<<<
 * from libcpp.unordered_map cimport unordered_map
 * from cython.operator cimport preincrement as inc
 */
  __pyx_t_2 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":17
 * 
 * ## Make a string that is a comma-separated list of patterns
 * def _prep_patterns(patterns):             # <<<<<<<<<<<<<<
 *     if not patterns:
 *         patterns = [ ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_43_prep_patterns, 0, __pyx_n_s_prep_patterns, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_prep_patterns, __pyx_t_2) < 0) __PYX_ERR(3, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":24
 *     return ','.join(patterns)
 * 
 * def _mapTypes(cpptype):             # <<<<<<<<<<<<<<
 *     if 'Binned' not in cpptype:
 *         return cpptype
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_45_mapTypes, 0, __pyx_n_s_mapTypes, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mapTypes, __pyx_t_2) < 0) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":95
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_47_bytestr_from_file, 0, __pyx_n_s_bytestr_from_file, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bytestr_from_file, __pyx_t_2) < 0) __PYX_ERR(3, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":113
 *     return s
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_49_str_to_file, 0, __pyx_n_s_str_to_file, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_str_to_file, __pyx_t_2) < 0) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":128
 *             f.write(s)
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_51_istxt, 0, __pyx_n_s_istxt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_istxt, __pyx_t_2) < 0) __PYX_ERR(3, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":134
 *         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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_53_mktxtifstr, 0, __pyx_n_s_mktxtifstr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mktxtifstr, __pyx_t_2) < 0) __PYX_ERR(3, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":145
 * ##
 * 
 * def read(filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_55read, 0, __pyx_n_s_read, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__334)); 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__335);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_read, __pyx_t_2) < 0) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":181
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_57readYODA, 0, __pyx_n_s_readYODA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__335);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readYODA, __pyx_t_2) < 0) __PYX_ERR(3, 181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":204
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns='', unpatterns=''):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_59readFLAT, 0, __pyx_n_s_readFLAT, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__338)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__335);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readFLAT, __pyx_t_2) < 0) __PYX_ERR(3, 204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":231
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_61write, 0, __pyx_n_s_write, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__340)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__341);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_write, __pyx_t_2) < 0) __PYX_ERR(3, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":247
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_63writeYODA, 0, __pyx_n_s_writeYODA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__341);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeYODA, __pyx_t_2) < 0) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":269
 * 
 * 
 * def writeYODA1(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA1 format.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_65writeYODA1, 0, __pyx_n_s_writeYODA1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__344)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__341);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeYODA1, __pyx_t_2) < 0) __PYX_ERR(3, 269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":291
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_67writeFLAT, 0, __pyx_n_s_writeFLAT, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__341);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeFLAT, __pyx_t_2) < 0) __PYX_ERR(3, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Point.pyx":24
 * 
 * 
 *     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__346)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_dim, __pyx_t_2) < 0) __PYX_ERR(14, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":31
 * 
 * 
 *     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__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(14, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":36
 *         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__350)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_setVal, __pyx_t_2) < 0) __PYX_ERR(14, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":50
 *     #    return util.read_error_pair(self.pptr().errs(i))
 * 
 *     def setErr(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_9setErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_setErr, __pyx_t_2) < 0) __PYX_ERR(14, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":57
 *         self.pptr().setErr(i, e)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_11setErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__354)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_setErrs, __pyx_t_2) < 0) __PYX_ERR(14, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":82
 *     #    return self.pptr().errMinus(i)
 * 
 *     def setErrMinus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_13setErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_setErrMinus, __pyx_t_2) < 0) __PYX_ERR(14, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":97
 *     #    return self.pptr().errPlus(i)
 * 
 *     def setErrPlus(self, i, e):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_15setErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__356)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_setErrPlus, __pyx_t_2) < 0) __PYX_ERR(14, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":130
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_17scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__358)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(14, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_5Point_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__360)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Axis.pyx":28
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Axis[double]())
 *         self.axisT = 'd'
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_3_Axis__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_Axis__init1, __pyx_t_2) < 0) __PYX_ERR(4, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":32
 *         self.axisT = 'd'
 * 
 *     def __init2(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] edges_d
 *         cdef vector[int] edges_i
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_5_Axis__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_Axis__init2, __pyx_t_2) < 0) __PYX_ERR(4, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":55
 *     #    return cutil.set_owned_ptr(self, new c.Axis(deref(self.aptr())))
 * 
 *     def numBins(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().numBins(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_7numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(4, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":64
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def type(self):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().type()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_9type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_type, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__366)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":73
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def index(self, edge):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().index(edge)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_11index, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_index, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__368)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_index, __pyx_t_2) < 0) __PYX_ERR(4, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":82
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def width(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().width(index)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_13width, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_width, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_width, __pyx_t_2) < 0) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":87
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def max(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().max(index)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_15max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__371)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(4, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":92
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def min(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().min(index)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_17min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(4, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":97
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def mid(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'd':
 *           return self.axis_d_ptr().mid(index)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_19mid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_mid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_mid, __pyx_t_2) < 0) __PYX_ERR(4, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "include/generated/Axis.pyx":102
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def edge(self, index):             # <<<<<<<<<<<<<<
 *         if self.axisT == 'i':
 *           return self.axis_i_ptr().edge(index)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_4Axis_21edge, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis_edge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__374)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Axis, __pyx_n_s_edge, __pyx_t_2) < 0) __PYX_ERR(4, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Axis);

  /* "(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_4Axis_25__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_4Axis_27__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Axis___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__376)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate1D[double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_3_BinnedEstimate1D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_BinnedEstimate1D__init1, __pyx_t_2) < 0) __PYX_ERR(6, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_5_BinnedEstimate1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__379)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_BinnedEstimate1D__init2, __pyx_t_2) < 0) __PYX_ERR(6, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_7_BinnedEstimate1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__381)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_BinnedEstimate1D__init3, __pyx_t_2) < 0) __PYX_ERR(6, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedEstimate1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_9_BinnedEstimate1D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__383)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_BinnedEstimate1D__init4, __pyx_t_2) < 0) __PYX_ERR(6, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__384)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(6, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate1D.
 *         Clone this BinnedEstimate1D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__386)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(6, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_localToGlobalIn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__388)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(6, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__390)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(6, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__394)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(6, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(6, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(6, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__399)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(6, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(6, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__402)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(6, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__404)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__406)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(6, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(6, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__410)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(6, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__413)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(6, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__415)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(6, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__417)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(6, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":322
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_57mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__419)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__420);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(6, 322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":336
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate1D self, BinnedEstimate1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate1D -> BinnedEstimate1D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_59divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(6, 336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":373
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_65_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__424)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(6, 373, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":381
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_67lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__425)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(6, 381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":391
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_69serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_serializeConten, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__426)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(6, 391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":401
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_71deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_deserializeCont, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__427)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":413
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_73lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__428)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(6, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":423
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_75serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__429)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(6, 423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":433
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_77deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__430)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(6, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":446
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_79vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__432)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(6, 446, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":449
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_81auc, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_auc, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__434)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_auc, __pyx_t_2) < 0) __PYX_ERR(6, 449, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":453
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scale(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_83scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__436)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(6, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":462
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_85indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__437)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(6, 462, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":471
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_87maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__438)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(6, 471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":480
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sources()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_89sources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_sources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__439)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_sources, __pyx_t_2) < 0) __PYX_ERR(6, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":489
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_91areaUnderCurve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_areaUnderCurve, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__440)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_areaUnderCurve, __pyx_t_2) < 0) __PYX_ERR(6, 489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":498
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_93covarianceMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_covarianceMatri, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__443);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_covarianceMatrix, __pyx_t_2) < 0) __PYX_ERR(6, 498, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":507
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_95numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__444)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(6, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":518
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_97xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__445)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(6, 518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":529
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_99xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(6, 529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":536
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_101xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__447)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(6, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":543
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_103xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(6, 543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":550
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__92 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 550, __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(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(6, 550, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(6, 550, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_105rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__450)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(6, 550, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":557
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_107rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__452)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(6, 557, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "include/generated/BinnedEstimate1D.pyx":564
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate1D_109rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__454)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(6, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate1D);

  /* "(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_16BinnedEstimate1D_123__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__455)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_16BinnedEstimate1D_125__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate1D___setstate_cyth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__456)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate1D.pyx":648
 * 
 * ## Convenience alias
 * Estimate1D = BinnedEstimate1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Estimate1D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate1D)) < 0) __PYX_ERR(6, 648, __pyx_L1_error)

  /* "include/generated/BinnedEstimate2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate2D[double,double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_3_BinnedEstimate2D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__457)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_BinnedEstimate2D__init1, __pyx_t_2) < 0) __PYX_ERR(17, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_5_BinnedEstimate2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_BinnedEstimate2D__init2, __pyx_t_2) < 0) __PYX_ERR(17, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_7_BinnedEstimate2D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_BinnedEstimate2D__init3, __pyx_t_2) < 0) __PYX_ERR(17, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedEstimate2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_9_BinnedEstimate2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__462)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_BinnedEstimate2D__init4, __pyx_t_2) < 0) __PYX_ERR(17, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__463)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(17, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate2D.
 *         Clone this BinnedEstimate2D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__464)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(17, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_localToGlobalIn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__465)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(17, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__466)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(17, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__467)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(17, 338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__468)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(17, 362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(17, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__470)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(17, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(17, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__472)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(17, 441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(17, 464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__474)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(17, 490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(17, 496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__476)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(17, 531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__478)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(17, 537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(17, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__480)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(17, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__482)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(17, 570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__483)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(17, 574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":600
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_57mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__484)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__420);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(17, 600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":632
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate2D self, BinnedEstimate2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate2D -> BinnedEstimate2D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_59divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__485)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(17, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":705
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_65_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__486)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(17, 705, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":713
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_67lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__487)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(17, 713, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":735
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_69serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_serializeConten, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__488)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(17, 735, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":757
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_71deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_deserializeCont, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__489)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(17, 757, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":781
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_73lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(17, 781, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":803
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_75serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__491)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(17, 803, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":825
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_77deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__492)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(17, 825, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":850
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_79vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__493)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(17, 850, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":853
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_81auc, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_auc, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__494)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_auc, __pyx_t_2) < 0) __PYX_ERR(17, 853, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":857
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scale(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_83scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__495)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(17, 857, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":878
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_85indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(17, 878, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":899
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_87maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__497)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(17, 899, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":920
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sources()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_89sources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_sources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_sources, __pyx_t_2) < 0) __PYX_ERR(17, 920, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":941
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_91areaUnderCurve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_areaUnderCurve, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_areaUnderCurve, __pyx_t_2) < 0) __PYX_ERR(17, 941, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":962
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_93covarianceMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_covarianceMatri, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__500)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__443);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_covarianceMatrix, __pyx_t_2) < 0) __PYX_ERR(17, 962, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":983
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_95numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(17, 983, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1006
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_97xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__502)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(17, 1006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1029
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_99xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(17, 1029, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1040
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_101xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__504)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(17, 1040, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1051
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_103xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__505)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(17, 1051, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1062
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__93 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1062, __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(17, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(17, 1062, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(17, 1062, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_105rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__506)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(17, 1062, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1073
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_107rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(17, 1073, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1084
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_109rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__508)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(17, 1084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1090
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_111numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(17, 1090, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1113
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_113yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__510)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(17, 1113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1136
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_115yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(17, 1136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1147
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_117yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__512)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(17, 1147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1158
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_119yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(17, 1158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1169
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__94 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1169, __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(17, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(17, 1169, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(17, 1169, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_121rebinYBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinYBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__514)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinYBy, __pyx_t_2) < 0) __PYX_ERR(17, 1169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1180
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_123rebinYTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinYTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinYTo, __pyx_t_2) < 0) __PYX_ERR(17, 1180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "include/generated/BinnedEstimate2D.pyx":1191
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate2D_125rebinY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D_rebinY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__516)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D, __pyx_n_s_rebinY, __pyx_t_2) < 0) __PYX_ERR(17, 1191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate2D);

  /* "(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_16BinnedEstimate2D_139__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__517)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_16BinnedEstimate2D_141__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate2D___setstate_cyth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__518)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate2D.pyx":1359
 * 
 * ## Convenience alias
 * Estimate2D = BinnedEstimate2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Estimate2D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate2D)) < 0) __PYX_ERR(17, 1359, __pyx_L1_error)

  /* "include/generated/BinnedEstimate3D.pyx":144
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedEstimate3D[double,double,double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_3_BinnedEstimate3D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_BinnedEstimate3D__init1, __pyx_t_2) < 0) __PYX_ERR(18, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":148
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_5_BinnedEstimate3D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_BinnedEstimate3D__init2, __pyx_t_2) < 0) __PYX_ERR(18, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":320
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_7_BinnedEstimate3D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_BinnedEstimate3D__init3, __pyx_t_2) < 0) __PYX_ERR(18, 320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":328
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedEstimate3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedEstimate3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_9_BinnedEstimate3D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__524)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_BinnedEstimate3D__init4, __pyx_t_2) < 0) __PYX_ERR(18, 328, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":391
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(18, 391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":674
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedEstimate3D.
 *         Clone this BinnedEstimate3D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__526)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 674, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(18, 674, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":739
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_localToGlobalIn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(18, 739, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":801
 * 
 * 
 *     def _global_set(self, size_t idx, Estimate cont):             # <<<<<<<<<<<<<<
 *         """int, Estimate -> void.
 *         Set a Estimate at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__528)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(18, 801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":862
 * 
 * 
 *     def _local_set(self, indices, Estimate cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Estimate -> void.
 *         Set a Estimate at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(18, 862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":922
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Estimate."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__530)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(18, 922, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":930
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(18, 930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":990
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedEstimate."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__532)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(18, 990, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1050
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(18, 1050, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1109
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__534)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(18, 1109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1168
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__535)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(18, 1168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1230
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__536)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(18, 1230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1236
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__537)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(18, 1236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1325
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__538)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(18, 1325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1331
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__540)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(18, 1331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1335
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(18, 1335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1394
 *           return self.binned_sss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__542)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(18, 1394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1400
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__544)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(18, 1400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1404
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__545)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(18, 1404, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1466
 * 
 * 
 *     def mkScatter(self, path = "", pat_match="",includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_57mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__546)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__420);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(18, 1466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1552
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedEstimate3D self, BinnedEstimate3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedEstimate3D -> BinnedEstimate3D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_59divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__547)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(18, 1552, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1733
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_65_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__548)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(18, 1733, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1741
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_67lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__549)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(18, 1741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1799
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_69serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_serializeConten, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__550)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(18, 1799, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1857
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_71deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_deserializeCont, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__551)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(18, 1857, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1917
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_73lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(18, 1917, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":1975
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_75serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__553)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(18, 1975, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2033
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_77deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__554)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(18, 2033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2094
 * 
 * 
 *     def vals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_79vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__555)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(18, 2094, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2097
 *         return self._mknp([b.val() for b in self.bins()])
 * 
 *     def auc(self,includeBinVol=True,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         return self.areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_81auc, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_auc, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__556)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_auc, __pyx_t_2) < 0) __PYX_ERR(18, 2097, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2101
 * 
 * 
 *     def scale(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scale(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_83scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__557)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(18, 2101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2158
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_85indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__558)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(18, 2158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2215
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_87maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__559)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(18, 2215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2272
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sources(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sources()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_89sources, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_sources, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__560)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_sources, __pyx_t_2) < 0) __PYX_ERR(18, 2272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2329
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def areaUnderCurve(self, includeBinVol=True, includeOverflows=False, includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().areaUnderCurve(includeBinVol,includeOverflows,includeMaskedBins)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_91areaUnderCurve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_areaUnderCurve, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__561)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__435);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_areaUnderCurve, __pyx_t_2) < 0) __PYX_ERR(18, 2329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2386
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False, includeOverflows=False, includeMaskedBins=False, pat_uncorr="^stat|^uncor"):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().covarianceMatrix(ignoreOffDiagonalTerms,includeOverflows,includeMaskedBins,pat_uncorr)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_93covarianceMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_covarianceMatri, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__562)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__443);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_covarianceMatrix, __pyx_t_2) < 0) __PYX_ERR(18, 2386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2443
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_95numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__563)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(18, 2443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2502
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_97xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__564)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(18, 2502, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2561
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_99xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__565)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(18, 2561, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2584
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_101xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__566)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(18, 2584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2607
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_103xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__567)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(18, 2607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2630
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__95 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2630, __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(18, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(18, 2630, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(18, 2630, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_105rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__568)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(18, 2630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2653
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_107rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__569)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(18, 2653, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2676
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_109rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__570)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(18, 2676, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2682
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_111numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__571)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(18, 2682, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2741
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_113yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__572)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(18, 2741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2800
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_115yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__573)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(18, 2800, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2823
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_117yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__574)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(18, 2823, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2846
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_119yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__575)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(18, 2846, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2869
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__96 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2869, __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(18, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(18, 2869, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(18, 2869, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_121rebinYBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinYBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__576)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinYBy, __pyx_t_2) < 0) __PYX_ERR(18, 2869, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2892
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_123rebinYTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinYTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__577)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinYTo, __pyx_t_2) < 0) __PYX_ERR(18, 2892, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2915
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_125rebinY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__578)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2915, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinY, __pyx_t_2) < 0) __PYX_ERR(18, 2915, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2921
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_127numBinsZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_numBinsZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__579)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_numBinsZ, __pyx_t_2) < 0) __PYX_ERR(18, 2921, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":2980
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_129zEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_zEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__580)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 2980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_zEdges, __pyx_t_2) < 0) __PYX_ERR(18, 2980, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3039
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_131zWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_zWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__581)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_zWidths, __pyx_t_2) < 0) __PYX_ERR(18, 3039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3062
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_133zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__582)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(18, 3062, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3085
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_135zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__583)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(18, 3085, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3108
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__97 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3108, __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(18, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(18, 3108, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(18, 3108, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_137rebinZBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinZBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__584)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinZBy, __pyx_t_2) < 0) __PYX_ERR(18, 3108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3131
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_139rebinZTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinZTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__585)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinZTo, __pyx_t_2) < 0) __PYX_ERR(18, 3131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "include/generated/BinnedEstimate3D.pyx":3154
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_16BinnedEstimate3D_141rebinZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D_rebinZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__586)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D, __pyx_n_s_rebinZ, __pyx_t_2) < 0) __PYX_ERR(18, 3154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedEstimate3D);

  /* "(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_16BinnedEstimate3D_155__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__587)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_16BinnedEstimate3D_157__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedEstimate3D___setstate_cyth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__588)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedEstimate3D.pyx":3574
 * 
 * ## Convenience alias
 * Estimate3D = BinnedEstimate3D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Estimate3D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedEstimate3D)) < 0) __PYX_ERR(18, 3574, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto1D[double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_3_BinnedHisto1D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__589)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_BinnedHisto1D__init1, __pyx_t_2) < 0) __PYX_ERR(19, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_5_BinnedHisto1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__590)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_BinnedHisto1D__init2, __pyx_t_2) < 0) __PYX_ERR(19, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_7_BinnedHisto1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__591)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_BinnedHisto1D__init3, __pyx_t_2) < 0) __PYX_ERR(19, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedHisto1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_9_BinnedHisto1D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__592)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_BinnedHisto1D__init4, __pyx_t_2) < 0) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__593)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_set_config, __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_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto1D.
 *         Clone this BinnedHisto1D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__594)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(19, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_localToGlobalIndex, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__595)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(19, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn1D -> void.
 *         Set a Dbn1D at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__596)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(19, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn1D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn1D -> void.
 *         Set a Dbn1D at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__597)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(19, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn1D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__598)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(19, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__599)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_reset, __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_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__600)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(19, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__601)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(19, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__602)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(19, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__603)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(19, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__604)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(19, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__605)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_bin_2, __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_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__606)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(19, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__607)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(19, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__608)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(19, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__609)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(19, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__610)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(19, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__611)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(19, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_57mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__613)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__614);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_mkEstimate, __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_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":338
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_59mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__616)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__617);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(19, 338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":352
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedHisto1D self, BinnedHisto1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto1D -> BinnedEstimate1D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_61divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__618)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(19, 352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":389
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_67_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__619)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(19, 389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":397
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_69lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__620)); 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__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_lengthContent, __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_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":407
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_71serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__621)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(19, 407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":417
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_73deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__622)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(19, 417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":429
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_75lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__623)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(19, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":439
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_77serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__624)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(19, 439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":449
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_79deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__625)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(19, 449, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":462
 * 
 * 
 *     def fill(self, x, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_81fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__627)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(19, 462, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":477
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_83indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__628)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(19, 477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":486
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_85fillDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_fillDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__629)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_fillDim, __pyx_t_2) < 0) __PYX_ERR(19, 486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":495
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_87normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__631)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__632);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(19, 495, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":504
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_89scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__633)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(19, 504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":513
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_91sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__634)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(19, 513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":522
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_93sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__635)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(19, 522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":531
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_95sumWA, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_sumWA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__637)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_sumWA, __pyx_t_2) < 0) __PYX_ERR(19, 531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":540
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_97sumWA2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_sumWA2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__638)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_sumWA2, __pyx_t_2) < 0) __PYX_ERR(19, 540, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":549
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_99numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__639)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(19, 549, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":558
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_101effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__640)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(19, 558, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":567
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_103integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__641)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(19, 567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":576
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_105integralError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_integralError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__642)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_integralError, __pyx_t_2) < 0) __PYX_ERR(19, 576, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":585
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_107dVol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__643)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_dVol, __pyx_t_2) < 0) __PYX_ERR(19, 585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":594
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_109density, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_density, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__644)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_density, __pyx_t_2) < 0) __PYX_ERR(19, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":603
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_111densityError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_densityError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__645)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_densityError, __pyx_t_2) < 0) __PYX_ERR(19, 603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":612
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_113densitySum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_densitySum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__646)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_densitySum, __pyx_t_2) < 0) __PYX_ERR(19, 612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":621
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_115maxDensity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maxDensity, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__647)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maxDensity, __pyx_t_2) < 0) __PYX_ERR(19, 621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":630
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_117maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__648)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(19, 630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":639
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_119numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__649)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(19, 639, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":650
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_121xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__650)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(19, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":661
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_123xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__651)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(19, 661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":668
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_125xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__652)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(19, 668, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":675
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_127xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__653)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(19, 675, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":682
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__98 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 682, __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(19, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(19, 682, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(19, 682, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_129rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__654)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(19, 682, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":689
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_131rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__655)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(19, 689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":696
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_133xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__656)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(19, 696, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":703
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_135xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__657)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(19, 703, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":710
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_137xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__658)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(19, 710, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":717
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_139xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__659)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(19, 717, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":724
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_141xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__660)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(19, 724, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "include/generated/BinnedHisto1D.pyx":731
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto1D_143rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__661)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(19, 731, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto1D);

  /* "(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_13BinnedHisto1D_157__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__662)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_13BinnedHisto1D_159__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__663)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto1D.pyx":815
 * 
 * ## Convenience alias
 * Histo1D = BinnedHisto1D             # <<<<<<<<<<<<<<
 * H1D = Histo1D
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Histo1D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto1D)) < 0) __PYX_ERR(19, 815, __pyx_L1_error)

  /* "include/generated/BinnedHisto1D.pyx":816
 * ## Convenience alias
 * Histo1D = BinnedHisto1D
 * H1D = Histo1D             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Histo1D); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_H1D, __pyx_t_2) < 0) __PYX_ERR(19, 816, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto2D[double,double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_3_BinnedHisto2D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__664)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_BinnedHisto2D__init1, __pyx_t_2) < 0) __PYX_ERR(20, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_5_BinnedHisto2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__665)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_BinnedHisto2D__init2, __pyx_t_2) < 0) __PYX_ERR(20, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_7_BinnedHisto2D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__666)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_BinnedHisto2D__init3, __pyx_t_2) < 0) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedHisto2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_9_BinnedHisto2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__667)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_BinnedHisto2D__init4, __pyx_t_2) < 0) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__668)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(20, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto2D.
 *         Clone this BinnedHisto2D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__669)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(20, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_localToGlobalIndex, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(20, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__671)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(20, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__672)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(20, 338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__673)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(20, 362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__674)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(20, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__675)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(20, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__676)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(20, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__677)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(20, 441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__678)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(20, 464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__679)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(20, 490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__680)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(20, 496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__681)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(20, 531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__682)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(20, 537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__683)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(20, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__684)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(20, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__685)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(20, 570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__686)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(20, 574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_57mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__687)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__614);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_mkEstimate, __pyx_t_2) < 0) __PYX_ERR(20, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":634
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_59mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__688)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__617);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(20, 634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":666
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedHisto2D self, BinnedHisto2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto2D -> BinnedEstimate2D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_61divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__689)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(20, 666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":739
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_67_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__690)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(20, 739, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":747
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_69lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__691)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(20, 747, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":769
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_71serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__692)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(20, 769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":791
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_73deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__693)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(20, 791, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":815
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_75lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__694)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(20, 815, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":837
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_77serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__695)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(20, 837, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":859
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_79deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__696)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(20, 859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":884
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_81fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__698)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(20, 884, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":911
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_83indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__699)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(20, 911, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":932
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_85fillDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_fillDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__700)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_fillDim, __pyx_t_2) < 0) __PYX_ERR(20, 932, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":953
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_87normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__701)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__632);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(20, 953, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":974
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_89scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__702)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(20, 974, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":995
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_91sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__703)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(20, 995, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1016
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_93sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__704)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(20, 1016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1037
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_95sumWA, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_sumWA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__705)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_sumWA, __pyx_t_2) < 0) __PYX_ERR(20, 1037, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1058
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_97sumWA2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_sumWA2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__706)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_sumWA2, __pyx_t_2) < 0) __PYX_ERR(20, 1058, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1079
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_99numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__707)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(20, 1079, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1100
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_101effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__708)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(20, 1100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1121
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_103integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__709)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(20, 1121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1142
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_105integralError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_integralError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__710)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_integralError, __pyx_t_2) < 0) __PYX_ERR(20, 1142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1163
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_107dVol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__711)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_dVol, __pyx_t_2) < 0) __PYX_ERR(20, 1163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1184
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_109density, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_density, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__712)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_density, __pyx_t_2) < 0) __PYX_ERR(20, 1184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1205
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_111densityError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_densityError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__713)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_densityError, __pyx_t_2) < 0) __PYX_ERR(20, 1205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1226
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_113densitySum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_densitySum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__714)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_densitySum, __pyx_t_2) < 0) __PYX_ERR(20, 1226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1247
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_115maxDensity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maxDensity, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__715)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maxDensity, __pyx_t_2) < 0) __PYX_ERR(20, 1247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1268
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_117maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__716)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(20, 1268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1289
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_119numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__717)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(20, 1289, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1312
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_121xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__718)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(20, 1312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1335
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_123xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__719)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(20, 1335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1346
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_125xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__720)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(20, 1346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1357
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_127xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__721)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(20, 1357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1368
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__99 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1368, __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(20, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(20, 1368, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(20, 1368, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_129rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__722)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(20, 1368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1379
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_131rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__723)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(20, 1379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1390
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_133xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__724)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(20, 1390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1401
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_135xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__725)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(20, 1401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1412
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_137xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__726)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(20, 1412, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1423
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_139xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__727)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(20, 1423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1434
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_141xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__728)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(20, 1434, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1445
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_143rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__729)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(20, 1445, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1451
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_145numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__730)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(20, 1451, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1474
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_147yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__731)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(20, 1474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1497
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_149yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__732)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(20, 1497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1508
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_151yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__733)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(20, 1508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1519
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_153yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__734)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(20, 1519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1530
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__100 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1530, __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(20, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(20, 1530, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(20, 1530, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_155rebinYBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinYBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__735)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinYBy, __pyx_t_2) < 0) __PYX_ERR(20, 1530, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1541
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_157rebinYTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinYTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__736)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinYTo, __pyx_t_2) < 0) __PYX_ERR(20, 1541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1552
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_159yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__737)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(20, 1552, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1563
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_161yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__738)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(20, 1563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1574
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_163yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__739)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(20, 1574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1585
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_165yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__740)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(20, 1585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1596
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_167yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__741)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(20, 1596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "include/generated/BinnedHisto2D.pyx":1607
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto2D_169rebinY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D_rebinY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__742)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D, __pyx_n_s_rebinY, __pyx_t_2) < 0) __PYX_ERR(20, 1607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto2D);

  /* "(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_13BinnedHisto2D_183__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__743)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_13BinnedHisto2D_185__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__744)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto2D.pyx":1775
 * 
 * ## Convenience alias
 * Histo2D = BinnedHisto2D             # <<<<<<<<<<<<<<
 * H2D = Histo2D
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Histo2D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto2D)) < 0) __PYX_ERR(20, 1775, __pyx_L1_error)

  /* "include/generated/BinnedHisto2D.pyx":1776
 * ## Convenience alias
 * Histo2D = BinnedHisto2D
 * H2D = Histo2D             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Histo2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 1776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_H2D, __pyx_t_2) < 0) __PYX_ERR(20, 1776, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto3D.pyx":40
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedHisto3D[double,double,double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_3_BinnedHisto3D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__745)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_BinnedHisto3D__init1, __pyx_t_2) < 0) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":44
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, edgesA3, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_5_BinnedHisto3D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__747)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_BinnedHisto3D__init2, __pyx_t_2) < 0) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":58
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, nbinsZ, lowerZ, upperZ, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_7_BinnedHisto3D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__748)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_BinnedHisto3D__init3, __pyx_t_2) < 0) __PYX_ERR(21, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":66
 *         self.__init2(edges[0], edges[1], edges[2], path, title)
 * 
 *     def __init4(self, BinnedHisto3D other):             # <<<<<<<<<<<<<<
 *         if other._config == "ddd":
 *           cutil.set_owned_ptr(self, <c.BinnedHisto3D[double,double,double]*> other.binned_ddd_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_9_BinnedHisto3D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__749)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_BinnedHisto3D__init4, __pyx_t_2) < 0) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":77
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__750)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_set_config, __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_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":100
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedHisto3D.
 *         Clone this BinnedHisto3D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__751)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(21, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":113
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 3) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_localToGlobalIndex, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__752)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_localToGlobalIndex, __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_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":123
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__753)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":132
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__754)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_local_set, __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_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":140
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__755)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(21, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":148
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__756)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(21, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":156
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedHisto."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__757)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_numBins, __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_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":164
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__758)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":171
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__759)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(21, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":178
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__760)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(21, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":188
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__761)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_bins, __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_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":194
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__762)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(21, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":205
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__763)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(21, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":211
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y, z) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__764)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(21, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":215
 *         return self.bin( self.indexAt(x, y, z) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__765)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(21, 215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":222
 *           return self.binned_ddd_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__766)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(21, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":228
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, z, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y, z), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__767)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(21, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":232
 *         return self.maskBin( self.indexAt(x, y, z), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__768)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(21, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":241
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_57mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__769)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__614);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_mkEstimate, __pyx_t_2) < 0) __PYX_ERR(21, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":252
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_59mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__770)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__617);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(21, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":260
 *           return cutil.new_owned_cls(Scatter4D, s.newclone())
 * 
 *     def divideBy(BinnedHisto3D self, BinnedHisto3D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedHisto3D -> BinnedEstimate3D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_61divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__771)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(21, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":285
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_67_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__772)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(21, 285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":293
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_69lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__773)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(21, 293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":299
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_71serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__774)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(21, 299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":305
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_73deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__775)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(21, 305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":313
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_75lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__776)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(21, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":319
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_77serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__777)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(21, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":325
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_79deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__778)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(21, 325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":334
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_81fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__780)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(21, 334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":345
 * 
 * 
 *     def indexAt(self, x, y, z):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().indexAt(x, y, z)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_83indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__781)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(21, 345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":350
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().fillDim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_85fillDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_fillDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__782)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_fillDim, __pyx_t_2) < 0) __PYX_ERR(21, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":355
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_87normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__783)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__632);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(21, 355, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":360
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().scaleW(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_89scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__784)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(21, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":365
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_91sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__785)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(21, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":370
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumW2(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_93sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__786)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(21, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":375
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_95sumWA, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_sumWA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__787)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_sumWA, __pyx_t_2) < 0) __PYX_ERR(21, 375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":380
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_97sumWA2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_sumWA2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__788)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_sumWA2, __pyx_t_2) < 0) __PYX_ERR(21, 380, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":385
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().numEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_99numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__789)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(21, 385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":390
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_101effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__790)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(21, 390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":395
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integral(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_103integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__791)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(21, 395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":400
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().integralError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_105integralError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_integralError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__792)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_integralError, __pyx_t_2) < 0) __PYX_ERR(21, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":405
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().dVol(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_107dVol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__793)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_dVol, __pyx_t_2) < 0) __PYX_ERR(21, 405, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":410
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().density(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_109density, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_density, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__794)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_density, __pyx_t_2) < 0) __PYX_ERR(21, 410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":415
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densityError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_111densityError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_densityError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__795)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_densityError, __pyx_t_2) < 0) __PYX_ERR(21, 415, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":420
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().densitySum(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_113densitySum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_densitySum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__796)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_densitySum, __pyx_t_2) < 0) __PYX_ERR(21, 420, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":425
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maxDensity(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_115maxDensity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maxDensity, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__797)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maxDensity, __pyx_t_2) < 0) __PYX_ERR(21, 425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":430
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "ddd":
 *           return self.binned_ddd_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_117maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__798)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(21, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":435
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_119numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__799)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(21, 435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":442
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_121xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__800)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(21, 442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":449
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_123xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__801)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(21, 449, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":456
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_125xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__802)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(21, 456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":463
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_127xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__803)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(21, 463, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":470
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__101 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 470, __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(21, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(21, 470, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(21, 470, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_129rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__804)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(21, 470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":477
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_131rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__805)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(21, 477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":484
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_133xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__806)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(21, 484, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":491
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_135xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__807)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(21, 491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":498
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_137xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__808)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 498, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":505
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_139xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__809)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":512
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_141xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__810)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(21, 512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":519
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_143rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__811)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(21, 519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":525
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_145numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__812)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(21, 525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":532
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_147yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__813)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(21, 532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":539
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_149yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__814)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(21, 539, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":546
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_151yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__815)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(21, 546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":553
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_153yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__816)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(21, 553, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":560
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__102 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 560, __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(21, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(21, 560, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(21, 560, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_155rebinYBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinYBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__817)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinYBy, __pyx_t_2) < 0) __PYX_ERR(21, 560, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":567
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_157rebinYTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinYTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__818)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinYTo, __pyx_t_2) < 0) __PYX_ERR(21, 567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":574
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_159yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__819)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(21, 574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":581
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_161yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__820)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(21, 581, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":588
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_163yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__821)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":595
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_165yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__822)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 595, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":602
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_167yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__823)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(21, 602, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":609
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_169rebinY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__824)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinY, __pyx_t_2) < 0) __PYX_ERR(21, 609, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":615
 *             self.rebinYBy(arg, *args, **kwargs)
 * 
 *     def numBinsZ(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsZ on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_171numBinsZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_numBinsZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__825)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_numBinsZ, __pyx_t_2) < 0) __PYX_ERR(21, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":622
 * 
 * 
 *     def zEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """zEdges on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_173zEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__826)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zEdges, __pyx_t_2) < 0) __PYX_ERR(21, 622, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":629
 * 
 * 
 *     def zWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zWidths on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_175zWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__827)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zWidths, __pyx_t_2) < 0) __PYX_ERR(21, 629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":636
 * 
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """zMin on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_177zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__828)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(21, 636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":643
 * 
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """zMax on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_179zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__829)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(21, 643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":650
 * 
 * 
 *     def rebinZBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinZBy on z axis."""
 *         if self._config == "ddd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__103 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 650, __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(21, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(21, 650, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(21, 650, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_181rebinZBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinZBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__830)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinZBy, __pyx_t_2) < 0) __PYX_ERR(21, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":657
 * 
 * 
 *     def rebinZTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinZTo on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_183rebinZTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinZTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__831)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinZTo, __pyx_t_2) < 0) __PYX_ERR(21, 657, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":664
 * 
 * 
 *     def zMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zMean on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_185zMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__832)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zMean, __pyx_t_2) < 0) __PYX_ERR(21, 664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":671
 * 
 * 
 *     def zVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zVariance on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_187zVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__833)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zVariance, __pyx_t_2) < 0) __PYX_ERR(21, 671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":678
 * 
 * 
 *     def zStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdDev on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_189zStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__834)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 678, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":685
 * 
 * 
 *     def zStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zStdErr on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_191zStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__835)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 685, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":692
 * 
 * 
 *     def zRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """zRMS on z axis."""
 *         if self._config == "ddd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_193zRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_zRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__836)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_zRMS, __pyx_t_2) < 0) __PYX_ERR(21, 692, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "include/generated/BinnedHisto3D.pyx":699
 * 
 * 
 *     def rebinZ(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinZTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13BinnedHisto3D_195rebinZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D_rebinZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__837)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D, __pyx_n_s_rebinZ, __pyx_t_2) < 0) __PYX_ERR(21, 699, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedHisto3D);

  /* "(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_13BinnedHisto3D_209__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__838)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_13BinnedHisto3D_211__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedHisto3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__839)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedHisto3D.pyx":755
 * 
 * ## Convenience alias
 * Histo3D = BinnedHisto3D             # <<<<<<<<<<<<<<
 * H3D = Histo3D
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Histo3D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedHisto3D)) < 0) __PYX_ERR(21, 755, __pyx_L1_error)

  /* "include/generated/BinnedHisto3D.pyx":756
 * ## Convenience alias
 * Histo3D = BinnedHisto3D
 * H3D = Histo3D             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Histo3D); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_H3D, __pyx_t_2) < 0) __PYX_ERR(21, 756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile1D.pyx":48
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile1D[double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_3_BinnedProfile1D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__840)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_BinnedProfile1D__init1, __pyx_t_2) < 0) __PYX_ERR(22, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":52
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         cdef vector[vector[double]] edges_d
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_5_BinnedProfile1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__841)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_BinnedProfile1D__init2, __pyx_t_2) < 0) __PYX_ERR(22, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":72
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_7_BinnedProfile1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__842)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_BinnedProfile1D__init3, __pyx_t_2) < 0) __PYX_ERR(22, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":78
 *         self.__init2(edges[0], path, title)
 * 
 *     def __init4(self, BinnedProfile1D other):             # <<<<<<<<<<<<<<
 *         if other._config == "d":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile1D[double]*> other.binned_d_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_9_BinnedProfile1D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__843)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_BinnedProfile1D__init4, __pyx_t_2) < 0) __PYX_ERR(22, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":93
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__844)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(22, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":130
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile1D.
 *         Clone this BinnedProfile1D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__845)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(22, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":147
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 1) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_localToGlobalInd, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__846)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(22, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":161
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn2D -> void.
 *         Set a Dbn2D at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__847)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(22, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":174
 * 
 * 
 *     def _local_set(self, indices, Dbn2D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn2D -> void.
 *         Set a Dbn2D at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__848)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(22, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":186
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn2D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__849)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(22, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":194
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__850)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(22, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":206
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__851)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(22, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":218
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__852)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(22, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":229
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__853)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(22, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":240
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__854)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(22, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":254
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__855)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(22, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":260
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__856)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(22, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":277
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__857)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(22, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":283
 *         return self._bin(idx)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__858)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(22, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":287
 *         return self.bin( self.indexAt(x) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__859)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(22, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":298
 *           return self.binned_s_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__860)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(22, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":304
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__861)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(22, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":308
 *         return self.maskBin( self.indexAt(x), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__862)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(22, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":321
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_57mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__863)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__614);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_mkEstimate, __pyx_t_2) < 0) __PYX_ERR(22, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":338
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto1D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_59mkHisto, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_mkHisto, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__865)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_mkHisto, __pyx_t_2) < 0) __PYX_ERR(22, 338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":355
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_61mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__866)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__617);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(22, 355, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":369
 *           return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(BinnedProfile1D self, BinnedProfile1D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile1D -> BinnedEstimate1D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_63divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__867)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":406
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_69_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__868)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":414
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_71lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__869)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(22, 414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":424
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_73serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__870)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(22, 424, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":434
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_75deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_deserializeConte, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__871)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(22, 434, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":446
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_77lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__872)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(22, 446, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":456
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_79serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__873)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(22, 456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":466
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_81deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__874)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(22, 466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":479
 * 
 * 
 *     def fill(self, x, y, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_83fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__875)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(22, 479, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":494
 * 
 * 
 *     def indexAt(self, x):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().indexAt(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_85indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__876)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(22, 494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":503
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().fillDim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_87fillDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_fillDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__877)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_fillDim, __pyx_t_2) < 0) __PYX_ERR(22, 503, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":512
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().normalize(normto,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_89normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__878)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__632);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(22, 512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":521
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().scaleW(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_91scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__879)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(22, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":530
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_93sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__880)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(22, 530, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":539
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumW2(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_95sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__881)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(22, 539, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":548
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_97sumWA, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_sumWA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__882)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_sumWA, __pyx_t_2) < 0) __PYX_ERR(22, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":557
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_99sumWA2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_sumWA2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__883)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_sumWA2, __pyx_t_2) < 0) __PYX_ERR(22, 557, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":566
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().numEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_101numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__884)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(22, 566, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":575
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().effNumEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_103effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__885)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(22, 575, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":584
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integral(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_105integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__886)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(22, 584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":593
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().integralError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_107integralError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_integralError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__887)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_integralError, __pyx_t_2) < 0) __PYX_ERR(22, 593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":602
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().dVol(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_109dVol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__888)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_dVol, __pyx_t_2) < 0) __PYX_ERR(22, 602, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":611
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().density(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_111density, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_density, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__889)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_density, __pyx_t_2) < 0) __PYX_ERR(22, 611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":620
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densityError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_113densityError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_densityError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__890)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_densityError, __pyx_t_2) < 0) __PYX_ERR(22, 620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":629
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().densitySum(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_115densitySum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_densitySum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__891)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_densitySum, __pyx_t_2) < 0) __PYX_ERR(22, 629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":638
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maxDensity(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_117maxDensity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maxDensity, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__892)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maxDensity, __pyx_t_2) < 0) __PYX_ERR(22, 638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":647
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "d":
 *           return self.binned_d_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_119maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__893)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(22, 647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":656
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_121numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__894)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(22, 656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":667
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_123xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__895)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(22, 667, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":678
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_125xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__896)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(22, 678, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":685
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_127xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__897)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(22, 685, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":692
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_129xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__898)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(22, 692, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":699
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "d":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__104 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 699, __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(22, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(22, 699, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(22, 699, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_131rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__899)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(22, 699, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":706
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_133rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__900)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(22, 706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":713
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_135xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__901)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(22, 713, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":720
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_137xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__902)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(22, 720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":727
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_139xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__903)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(22, 727, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":734
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_141xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__904)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(22, 734, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":741
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "d":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_143xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__905)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "include/generated/BinnedProfile1D.pyx":748
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile1D_145rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__906)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(22, 748, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile1D);

  /* "(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_15BinnedProfile1D_159__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__907)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_15BinnedProfile1D_161__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile1D___setstate_cytho, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__908)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile1D.pyx":832
 * 
 * ## Convenience alias
 * Profile1D = BinnedProfile1D             # <<<<<<<<<<<<<<
 * P1D = Profile1D
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Profile1D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile1D)) < 0) __PYX_ERR(22, 832, __pyx_L1_error)

  /* "include/generated/BinnedProfile1D.pyx":833
 * ## Convenience alias
 * Profile1D = BinnedProfile1D
 * P1D = Profile1D             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Profile1D); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P1D, __pyx_t_2) < 0) __PYX_ERR(22, 833, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile2D.pyx":72
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.BinnedProfile2D[double,double]())
 *         #self._set_config()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_3_BinnedProfile2D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__909)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_BinnedProfile2D__init1, __pyx_t_2) < 0) __PYX_ERR(23, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":76
 *         #self._set_config()
 * 
 *     def __init2(self, edgesA1, edgesA2, str path = "", str title = ""):             # <<<<<<<<<<<<<<
 *         assert( hasattr(edgesA1, "__iter__") and len(edgesA1) )
 *         assert( hasattr(edgesA2, "__iter__") and len(edgesA2) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_5_BinnedProfile2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__910)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_BinnedProfile2D__init2, __pyx_t_2) < 0) __PYX_ERR(23, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":130
 *           raise RuntimeError("Unknown axis combination encountered!")
 * 
 *     def __init3(self, nbinsX, lowerX, upperX, nbinsY, lowerY, upperY, str path="", str title=""):             # <<<<<<<<<<<<<<
 *         edges = [
 *             linspace(nbinsX, lowerX, upperX),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_7_BinnedProfile2D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__911)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_BinnedProfile2D__init3, __pyx_t_2) < 0) __PYX_ERR(23, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":137
 *         self.__init2(edges[0], edges[1], path, title)
 * 
 *     def __init4(self, BinnedProfile2D other):             # <<<<<<<<<<<<<<
 *         if other._config == "dd":
 *           cutil.set_owned_ptr(self, <c.BinnedProfile2D[double,double]*> other.binned_dd_ptr().newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_9_BinnedProfile2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__912)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_BinnedProfile2D__init4, __pyx_t_2) < 0) __PYX_ERR(23, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":164
 *         return "<%s[%s] '%s' %d bins>" % (self.__class__.__name__, self._config, self.path(), self.numBins())
 * 
 *     def _set_config(self, *args):             # <<<<<<<<<<<<<<
 *         if len(args) == 1 and isinstance(args[0], Binning):
 *             self._binning = args[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_15_set_config, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D__set_config, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__913)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_set_config, __pyx_t_2) < 0) __PYX_ERR(23, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":258
 *             self._config = self._binning.config()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> BinnedProfile2D.
 *         Clone this BinnedProfile2D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__914)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(23, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":287
 * 
 * 
 *     def localToGlobalIndex(self, *indices):             # <<<<<<<<<<<<<<
 *         """Convert local indices to internal global index."""
 *         assert(len(indices) == 2) # Check dimensions match!
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_19localToGlobalIndex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_localToGlobalInd, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__915)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_localToGlobalIndex, __pyx_t_2) < 0) __PYX_ERR(23, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":313
 * 
 * 
 *     def _global_set(self, size_t idx, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """int, Dbn3D -> void.
 *         Set a Dbn3D at bin position idx."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_21_global_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D__global_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__916)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_global_set, __pyx_t_2) < 0) __PYX_ERR(23, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":338
 * 
 * 
 *     def _local_set(self, indices, Dbn3D cont):             # <<<<<<<<<<<<<<
 *         """vector[int], Dbn3D -> void.
 *         Set a Dbn3D at bin with local indices."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_23_local_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D__local_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__917)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_local_set, __pyx_t_2) < 0) __PYX_ERR(23, 338, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":362
 * 
 * 
 *     def set(self, *args):             # <<<<<<<<<<<<<<
 *         """Set bin with Dbn3D."""
 *         assert(len(args) == 2) # Arguments should be bin index and content
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__918)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(23, 362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":370
 *             self._global_set(*args)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_27reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__919)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(23, 370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":394
 * 
 * 
 *     def numBins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins in this BinnedProfile."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_29numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__920)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(23, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":418
 * 
 * 
 *     def isMasked(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is masked."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_31isMasked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_isMasked, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__921)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_isMasked, __pyx_t_2) < 0) __PYX_ERR(23, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":441
 * 
 * 
 *     def isVisible(self, index):             # <<<<<<<<<<<<<<
 *         """Check if bin with index is visible."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_33isVisible, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_isVisible, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__922)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_isVisible, __pyx_t_2) < 0) __PYX_ERR(23, 441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":464
 * 
 * 
 *     def binDim(self):             # <<<<<<<<<<<<<<
 *         """Return binning dimension."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_35binDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_binDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__923)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_binDim, __pyx_t_2) < 0) __PYX_ERR(23, 464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":490
 *         return self.numBins()
 * 
 *     def bins(self, includeOverflows = False, includeMaskedBins = False):             # <<<<<<<<<<<<<<
 *         """Access the list of bins."""
 *         return self._mknp([self.bin(i) for i in range(self.numBins(True, True)) \
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_39bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__924)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(23, 490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":496
 *                                        and (includeMaskedBins or not self.isMasked(i)) ])
 * 
 *     def _bin(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         rtn = None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_41_bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D__bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__925)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_bin_2, __pyx_t_2) < 0) __PYX_ERR(23, 496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":531
 *         return rtn
 * 
 *     def bin(self, *indices):             # <<<<<<<<<<<<<<
 *         """Access the i'th bin."""
 *         assert(len(indices)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_43bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__926)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(23, 531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":537
 *         return self._bin(idx)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Access the coords."""
 *         return self.bin( self.indexAt(x, y) )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_45binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__927)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(23, 537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":541
 *         return self.bin( self.indexAt(x, y) )
 * 
 *     def maskBin(self, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin the i'th bin."""
 *         if isinstance(idx, list):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_47maskBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maskBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__928)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maskBin, __pyx_t_2) < 0) __PYX_ERR(23, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":564
 *           return self.binned_ss_ptr().maskBin(idx, status)
 * 
 *     def maskBins(self, index_list, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask serval bins.."""
 *         assert(len(index_list)) # Gotta at least provide one index
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_49maskBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maskBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__929)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maskBins, __pyx_t_2) < 0) __PYX_ERR(23, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":570
 *             self.maskBin(idx, status)
 * 
 *     def maskBinAt(self, x, y, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask bin at the set of coords."""
 *         return self.maskBin( self.indexAt(x, y), status )
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_51maskBinAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maskBinAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__930)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maskBinAt, __pyx_t_2) < 0) __PYX_ERR(23, 570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":574
 *         return self.maskBin( self.indexAt(x, y), status )
 * 
 *     def maskSlice(self, dim, idx, status = True):             # <<<<<<<<<<<<<<
 *         """Mask/Unmask a slice at idx along axis dim."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_53maskSlice, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maskSlice, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__931)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maskSlice, __pyx_t_2) < 0) __PYX_ERR(23, 574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":599
 *         return self.bin(i)
 * 
 *     def mkEstimate(self, str path = "", str source = "", divbyvol = True):             # <<<<<<<<<<<<<<
 *         """None -> Estimate.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_57mkEstimate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_mkEstimate, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__932)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__614);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_mkEstimate, __pyx_t_2) < 0) __PYX_ERR(23, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":634
 *         return rtn
 * 
 *     def mkHisto(self, str path = ""):             # <<<<<<<<<<<<<<
 *         """None -> BinnedHisto2D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_59mkHisto, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_mkHisto, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__933)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_mkHisto, __pyx_t_2) < 0) __PYX_ERR(23, 634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":669
 *         return rtn
 * 
 *     def mkScatter(self, path = "", binwidthdiv=True,useFocus=False,includeOverflows=False,includeMaskedBins=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_61mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__934)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__617);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(23, 669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":701
 *           return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 *     def divideBy(BinnedProfile2D self, BinnedProfile2D other, efficiency=False):             # <<<<<<<<<<<<<<
 *         """BinnedProfile2D -> BinnedEstimate2D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_63divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__935)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(23, 701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":774
 *         return self.divideBy(other)
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_69_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__936)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(23, 774, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":782
 * 
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisation data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_71lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__937)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(23, 782, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":804
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_73serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__938)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(23, 804, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":826
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_75deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_deserializeConte, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__939)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(23, 826, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":850
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisation meta-data vector for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_77lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__940)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(23, 850, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":872
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_79serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__941)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(23, 872, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":894
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_81deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__942)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(23, 894, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":919
 * 
 * 
 *     def fill(self, x, y, z, weight = 1.0, fraction = 1.0):             # <<<<<<<<<<<<<<
 *         """
 *         ([coords], float weight=1.0, float fraction=1.0) -> int
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_83fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__943)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(23, 919, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":946
 * 
 * 
 *     def indexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().indexAt(x, y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_85indexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_indexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__944)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_indexAt, __pyx_t_2) < 0) __PYX_ERR(23, 946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":967
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def fillDim(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().fillDim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_87fillDim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_fillDim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__945)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_fillDim, __pyx_t_2) < 0) __PYX_ERR(23, 967, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":988
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def normalize(self, normto=1.0, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().normalize(normto,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_89normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__946)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__632);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(23, 988, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1009
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def scaleW(self, factor):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().scaleW(factor)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_91scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__947)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(23, 1009, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1030
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_93sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__948)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(23, 1030, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1051
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumW2(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumW2(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_95sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__949)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(23, 1051, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1072
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_97sumWA, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_sumWA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__950)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_sumWA, __pyx_t_2) < 0) __PYX_ERR(23, 1072, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1093
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def sumWA2(self, dim, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().sumWA2(dim,includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_99sumWA2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_sumWA2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__951)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_sumWA2, __pyx_t_2) < 0) __PYX_ERR(23, 1093, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1114
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().numEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_101numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__952)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(23, 1114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1135
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def effNumEntries(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().effNumEntries(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_103effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__953)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(23, 1135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1156
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integral(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integral(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_105integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__954)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(23, 1156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1177
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def integralError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().integralError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_107integralError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_integralError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__955)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_integralError, __pyx_t_2) < 0) __PYX_ERR(23, 1177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1198
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def dVol(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().dVol(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_109dVol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_dVol, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__956)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_dVol, __pyx_t_2) < 0) __PYX_ERR(23, 1198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1219
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def density(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().density(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_111density, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_density, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__957)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_density, __pyx_t_2) < 0) __PYX_ERR(23, 1219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1240
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densityError(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densityError(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_113densityError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_densityError, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__958)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_densityError, __pyx_t_2) < 0) __PYX_ERR(23, 1240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1261
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def densitySum(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().densitySum(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_115densitySum, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_densitySum, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__959)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_densitySum, __pyx_t_2) < 0) __PYX_ERR(23, 1261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1282
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maxDensity(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maxDensity(includeOverflows)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_117maxDensity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maxDensity, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__960)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maxDensity, __pyx_t_2) < 0) __PYX_ERR(23, 1282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1303
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def maskedBins(self):             # <<<<<<<<<<<<<<
 *         if self._config == "dd":
 *           return self.binned_dd_ptr().maskedBins()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_119maskedBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_maskedBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__961)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_maskedBins, __pyx_t_2) < 0) __PYX_ERR(23, 1303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1324
 *         print("WARNING: method not supported for this axis type!")
 * 
 *     def numBinsX(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsX on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_121numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__962)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(23, 1324, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1347
 * 
 * 
 *     def xEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """xEdges on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_123xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__963)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(23, 1347, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1370
 * 
 * 
 *     def xWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xWidths on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_125xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__964)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(23, 1370, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1381
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """xMin on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_127xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__965)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(23, 1381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1392
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """xMax on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_129xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__966)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(23, 1392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1403
 * 
 * 
 *     def rebinXBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinXBy on x axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__105 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1403, __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(23, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(23, 1403, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(23, 1403, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_131rebinXBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinXBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__967)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinXBy, __pyx_t_2) < 0) __PYX_ERR(23, 1403, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1414
 * 
 * 
 *     def rebinXTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinXTo on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_133rebinXTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinXTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__968)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinXTo, __pyx_t_2) < 0) __PYX_ERR(23, 1414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1425
 * 
 * 
 *     def xMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xMean on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_135xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__969)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(23, 1425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1436
 * 
 * 
 *     def xVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xVariance on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_137xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__970)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(23, 1436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1447
 * 
 * 
 *     def xStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdDev on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_139xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__971)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(23, 1447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1458
 * 
 * 
 *     def xStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xStdErr on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_141xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__972)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(23, 1458, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1469
 * 
 * 
 *     def xRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """xRMS on x axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_143xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__973)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(23, 1469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1480
 * 
 * 
 *     def rebinX(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinXTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_145rebinX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__974)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinX, __pyx_t_2) < 0) __PYX_ERR(23, 1480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1486
 *             self.rebinXBy(arg, *args, **kwargs)
 * 
 *     def numBinsY(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """numBinsY on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_147numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__975)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(23, 1486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1509
 * 
 * 
 *     def yEdges(self, includeOverflows=False):             # <<<<<<<<<<<<<<
 *         """yEdges on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_149yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__976)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(23, 1509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1532
 * 
 * 
 *     def yWidths(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yWidths on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_151yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__977)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(23, 1532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1543
 * 
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """yMin on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_153yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__978)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(23, 1543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1554
 * 
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """yMax on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_155yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__979)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(23, 1554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1565
 * 
 * 
 *     def rebinYBy(self, n, begin=1, end=sys.maxsize):             # <<<<<<<<<<<<<<
 *         """rebinYBy on y axis."""
 *         if self._config == "dd":
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k__106 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1565, __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(23, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1)) __PYX_ERR(23, 1565, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(23, 1565, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_157rebinYBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinYBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__980)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinYBy, __pyx_t_2) < 0) __PYX_ERR(23, 1565, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1576
 * 
 * 
 *     def rebinYTo(self, edges):             # <<<<<<<<<<<<<<
 *         """rebinYTo on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_159rebinYTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinYTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__981)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinYTo, __pyx_t_2) < 0) __PYX_ERR(23, 1576, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1587
 * 
 * 
 *     def yMean(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yMean on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_161yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__982)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(23, 1587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1598
 * 
 * 
 *     def yVariance(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yVariance on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_163yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__983)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(23, 1598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1609
 * 
 * 
 *     def yStdDev(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdDev on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_165yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__984)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(23, 1609, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1620
 * 
 * 
 *     def yStdErr(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yStdErr on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_167yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__985)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(23, 1620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1631
 * 
 * 
 *     def yRMS(self, includeOverflows=True):             # <<<<<<<<<<<<<<
 *         """yRMS on y axis."""
 *         if self._config == "dd":
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_169yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__986)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__411);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(23, 1631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "include/generated/BinnedProfile2D.pyx":1642
 * 
 * 
 *     def rebinY(self, arg, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         if hasattr(arg, "__iter__"):
 *             self.rebinYTo(arg)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15BinnedProfile2D_171rebinY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D_rebinY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__987)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D, __pyx_n_s_rebinY, __pyx_t_2) < 0) __PYX_ERR(23, 1642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_BinnedProfile2D);

  /* "(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_15BinnedProfile2D_185__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__988)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_15BinnedProfile2D_187__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BinnedProfile2D___setstate_cytho, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__989)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/BinnedProfile2D.pyx":1810
 * 
 * ## Convenience alias
 * Profile2D = BinnedProfile2D             # <<<<<<<<<<<<<<
 * P2D = Profile2D
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Profile2D, ((PyObject *)__pyx_ptype_4yoda_4core_BinnedProfile2D)) < 0) __PYX_ERR(23, 1810, __pyx_L1_error)

  /* "include/generated/BinnedProfile2D.pyx":1811
 * ## Convenience alias
 * Profile2D = BinnedProfile2D
 * P2D = Profile2D             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Profile2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 1811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P2D, __pyx_t_2) < 0) __PYX_ERR(23, 1811, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Dbn1D.pyx":25
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     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_5copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__990)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(24, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":28
 *         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_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__991)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":36
 *         self.d1ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__993)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":48
 * 
 * 
 *     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__994)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(24, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":56
 *         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__995)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(24, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":64
 *         self.d1ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_15scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__997)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(24, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":72
 *         self.d1ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_17numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__998)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(24, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":76
 *         return self.d1ptr().numEntries()
 * 
 *     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_19effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__999)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(24, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":80
 *         return self.d1ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_21sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1000)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":84
 *         return self.d1ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_23sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1001)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_sumW2, __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_Dbn1D);

  /* "include/generated/Dbn1D.pyx":88
 *         return self.d1ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_25errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1002)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":92
 *         return self.d1ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_27relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1003)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(24, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":96
 *         return self.d1ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d1ptr().mean(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_29mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1005)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(24, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":100
 *         return self.d1ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d1ptr().variance(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_31variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1007)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(24, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":104
 *         return self.d1ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d1ptr().stdDev(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_33stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1008)); 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__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_stdDev, __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_Dbn1D);

  /* "include/generated/Dbn1D.pyx":108
 *         return self.d1ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d1ptr().stdErr(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_35stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1009)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(24, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":112
 *         return self.d1ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d1ptr().RMS(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_37RMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_RMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1010)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_RMS, __pyx_t_2) < 0) __PYX_ERR(24, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":122
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1011)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":130
 *         self.d1ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_45xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1012)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_xMean, __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_Dbn1D);

  /* "include/generated/Dbn1D.pyx":134
 *         return self.d1ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_47xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1013)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(24, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":138
 *         return self.d1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_49xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1014)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":142
 *         return self.d1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_51xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1015)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(24, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":146
 *         return self.d1ptr().xStdErr()
 * 
 *     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_53xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1016)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_xRMS, __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_Dbn1D);

  /* "include/generated/Dbn1D.pyx":150
 *         return self.d1ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_55sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1017)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(24, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/generated/Dbn1D.pyx":154
 *         return self.d1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_57sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1018)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(24, 154, __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_59__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1019)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_61__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1020)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Dbn2D.pyx":25
 *         return '<Dbn2D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_5copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1021)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_copy, __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_Dbn2D);

  /* "include/generated/Dbn2D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1022)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(25, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":36
 *         self.d2ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1024)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(25, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":49
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float 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__1025)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(25, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":57
 *         self.d2ptr().fill(x, y, weight, fraction)
 * 
 *     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__1026)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(25, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":65
 *         self.d2ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_15scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1027)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(25, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":73
 *         self.d2ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_17numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1028)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(25, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":77
 *         return self.d2ptr().numEntries()
 * 
 *     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_19effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1029)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(25, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":81
 *         return self.d2ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_21sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1030)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(25, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":85
 *         return self.d2ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_23sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1031)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(25, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":89
 *         return self.d2ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_25errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1032)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(25, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":93
 *         return self.d2ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_27relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1033)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(25, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":97
 *         return self.d2ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d2ptr().mean(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_29mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1034)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(25, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":101
 *         return self.d2ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d2ptr().variance(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_31variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1035)); 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__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_variance, __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_Dbn2D);

  /* "include/generated/Dbn2D.pyx":105
 *         return self.d2ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d2ptr().stdDev(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_33stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1036)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(25, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":109
 *         return self.d2ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d2ptr().stdErr(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_35stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1037)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(25, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":113
 *         return self.d2ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d2ptr().RMS(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_37RMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_RMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1038)); 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__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_RMS, __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_Dbn2D);

  /* "include/generated/Dbn2D.pyx":123
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1039)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(25, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":131
 *         self.d2ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d2ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_45xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1040)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":135
 *         return self.d2ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d2ptr().xVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_47xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1041)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(25, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":139
 *         return self.d2ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d2ptr().xStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_49xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1042)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(25, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":143
 *         return self.d2ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d2ptr().xStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_51xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1043)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(25, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":147
 *         return self.d2ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d2ptr().xRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_53xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1044)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(25, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":151
 *         return self.d2ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_55sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1045)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumWX, __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_Dbn2D);

  /* "include/generated/Dbn2D.pyx":155
 *         return self.d2ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_57sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1046)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(25, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_59scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1048)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(25, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":168
 *         self.d2ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d2ptr().yMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_61yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1049)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(25, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":172
 *         return self.d2ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d2ptr().yVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_63yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1050)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(25, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":176
 *         return self.d2ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d2ptr().yStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_65yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1051)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(25, 176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":180
 *         return self.d2ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d2ptr().yStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_67yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1052)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(25, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":184
 *         return self.d2ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d2ptr().yRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_69yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1053)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(25, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":188
 *         return self.d2ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_71sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1054)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(25, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":192
 *         return self.d2ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_73sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1055)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(25, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/generated/Dbn2D.pyx":196
 *         return self.d2ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_75crossTerm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_crossTerm, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1057)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D, __pyx_n_s_crossTerm, __pyx_t_2) < 0) __PYX_ERR(25, 196, __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_77__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1058)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_79__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1059)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Dbn3D.pyx":25
 *         return '<Dbn3D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_5copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1060)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(26, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":28
 *         return cutil.set_owned_ptr(self, new c.Dbn3D(deref(self.d3ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1061)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(26, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":36
 *         self.d3ptr().reset()
 * 
 *     def set(self, float numEntries, sumW, sumW2, sumWcross):             # <<<<<<<<<<<<<<
 *         """
 *         State-setting method.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1062)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(26, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":49
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float y, float z, float weight=1.0) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_11fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1063)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__154);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(26, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":57
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     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__1064)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(26, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":65
 *         self.d3ptr().scaleW(w)
 * 
 *     def scale(self, i, w):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_15scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1065)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(26, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":73
 *         self.d3ptr().scale(i, w)
 * 
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_17numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1066)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(26, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":77
 *         return self.d3ptr().numEntries()
 * 
 *     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_19effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1067)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(26, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":81
 *         return self.d3ptr().effNumEntries()
 * 
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_21sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1068)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(26, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":85
 *         return self.d3ptr().sumW()
 * 
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_23sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1069)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(26, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":89
 *         return self.d3ptr().sumW2()
 * 
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_25errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1070)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(26, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":93
 *         return self.d3ptr().errW()
 * 
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_27relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1071)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(26, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":97
 *         return self.d3ptr().relErrW()
 * 
 *     def mean(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted mean on axis dim"""
 *         return self.d3ptr().mean(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_29mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1072)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(26, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":101
 *         return self.d3ptr().mean(dim)
 * 
 *     def variance(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted variance on axis dim"""
 *         return self.d3ptr().variance(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_31variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1073)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(26, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":105
 *         return self.d3ptr().variance(dim)
 * 
 *     def stdDev(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation on axis dim"""
 *         return self.d3ptr().stdDev(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_33stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1074)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(26, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":109
 *         return self.d3ptr().stdDev(dim)
 * 
 *     def stdErr(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on the mean on axis dim"""
 *         return self.d3ptr().stdErr(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_35stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1075)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(26, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":113
 *         return self.d3ptr().stdErr(dim)
 * 
 *     def RMS(self, dim = 0):             # <<<<<<<<<<<<<<
 *         """Weighted RMS on axis dim"""
 *         return self.d3ptr().RMS(dim)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_37RMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_RMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1076)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__1006);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_RMS, __pyx_t_2) < 0) __PYX_ERR(26, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":123
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1077)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(26, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":131
 *         self.d3ptr().scaleX(x)
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d3ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_45xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1078)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(26, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":135
 *         return self.d3ptr().xMean()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d3ptr().xVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_47xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1079)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(26, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":139
 *         return self.d3ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d3ptr().xStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_49xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1080)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(26, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":143
 *         return self.d3ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d3ptr().xStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_51xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1081)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(26, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":147
 *         return self.d3ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d3ptr().xRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_53xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1082)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(26, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":151
 *         return self.d3ptr().xRMS()
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_55sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1083)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(26, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":155
 *         return self.d3ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_57sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1084)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(26, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":160
 * 
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_59scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1085)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(26, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":168
 *         self.d3ptr().scaleY(y)
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of y"""
 *         return self.d3ptr().yMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_61yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1086)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(26, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":172
 *         return self.d3ptr().yMean()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of y"""
 *         return self.d3ptr().yVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_63yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1087)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(26, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":176
 *         return self.d3ptr().yVariance()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of y"""
 *         return self.d3ptr().yStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_65yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1088)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(26, 176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":180
 *         return self.d3ptr().yStdDev()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <y>"""
 *         return self.d3ptr().yStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_67yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1089)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(26, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":184
 *         return self.d3ptr().yStdErr()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of y"""
 *         return self.d3ptr().yRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_69yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1090)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(26, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":188
 *         return self.d3ptr().yRMS()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_71sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1091)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(26, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":192
 *         return self.d3ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_73sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1092)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(26, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":196
 *         return self.d3ptr().sumWY2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d2ptr().crossTerm(i,j)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_75crossTerm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_crossTerm, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1093)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_crossTerm, __pyx_t_2) < 0) __PYX_ERR(26, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":201
 * 
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_77scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1095)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_scaleZ, __pyx_t_2) < 0) __PYX_ERR(26, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":209
 *         self.d3ptr().scaleZ(z)
 * 
 *     def zMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of z"""
 *         return self.d3ptr().zMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_79zMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_zMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1096)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_zMean, __pyx_t_2) < 0) __PYX_ERR(26, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":213
 *         return self.d3ptr().zMean()
 * 
 *     def zVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of z"""
 *         return self.d3ptr().zVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_81zVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_zVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1097)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_zVariance, __pyx_t_2) < 0) __PYX_ERR(26, 213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":217
 *         return self.d3ptr().zVariance()
 * 
 *     def zStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of z"""
 *         return self.d3ptr().zStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_83zStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_zStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1098)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_zStdDev, __pyx_t_2) < 0) __PYX_ERR(26, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":221
 *         return self.d3ptr().zStdDev()
 * 
 *     def zStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <z>"""
 *         return self.d3ptr().zStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_85zStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_zStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1099)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_zStdErr, __pyx_t_2) < 0) __PYX_ERR(26, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":225
 *         return self.d3ptr().zStdErr()
 * 
 *     def zRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of z"""
 *         return self.d3ptr().zRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_87zRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_zRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_zRMS, __pyx_t_2) < 0) __PYX_ERR(26, 225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":229
 *         return self.d3ptr().zRMS()
 * 
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWZ()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_89sumWZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1101)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWZ, __pyx_t_2) < 0) __PYX_ERR(26, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":233
 *         return self.d3ptr().sumWZ()
 * 
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_91sumWZ2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWZ2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_sumWZ2, __pyx_t_2) < 0) __PYX_ERR(26, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/generated/Dbn3D.pyx":237
 *         return self.d3ptr().sumWZ2()
 * 
 *     def crossTerm(self, i, j):             # <<<<<<<<<<<<<<
 *         """sum(weights is * js)"""
 *         return self.d3ptr().crossTerm(i,j)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_93crossTerm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_crossTerm, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D, __pyx_n_s_crossTerm, __pyx_t_2) < 0) __PYX_ERR(26, 237, __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_95__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1104)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_97__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point1D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_3_Point1D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_Point1D__init1, __pyx_t_2) < 0) __PYX_ERR(27, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point1D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_5_Point1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_Point1D__init2, __pyx_t_2) < 0) __PYX_ERR(27, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point1D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, xErrDn, xErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErrDn ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_7_Point1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_Point1D__init3, __pyx_t_2) < 0) __PYX_ERR(27, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, xErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal ]
 *         errm = [ xErr ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_9_Point1D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_Point1D__init4, __pyx_t_2) < 0) __PYX_ERR(27, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_11copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1113)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(27, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":59
 *         return '<Point1D(v1=%g)>' % (self.val(0))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_15val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1114)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(27, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":64
 *         return self.p1ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_17max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1115)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(27, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":69
 *         return self.p1ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_19min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":74
 *         return self.p1ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_21errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1117)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(27, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":93
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_25setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1119)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_setXErrs, __pyx_t_2) < 0) __PYX_ERR(27, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_27x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1120)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_x, __pyx_t_2) < 0) __PYX_ERR(27, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":114
 *         return self.p1ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_29setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1121)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_setX, __pyx_t_2) < 0) __PYX_ERR(27, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":118
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p1ptr().xErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_31xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1122)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(27, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":122
 *         return self.p1ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_33xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1123)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(27, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":126
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_35xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1124)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(27, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":130
 *         return self.p1ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_37xErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1125)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xErrMinus, __pyx_t_2) < 0) __PYX_ERR(27, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":133
 *         return self.p1ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_39xErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1126)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xErrPlus, __pyx_t_2) < 0) __PYX_ERR(27, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":136
 *         return self.p1ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_41xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1127)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_xErrAvg, __pyx_t_2) < 0) __PYX_ERR(27, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/generated/Point1D.pyx":139
 *         return self.p1ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1128)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point1D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(27, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_45__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1129)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_7Point1D_47__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1130)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point1D.pyx":146
 * 
 * ## Convenience alias
 * P1D = Point1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P1D, ((PyObject *)__pyx_ptype_4yoda_4core_Point1D)) < 0) __PYX_ERR(27, 146, __pyx_L1_error)

  /* "include/generated/Point2D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_3_Point2D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_Point2D__init1, __pyx_t_2) < 0) __PYX_ERR(28, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point2D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_5_Point2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1132)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_Point2D__init2, __pyx_t_2) < 0) __PYX_ERR(28, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point2D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, xErrDn, xErrUp, yErrDn, yErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErrDn, yErrDn ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_7_Point2D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1134)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_Point2D__init3, __pyx_t_2) < 0) __PYX_ERR(28, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, xErr, yErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal ]
 *         errm = [ xErr, yErr ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_9_Point2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1136)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_Point2D__init4, __pyx_t_2) < 0) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_11copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1137)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":59
 *         return '<Point2D(v1=%g, v2=%g)>' % (self.val(0), self.val(1))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_15val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1138)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(28, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":64
 *         return self.p2ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_17max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1139)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(28, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":69
 *         return self.p2ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_19min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1140)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(28, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":74
 *         return self.p2ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_21errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1141)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(28, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":93
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_25setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1142)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_setXErrs, __pyx_t_2) < 0) __PYX_ERR(28, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_27x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1143)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_x, __pyx_t_2) < 0) __PYX_ERR(28, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":114
 *         return self.p2ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_29setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1144)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_setX, __pyx_t_2) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":118
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p2ptr().xErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_31xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1145)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(28, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":122
 *         return self.p2ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_33xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1146)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(28, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":126
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_35xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1147)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(28, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":130
 *         return self.p2ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_37xErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1148)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xErrMinus, __pyx_t_2) < 0) __PYX_ERR(28, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":133
 *         return self.p2ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_39xErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1149)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xErrPlus, __pyx_t_2) < 0) __PYX_ERR(28, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":136
 *         return self.p2ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_41xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1150)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_xErrAvg, __pyx_t_2) < 0) __PYX_ERR(28, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":139
 *         return self.p2ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1151)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_45setYErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setYErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1152)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_setYErrs, __pyx_t_2) < 0) __PYX_ERR(28, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_47y, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_y, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1153)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_y, __pyx_t_2) < 0) __PYX_ERR(28, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":166
 *         return self.p2ptr().y()
 * 
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_49setY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1154)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_setY, __pyx_t_2) < 0) __PYX_ERR(28, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":170
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p2ptr().yErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_51yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1155)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(28, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":174
 *         return self.p2ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_53yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1156)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(28, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":178
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_55yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1157)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(28, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":182
 *         return self.p2ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_57yErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1158)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yErrMinus, __pyx_t_2) < 0) __PYX_ERR(28, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":185
 *         return self.p2ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_59yErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1159)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yErrPlus, __pyx_t_2) < 0) __PYX_ERR(28, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":188
 *         return self.p2ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_61yErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1160)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_yErrAvg, __pyx_t_2) < 0) __PYX_ERR(28, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/generated/Point2D.pyx":191
 *         return self.p2ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_63scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point2D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(28, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_65__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1162)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_7Point2D_67__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1163)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point2D.pyx":198
 * 
 * ## Convenience alias
 * P2D = Point2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P2D, ((PyObject *)__pyx_ptype_4yoda_4core_Point2D)) < 0) __PYX_ERR(28, 198, __pyx_L1_error)

  /* "include/generated/Point3D.pyx":21
 *         util.try_loop([self.__init1, self.__init2, self.__init3, self.__init4], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_3_Point3D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1164)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_Point3D__init1, __pyx_t_2) < 0) __PYX_ERR(29, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point3D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_5_Point3D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1165)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_Point3D__init2, __pyx_t_2) < 0) __PYX_ERR(29, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Point3D(args[0], args[1], args[2]) )
 * 
 *     def __init3(self, xVal, yVal, zVal, xErrDn, xErrUp, yErrDn, yErrUp, zErrDn, zErrUp):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErrDn, yErrDn, zErrDn ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_7_Point3D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1167)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_Point3D__init3, __pyx_t_2) < 0) __PYX_ERR(29, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":47
 *         self.__init2(vals, errm, errp)
 * 
 *     def __init4(self, xVal, yVal, zVal, xErr, yErr, zErr):             # <<<<<<<<<<<<<<
 *         vals = [ xVal, yVal, zVal ]
 *         errm = [ xErr, yErr, zErr ]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_9_Point3D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1169)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_Point3D__init4, __pyx_t_2) < 0) __PYX_ERR(29, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":53
 *         self.__init2(vals, errm, errp)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_11copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1170)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(29, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":59
 *         return '<Point3D(v1=%g, v2=%g, v3=%g)>' % (self.val(0), self.val(1), self.val(2))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_15val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1171)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(29, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":64
 *         return self.p3ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_17max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1172)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(29, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":69
 *         return self.p3ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_19min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1173)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":74
 *         return self.p3ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_21errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1174)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(29, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":93
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_25setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1175)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setXErrs, __pyx_t_2) < 0) __PYX_ERR(29, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":110
 *         self.setErrs(0, tuple(errs))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_27x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1176)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_x, __pyx_t_2) < 0) __PYX_ERR(29, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":114
 *         return self.p3ptr().x()
 * 
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_29setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1177)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setX, __pyx_t_2) < 0) __PYX_ERR(29, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":118
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return self.p3ptr().xErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_31xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1178)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(29, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":122
 *         return self.p3ptr().xErrs()
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_33xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1179)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(29, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":126
 *         return self.p3ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_35xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1180)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(29, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":130
 *         return self.p3ptr().xMax()
 * 
 *     def xErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_37xErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xErrMinus, __pyx_t_2) < 0) __PYX_ERR(29, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":133
 *         return self.p3ptr().xErrMinus()
 * 
 *     def xErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_39xErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1182)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xErrPlus, __pyx_t_2) < 0) __PYX_ERR(29, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":136
 *         return self.p3ptr().xErrPlus()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_41xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1183)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_xErrAvg, __pyx_t_2) < 0) __PYX_ERR(29, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":139
 *         return self.p3ptr().xErrAvg()
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_43scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1184)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(29, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":145
 * 
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_45setYErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setYErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1185)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setYErrs, __pyx_t_2) < 0) __PYX_ERR(29, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":162
 *         self.setErrs(1, tuple(errs))
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_47y, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_y, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1186)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_y, __pyx_t_2) < 0) __PYX_ERR(29, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":166
 *         return self.p3ptr().y()
 * 
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_49setY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setY, __pyx_t_2) < 0) __PYX_ERR(29, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":170
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return self.p3ptr().yErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_51yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(29, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":174
 *         return self.p3ptr().yErrs()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_53yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1189)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(29, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":178
 *         return self.p3ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_55yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(29, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":182
 *         return self.p3ptr().yMax()
 * 
 *     def yErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_57yErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1191)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yErrMinus, __pyx_t_2) < 0) __PYX_ERR(29, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":185
 *         return self.p3ptr().yErrMinus()
 * 
 *     def yErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_59yErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1192)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yErrPlus, __pyx_t_2) < 0) __PYX_ERR(29, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":188
 *         return self.p3ptr().yErrPlus()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_61yErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1193)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_yErrAvg, __pyx_t_2) < 0) __PYX_ERR(29, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":191
 *         return self.p3ptr().yErrAvg()
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_63scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1194)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(29, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":197
 * 
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_65setZErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setZErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1195)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setZErrs, __pyx_t_2) < 0) __PYX_ERR(29, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":214
 *         self.setErrs(2, tuple(errs))
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_67z, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_z, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1196)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_z, __pyx_t_2) < 0) __PYX_ERR(29, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":218
 *         return self.p3ptr().z()
 * 
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_69setZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1197)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_setZ, __pyx_t_2) < 0) __PYX_ERR(29, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":222
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return self.p3ptr().zErrs()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_71zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1198)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zErrs, __pyx_t_2) < 0) __PYX_ERR(29, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":226
 *         return self.p3ptr().zErrs()
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_73zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1199)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(29, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":230
 *         return self.p3ptr().zMin()
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_75zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1200)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(29, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":234
 *         return self.p3ptr().zMax()
 * 
 *     def zErrMinus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrMinus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_77zErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1201)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zErrMinus, __pyx_t_2) < 0) __PYX_ERR(29, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":237
 *         return self.p3ptr().zErrMinus()
 * 
 *     def zErrPlus(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrPlus()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_79zErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1202)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zErrPlus, __pyx_t_2) < 0) __PYX_ERR(29, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":240
 *         return self.p3ptr().zErrPlus()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_81zErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1203)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_zErrAvg, __pyx_t_2) < 0) __PYX_ERR(29, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/generated/Point3D.pyx":243
 *         return self.p3ptr().zErrAvg()
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_83scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1204)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point3D, __pyx_n_s_scaleZ, __pyx_t_2) < 0) __PYX_ERR(29, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_85__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1205)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_7Point3D_87__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point3D.pyx":250
 * 
 * ## Convenience alias
 * P3D = Point3D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P3D, ((PyObject *)__pyx_ptype_4yoda_4core_Point3D)) < 0) __PYX_ERR(29, 250, __pyx_L1_error)

  /* "include/generated/Point4D.pyx":21
 *         util.try_loop([self.__init1, self.__init2], *args, **kwargs)
 * 
 *     def __init1(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_3_Point4D__init1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D___init1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1207)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_Point4D__init1, __pyx_t_2) < 0) __PYX_ERR(30, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":24
 *         cutil.set_owned_ptr(self, new c.Point4D())
 * 
 *     def __init2(self, vals, errsdn, errsup):             # <<<<<<<<<<<<<<
 * 
 *         if hasattr(vals, "__iter__"):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_5_Point4D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_Point4D__init2, __pyx_t_2) < 0) __PYX_ERR(30, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":43
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point4D, new c.Point4D(deref(self.p4ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1209)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(30, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":49
 *         return '<Point4D(v1=%g, v2=%g, v3=%g, v4=%g)>' % (self.val(0), self.val(1), self.val(2), self.val(3))
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_11val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(30, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":54
 *         return self.p4ptr().val(i)
 * 
 *     def max(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns maximal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_13max, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D_max, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1211)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_max, __pyx_t_2) < 0) __PYX_ERR(30, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":59
 *         return self.p4ptr().max(i)
 * 
 *     def min(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> double
 *         Returns minimal value along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_15min, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D_min, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_min, __pyx_t_2) < 0) __PYX_ERR(30, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "include/generated/Point4D.pyx":64
 *         return self.p4ptr().min(i)
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns error pair along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point4D_17errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1213)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Point4D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point4D);

  /* "(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_7Point4D_21__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_7Point4D_23__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point4D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Point4D.pyx":84
 * 
 * ## Convenience alias
 * P4D = Point4D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P4D, ((PyObject *)__pyx_ptype_4yoda_4core_Point4D)) < 0) __PYX_ERR(30, 84, __pyx_L1_error)

  /* "include/generated/Scatter1D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_3_Scatter1D__init_1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___init_1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_Scatter1D__init_1, __pyx_t_2) < 0) __PYX_ERR(31, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_5_Scatter1D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_Scatter1D__init_2, __pyx_t_2) < 0) __PYX_ERR(31, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */
  __pyx_t_2 = __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__1220)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(31, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_13reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(31, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_15numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_numPoints, __pyx_t_2) < 0) __PYX_ERR(31, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_19points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_points, __pyx_t_2) < 0) __PYX_ERR(31, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":69
 *         return self._mknp([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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_21point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1224)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_point, __pyx_t_2) < 0) __PYX_ERR(31, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_25addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1226)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_addPoint, __pyx_t_2) < 0) __PYX_ERR(31, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(*args))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1227)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_Scatter1D__addPoint_explicit, __pyx_t_2) < 0) __PYX_ERR(31, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":89
 *         self.__addPoint_point(Point1D(*args))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_29_Scatter1D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_Scatter1D__addPoint_point, __pyx_t_2) < 0) __PYX_ERR(31, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":92
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_31addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1231)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_addPoints, __pyx_t_2) < 0) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_33rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1233)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_rmPoint, __pyx_t_2) < 0) __PYX_ERR(31, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":103
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_35rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1235)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_rmPoints, __pyx_t_2) < 0) __PYX_ERR(31, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":106
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_37combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_combineWith, __pyx_t_2) < 0) __PYX_ERR(31, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_39_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1238)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(31, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_41mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__8);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(31, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_43scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1241)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(31, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":142
 *         self.s1ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_45scaleVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scaleVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1242)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_scaleVal, __pyx_t_2) < 0) __PYX_ERR(31, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":147
 *         self.s1ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_47scaleErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scaleErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_scaleErr, __pyx_t_2) < 0) __PYX_ERR(31, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":152
 *         self.s1ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_49edges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_edges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_edges, __pyx_t_2) < 0) __PYX_ERR(31, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_51vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1245)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(31, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":163
 *         return self._mknp(self.s1ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_53mins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_mins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_mins, __pyx_t_2) < 0) __PYX_ERR(31, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":168
 *         return self._mknp(self.s1ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_55maxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_maxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1247)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_maxs, __pyx_t_2) < 0) __PYX_ERR(31, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":173
 *         return self._mknp(self.s1ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_57errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(31, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":178
 *         return self._mknp(self.s1ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_59errAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_errAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1249)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_errAvgs, __pyx_t_2) < 0) __PYX_ERR(31, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":183
 *         return self._mknp(self.s1ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_61lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1250)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(31, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_63lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1251)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(31, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s1ptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_65serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1252)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(31, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":195
 *         return self.s1ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_67deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1253)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(31, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":201
 *         self.s1ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_69serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1254)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(31, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":205
 *         return self.s1ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_71deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1255)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(31, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":211
 *         self.s1ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_73scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1256)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(31, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":227
 *     #    c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s1ptr().xVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_75xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1257)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(31, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":231
 *         return self._mknp(self.s1ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s1ptr().xMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_77xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1258)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(31, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":235
 *         return self._mknp(self.s1ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s1ptr().xMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_79xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(31, 235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":239
 *         return self._mknp(self.s1ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s1ptr().xMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_81xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1260)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(31, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":243
 *         return self._mknp(self.s1ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s1ptr().xMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_83xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1261)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(31, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":247
 *         return self._mknp(self.s1ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_85xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1262)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(31, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/generated/Scatter1D.pyx":251
 *         return self._mknp(self.s1ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s1ptr().xErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_87xErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D, __pyx_n_s_xErrAvgs, __pyx_t_2) < 0) __PYX_ERR(31, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_89__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1264)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_9Scatter1D_91__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1265)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Scatter1D.pyx":256
 * 
 * ## Convenience alias
 * S1D = Scatter1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S1D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D)) < 0) __PYX_ERR(31, 256, __pyx_L1_error)

  /* "include/generated/Scatter2D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_3_Scatter2D__init_1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___init_1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1266)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_Scatter2D__init_1, __pyx_t_2) < 0) __PYX_ERR(32, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_5_Scatter2D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_Scatter2D__init_2, __pyx_t_2) < 0) __PYX_ERR(32, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter2D."""
 */
  __pyx_t_2 = __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__1268)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(32, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_13reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1269)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(32, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_15numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1270)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_numPoints, __pyx_t_2) < 0) __PYX_ERR(32, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_19points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1271)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_points, __pyx_t_2) < 0) __PYX_ERR(32, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":69
 *         return self._mknp([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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_21point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1272)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_point, __pyx_t_2) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_25addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1273)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_addPoint, __pyx_t_2) < 0) __PYX_ERR(32, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(*args))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1274)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_Scatter2D__addPoint_explicit, __pyx_t_2) < 0) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":89
 *         self.__addPoint_point(Point2D(*args))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_29_Scatter2D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1275)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_Scatter2D__addPoint_point, __pyx_t_2) < 0) __PYX_ERR(32, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":92
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_31addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1276)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_addPoints, __pyx_t_2) < 0) __PYX_ERR(32, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_33rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1277)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_rmPoint, __pyx_t_2) < 0) __PYX_ERR(32, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":103
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_35rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1278)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_rmPoints, __pyx_t_2) < 0) __PYX_ERR(32, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":106
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_37combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1279)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_combineWith, __pyx_t_2) < 0) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_39_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1280)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(32, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_41mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1281)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__8);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(32, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_43scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1282)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(32, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":142
 *         self.s2ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_45scaleVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_scaleVal, __pyx_t_2) < 0) __PYX_ERR(32, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":147
 *         self.s2ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_47scaleErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1284)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_scaleErr, __pyx_t_2) < 0) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":152
 *         self.s2ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_49edges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_edges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1285)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_edges, __pyx_t_2) < 0) __PYX_ERR(32, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_51vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1286)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(32, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":163
 *         return self._mknp(self.s2ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_53mins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_mins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1287)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_mins, __pyx_t_2) < 0) __PYX_ERR(32, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":168
 *         return self._mknp(self.s2ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_55maxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_maxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1288)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_maxs, __pyx_t_2) < 0) __PYX_ERR(32, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":173
 *         return self._mknp(self.s2ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_57errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(32, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":178
 *         return self._mknp(self.s2ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_59errAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_errAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1290)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_errAvgs, __pyx_t_2) < 0) __PYX_ERR(32, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":183
 *         return self._mknp(self.s2ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_61lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(32, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_63lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(32, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s2ptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_65serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1293)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(32, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":195
 *         return self.s2ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_67deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1294)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(32, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":201
 *         self.s2ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_69serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(32, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":205
 *         return self.s2ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_71deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1296)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(32, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":211
 *         self.s2ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_73scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1297)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(32, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":227
 *     #    c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s2ptr().xVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_75xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1298)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(32, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":231
 *         return self._mknp(self.s2ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s2ptr().xMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_77xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1299)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(32, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":235
 *         return self._mknp(self.s2ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s2ptr().xMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_79xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1300)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(32, 235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":239
 *         return self._mknp(self.s2ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s2ptr().xMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_81xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1301)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(32, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":243
 *         return self._mknp(self.s2ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s2ptr().xMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_83xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1302)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(32, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":247
 *         return self._mknp(self.s2ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_85xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1303)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(32, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":251
 *         return self._mknp(self.s2ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s2ptr().xErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_87xErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1304)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_xErrAvgs, __pyx_t_2) < 0) __PYX_ERR(32, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":255
 *         return self._mknp(self.s2ptr().xErrAvgs())
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_89scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1305)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(32, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":271
 *     #    c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s2ptr().yVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_91yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1306)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(32, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":275
 *         return self._mknp(self.s2ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s2ptr().yMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_93yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1307)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(32, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":279
 *         return self._mknp(self.s2ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s2ptr().yMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_95yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1308)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(32, 279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":283
 *         return self._mknp(self.s2ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s2ptr().yMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_97yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1309)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(32, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":287
 *         return self._mknp(self.s2ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s2ptr().yMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_99yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1310)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(32, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":291
 *         return self._mknp(self.s2ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_101yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1311)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(32, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/generated/Scatter2D.pyx":295
 *         return self._mknp(self.s2ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s2ptr().yErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_103yErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1312)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D, __pyx_n_s_yErrAvgs, __pyx_t_2) < 0) __PYX_ERR(32, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_105__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1313)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_9Scatter2D_107__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1314)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Scatter2D.pyx":300
 * 
 * ## Convenience alias
 * S2D = Scatter2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S2D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D)) < 0) __PYX_ERR(32, 300, __pyx_L1_error)

  /* "include/generated/Scatter3D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_3_Scatter3D__init_1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___init_1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1315)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_Scatter3D__init_1, __pyx_t_2) < 0) __PYX_ERR(33, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_5_Scatter3D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1316)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_Scatter3D__init_2, __pyx_t_2) < 0) __PYX_ERR(33, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter3D."""
 */
  __pyx_t_2 = __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__1317)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(33, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_13reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1318)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(33, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_15numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1319)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_numPoints, __pyx_t_2) < 0) __PYX_ERR(33, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_19points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1320)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_points, __pyx_t_2) < 0) __PYX_ERR(33, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":69
 *         return self._mknp([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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_21point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1321)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_point, __pyx_t_2) < 0) __PYX_ERR(33, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_25addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1322)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_addPoint, __pyx_t_2) < 0) __PYX_ERR(33, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(*args))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1323)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_Scatter3D__addPoint_explicit, __pyx_t_2) < 0) __PYX_ERR(33, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":89
 *         self.__addPoint_point(Point3D(*args))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_29_Scatter3D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1324)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_Scatter3D__addPoint_point, __pyx_t_2) < 0) __PYX_ERR(33, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":92
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_31addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_addPoints, __pyx_t_2) < 0) __PYX_ERR(33, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_33rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1326)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_rmPoint, __pyx_t_2) < 0) __PYX_ERR(33, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":103
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_35rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1327)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_rmPoints, __pyx_t_2) < 0) __PYX_ERR(33, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":106
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_37combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1328)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_combineWith, __pyx_t_2) < 0) __PYX_ERR(33, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_39_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1329)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(33, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_41mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1330)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__8);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(33, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_43scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(33, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":142
 *         self.s3ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_45scaleVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1332)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scaleVal, __pyx_t_2) < 0) __PYX_ERR(33, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":147
 *         self.s3ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_47scaleErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1333)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scaleErr, __pyx_t_2) < 0) __PYX_ERR(33, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":152
 *         self.s3ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_49edges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_edges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1334)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_edges, __pyx_t_2) < 0) __PYX_ERR(33, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_51vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1335)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(33, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":163
 *         return self._mknp(self.s3ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_53mins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_mins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1336)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_mins, __pyx_t_2) < 0) __PYX_ERR(33, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":168
 *         return self._mknp(self.s3ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_55maxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_maxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1337)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_maxs, __pyx_t_2) < 0) __PYX_ERR(33, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":173
 *         return self._mknp(self.s3ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_57errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1338)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(33, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":178
 *         return self._mknp(self.s3ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_59errAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_errAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1339)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_errAvgs, __pyx_t_2) < 0) __PYX_ERR(33, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":183
 *         return self._mknp(self.s3ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_61lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1340)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(33, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_63lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1341)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(33, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s3ptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_65serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1342)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(33, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":195
 *         return self.s3ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_67deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1343)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(33, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":201
 *         self.s3ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_69serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1344)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(33, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":205
 *         return self.s3ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_71deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1345)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(33, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":211
 *         self.s3ptr().deserializeMeta(cdata, resetPath, resetTitle)
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_73scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1346)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(33, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":227
 *     #    c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         """All x values."""
 *         return self._mknp(self.s3ptr().xVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_75xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1347)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(33, 227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":231
 *         return self._mknp(self.s3ptr().xVals())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp(self.s3ptr().xMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_77xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(33, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":235
 *         return self._mknp(self.s3ptr().xMins())
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp(self.s3ptr().xMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_79xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1349)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(33, 235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":239
 *         return self._mknp(self.s3ptr().xMaxs())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central x values."""
 *         return self._mknp(self.s3ptr().xMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_81xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1350)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(33, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":243
 *         return self._mknp(self.s3ptr().xMin())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central x values."""
 *         return self._mknp(self.s3ptr().xMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_83xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1351)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(33, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":247
 *         return self._mknp(self.s3ptr().xMax())
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_85xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1352)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(33, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":251
 *         return self._mknp(self.s3ptr().xErrs())
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the x-axis."""
 *         return self._mknp(self.s3ptr().xErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_87xErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1353)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_xErrAvgs, __pyx_t_2) < 0) __PYX_ERR(33, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":255
 *         return self._mknp(self.s3ptr().xErrAvgs())
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_89scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1354)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(33, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":271
 *     #    c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         """All y values."""
 *         return self._mknp(self.s3ptr().yVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_91yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1355)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(33, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":275
 *         return self._mknp(self.s3ptr().yVals())
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         return self._mknp(self.s3ptr().yMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_93yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1356)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(33, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":279
 *         return self._mknp(self.s3ptr().yMins())
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         return self._mknp(self.s3ptr().yMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_95yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1357)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":283
 *         return self._mknp(self.s3ptr().yMaxs())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central y values."""
 *         return self._mknp(self.s3ptr().yMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_97yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1358)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(33, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":287
 *         return self._mknp(self.s3ptr().yMin())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central y values."""
 *         return self._mknp(self.s3ptr().yMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_99yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1359)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(33, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":291
 *         return self._mknp(self.s3ptr().yMax())
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_101yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1360)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(33, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":295
 *         return self._mknp(self.s3ptr().yErrs())
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the y-axis."""
 *         return self._mknp(self.s3ptr().yErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_103yErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1361)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_yErrAvgs, __pyx_t_2) < 0) __PYX_ERR(33, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":299
 *         return self._mknp(self.s3ptr().yErrAvgs())
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_105scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1362)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_scaleZ, __pyx_t_2) < 0) __PYX_ERR(33, 299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":315
 *     #    c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         """All z values."""
 *         return self._mknp(self.s3ptr().zVals())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_107zVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1363)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zVals, __pyx_t_2) < 0) __PYX_ERR(33, 315, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":319
 *         return self._mknp(self.s3ptr().zVals())
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp(self.s3ptr().zMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_109zMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1364)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zMins, __pyx_t_2) < 0) __PYX_ERR(33, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":323
 *         return self._mknp(self.s3ptr().zMins())
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp(self.s3ptr().zMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_111zMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1365)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zMaxs, __pyx_t_2) < 0) __PYX_ERR(33, 323, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":327
 *         return self._mknp(self.s3ptr().zMaxs())
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The lowest central z values."""
 *         return self._mknp(self.s3ptr().zMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_113zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1366)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(33, 327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":331
 *         return self._mknp(self.s3ptr().zMin())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The highest central z values."""
 *         return self._mknp(self.s3ptr().zMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_115zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1367)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(33, 331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":335
 *         return self._mknp(self.s3ptr().zMax())
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The error pairs along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_117zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1368)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zErrs, __pyx_t_2) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/generated/Scatter3D.pyx":339
 *         return self._mknp(self.s3ptr().zErrs())
 * 
 *     def zErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """The average error along the z-axis."""
 *         return self._mknp(self.s3ptr().zErrAvgs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_119zErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1369)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D, __pyx_n_s_zErrAvgs, __pyx_t_2) < 0) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_121__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1370)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_9Scatter3D_123__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1371)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Scatter3D.pyx":344
 * 
 * ## Convenience alias
 * S3D = Scatter3D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S3D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D)) < 0) __PYX_ERR(33, 344, __pyx_L1_error)

  /* "include/generated/Scatter4D.pyx":32
 *         util.try_loop([self.__init_1, self.__init_2], *args, **kwargs)
 * 
 *     def __init_1(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_3_Scatter4D__init_1, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___init_1, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1372)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_Scatter4D__init_1, __pyx_t_2) < 0) __PYX_ERR(34, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":35
 *         cutil.set_owned_ptr(self, new c.Scatter4D(<string>path, <string>title))
 * 
 *     def __init_2(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_1(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_5_Scatter4D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1373)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__168);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_Scatter4D__init_2, __pyx_t_2) < 0) __PYX_ERR(34, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":39
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter4D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_7clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1374)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(34, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":51
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s4ptr().reset()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_13reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1375)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(34, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":56
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_15numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1376)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_numPoints, __pyx_t_2) < 0) __PYX_ERR(34, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":65
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return self._mknp([self.point(i) for i in range(self.numPoints())])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_19points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1377)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_points, __pyx_t_2) < 0) __PYX_ERR(34, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":69
 *         return self._mknp([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(Point4D, &self.s4ptr().point(i), self)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_21point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1378)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_point, __pyx_t_2) < 0) __PYX_ERR(34, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":78
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_25addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1379)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_addPoint, __pyx_t_2) < 0) __PYX_ERR(34, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":86
 *         util.try_loop([self.__addPoint_point, self.__addPoint_explicit], *args, **kwargs)
 * 
 *     def __addPoint_explicit(self, *args):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point4D(*args))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_27_Scatter4D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1380)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_Scatter4D__addPoint_explicit, __pyx_t_2) < 0) __PYX_ERR(34, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":89
 *         self.__addPoint_point(Point4D(*args))
 * 
 *     def __addPoint_point(self, Point4D p):             # <<<<<<<<<<<<<<
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_29_Scatter4D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1381)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_Scatter4D__addPoint_point, __pyx_t_2) < 0) __PYX_ERR(34, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":92
 *         self.s4ptr().addPoint(p.p4ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_31addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1382)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_addPoints, __pyx_t_2) < 0) __PYX_ERR(34, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":100
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoint(idx)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_33rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1383)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_rmPoint, __pyx_t_2) < 0) __PYX_ERR(34, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":103
 *         self.s4ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s4ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_35rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1384)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_rmPoints, __pyx_t_2) < 0) __PYX_ERR(34, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":106
 *         self.s4ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter4Ds into this one."""
 *         cdef Scatter4D other
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_37combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1385)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_combineWith, __pyx_t_2) < 0) __PYX_ERR(34, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":120
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_39_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1386)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(34, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":127
 *             return xs
 * 
 *     def mkScatter(self, path=None,includeOverflows=None,includeMaskedBins=None):             # <<<<<<<<<<<<<<
 *         """None -> Scatter4D.
 *         Make a new Scatter4D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_41mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1387)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__8);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(34, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":137
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values and errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_43scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1388)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_scale, __pyx_t_2) < 0) __PYX_ERR(34, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":142
 *         self.s4ptr().scale(i, scale)
 * 
 *     def scaleVal(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_45scaleVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_scaleVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1389)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_scaleVal, __pyx_t_2) < 0) __PYX_ERR(34, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":147
 *         self.s4ptr().scaleVal(i, scale)
 * 
 *     def scaleErr(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale errors on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_47scaleErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_scaleErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1390)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_scaleErr, __pyx_t_2) < 0) __PYX_ERR(34, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":152
 *         self.s4ptr().scaleErr(i, scale)
 * 
 *     def edges(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[list[double,double]]
 *         Returns point edges along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_49edges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_edges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1391)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_edges, __pyx_t_2) < 0) __PYX_ERR(34, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":158
 * 
 * 
 *     def vals(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_51vals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_vals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1392)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_vals, __pyx_t_2) < 0) __PYX_ERR(34, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":163
 *         return self._mknp(self.s4ptr().vals(i))
 * 
 *     def mins(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of lowest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_53mins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_mins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1393)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_mins, __pyx_t_2) < 0) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":168
 *         return self._mknp(self.s4ptr().mins(i))
 * 
 *     def maxs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of largest values along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_55maxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_maxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1394)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_maxs, __pyx_t_2) < 0) __PYX_ERR(34, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":173
 *         return self._mknp(self.s4ptr().maxs(i))
 * 
 *     def errs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[(double,double)]
 *         Returns list of (neg,pos) error pairs along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_57errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1395)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(34, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":178
 *         return self._mknp(self.s4ptr().errs(i))
 * 
 *     def errAvgs(self, i):             # <<<<<<<<<<<<<<
 *         """(int) -> list[double]
 *         Returns list of average errors along axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_59errAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_errAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1396)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_errAvgs, __pyx_t_2) < 0) __PYX_ERR(34, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":183
 *         return self._mknp(self.s4ptr().errAvgs(i))
 * 
 *     def lengthContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed data vector for MPI communication."""
 *         return self.estptr().lengthContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_61lengthContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_lengthContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1397)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_lengthContent, __pyx_t_2) < 0) __PYX_ERR(34, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":187
 *         return self.estptr().lengthContent(fixed_length)
 * 
 *     def lengthMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Length of serialisaed meta-data vector for MPI communication."""
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_63lengthMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_lengthMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1398)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_lengthMeta, __pyx_t_2) < 0) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":191
 *         return self.estptr().lengthMeta(skipPath, skipTitle)
 * 
 *     def serializeContent(self, fixed_length = False):             # <<<<<<<<<<<<<<
 *         """Data serialisation for MPI communication."""
 *         return self.s4ptr().serializeContent(fixed_length)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_65serializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_serializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1399)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__21);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_serializeContent, __pyx_t_2) < 0) __PYX_ERR(34, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":195
 *         return self.s4ptr().serializeContent(fixed_length)
 * 
 *     def deserializeContent(self, data):             # <<<<<<<<<<<<<<
 *         """Data deserialisation for MPI communication."""
 *         cdef vector[double] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_67deserializeContent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_deserializeContent, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1400)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_deserializeContent, __pyx_t_2) < 0) __PYX_ERR(34, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":201
 *         self.s4ptr().deserializeContent(cdata)
 * 
 *     def serializeMeta(self, skipPath = True, skipTitle = True):             # <<<<<<<<<<<<<<
 *         """Meta-data serialisation for MPI communication."""
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_69serializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_serializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1401)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__91);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_serializeMeta, __pyx_t_2) < 0) __PYX_ERR(34, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "include/generated/Scatter4D.pyx":205
 *         return self.s4ptr().serializeMeta(skipPath, skipTitle)
 * 
 *     def deserializeMeta(self, data, resetPath = False, resetTitle = False):             # <<<<<<<<<<<<<<
 *         """Meta-data deserialisation for MPI communication."""
 *         cdef vector[string] cdata
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter4D_71deserializeMeta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D_deserializeMeta, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1402)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__184);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D, __pyx_n_s_deserializeMeta, __pyx_t_2) < 0) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter4D);

  /* "(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_9Scatter4D_73__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1403)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 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_9Scatter4D_75__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter4D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__1404)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 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(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Scatter4D.pyx":212
 * 
 * ## Convenience alias
 * S4D = Scatter4D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S4D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter4D)) < 0) __PYX_ERR(34, 212, __pyx_L1_error)

  /* "yoda/core.pyx":1
 * #################################################             # <<<<<<<<<<<<<<
 * #############       WARNING      ################
 * #################################################
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /*--- Wrapped vars code ---*/

  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);
  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);
    Py_XDECREF(type);
    Py_XDECREF(tb);
#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 */
#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#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;
#endif
}

/* 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) {
    PyObject* exc_type;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    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 PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    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 PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
        return NULL;
    }
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
        return NULL;
    }
    #endif
    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 = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
    self = __Pyx_CyOrPyCFunction_GET_SELF(func);
    #if PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    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 */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result = 0;
    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]);
        if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
  bad:
    Py_DECREF(argstuple);
    return result;
}
#endif
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 (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
            return __Pyx_PyObject_CallMethO(func, NULL);
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_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 (kwargs == NULL) {
        #if CYTHON_VECTORCALL
        #if PY_VERSION_HEX < 0x03090000
        vectorcallfunc f = _PyVectorcall_Function(func);
        #else
        vectorcallfunc f = PyVectorcall_Function(func);
        #endif
        if (f) {
            return f(func, args, (size_t)nargs, NULL);
        }
        #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, NULL);
        }
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
    }
    #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
    #else
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
    #endif
}

/* 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;
            return kwvalues[i];
        }
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
    PyObject *dict;
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#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(0);
    }
    #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))) {
        Py_ssize_t kwsize;
#if CYTHON_ASSUME_SAFE_MACROS
        kwsize = PyTuple_GET_SIZE(kw);
#else
        kwsize = PyTuple_Size(kw);
        if (kwsize < 0) return 0;
#endif
        if (unlikely(kwsize == 0))
            return 1;
        if (!kw_allowed) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, 0);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            goto invalid_keyword;
        }
#if PY_VERSION_HEX < 0x03090000
        for (pos = 0; pos < kwsize; pos++) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, pos);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            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;
}

/* 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);
}

/* 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) {
        Py_XDECREF(key); key = NULL;
        Py_XDECREF(value); value = NULL;
        if (kwds_is_tuple) {
            Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(kwds);
#else
            size = PyTuple_Size(kwds);
            if (size < 0) goto bad;
#endif
            if (pos >= size) break;
#if CYTHON_AVOID_BORROWED_REFS
            key = __Pyx_PySequence_ITEM(kwds, pos);
            if (!key) goto bad;
#elif CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kwds, pos);
#else
            key = PyTuple_GetItem(kwds, pos);
            if (!key) goto bad;
#endif
            value = kwvalues[pos];
            pos++;
        }
        else
        {
            if (!PyDict_Next(kwds, &pos, &key, &value)) break;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(key);
#endif
        }
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(value);
            Py_DECREF(key);
#endif
            key = NULL;
            value = NULL;
            continue;
        }
#if !CYTHON_AVOID_BORROWED_REFS
        Py_INCREF(key);
#endif
        Py_INCREF(value);
        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;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    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;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    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;
        }
    }
    Py_XDECREF(key);
    Py_XDECREF(value);
    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:
    Py_XDECREF(key);
    Py_XDECREF(value);
    return -1;
}

/* 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 && PY_VERSION_HEX < 0x030d0000
    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);
}

/* 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;
}

/* 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 || !PyMapping_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* 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

/* 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);
}

/* 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);
}

/* 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;
}

/* PyObjectCallMethod1 */
#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2)
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
#endif
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2
    PyObject *args[2] = {obj, arg};
    (void) __Pyx_PyObject_GetMethod;
    (void) __Pyx_PyObject_CallOneArg;
    (void) __Pyx_PyObject_Call2Args;
    return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#else
    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);
#endif
}

/* StringJoin */
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
    (void) __Pyx_PyObject_CallMethod1;
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION < 3
    return _PyString_Join(sep, values);
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    return _PyBytes_Join(sep, values);
#else
    return __Pyx_PyObject_CallMethod1(sep, __pyx_n_s_join, values);
#endif
}

/* 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) {
            PyErr_Clear();
        } else {
            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

/* 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;
}

/* 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)) {
#if CYTHON_ASSUME_SAFE_MACROS
        double value = PyFloat_AS_DOUBLE(float_value);
#else
        double value = PyFloat_AsDouble(float_value);
#endif
        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);
}

/* PyObjectCallNoArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg[2] = {NULL, NULL};
    return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* 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

/* 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;
    }
}

/* 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

/* 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

/* 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

/* 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;
}

/* Globals */
static PyObject* __Pyx_Globals(void) {
    return __Pyx_NewRef(__pyx_d);
}

/* 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

/* 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 (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
                module = PyImport_ImportModuleLevelObject(
                    name, __pyx_d, empty_dict, from_list, 1);
                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
            module = PyImport_ImportModuleLevelObject(
                name, __pyx_d, empty_dict, from_list, level);
            #endif
        }
    }
bad:
    Py_XDECREF(empty_dict);
    Py_XDECREF(empty_list);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    return module;
}

/* 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__10;
    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__10;
    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);
}

/* UnpackUnboundCMethod */
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
    PyObject *result;
    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
    if (unlikely(!selfless_args)) return NULL;
    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(!__Pyx_CyOrPyCFunction_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 CYTHON_COMPILING_IN_PYPY
#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;
}

/* 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);
}

/* RaiseUnexpectedTypeError */
static int
__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
{
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME,
                 expected, obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* Py3UpdateBases */
static PyObject*
__Pyx_PEP560_update_bases(PyObject *bases)
{
    Py_ssize_t i, j, size_bases;
    PyObject *base, *meth, *new_base, *result, *new_bases = NULL;
    size_bases = PyTuple_GET_SIZE(bases);
    for (i = 0; i < size_bases; i++) {
        base  = PyTuple_GET_ITEM(bases, i);
        if (PyType_Check(base)) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries);
        if (!meth && PyErr_Occurred()) {
            goto error;
        }
        if (!meth) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        new_base = __Pyx_PyObject_CallOneArg(meth, bases);
        Py_DECREF(meth);
        if (!new_base) {
            goto error;
        }
        if (!PyTuple_Check(new_base)) {
            PyErr_SetString(PyExc_TypeError,
                            "__mro_entries__ must return a tuple");
            Py_DECREF(new_base);
            goto error;
        }
        if (!new_bases) {
            if (!(new_bases = PyList_New(i))) {
                goto error;
            }
            for (j = 0; j < i; j++) {
                base = PyTuple_GET_ITEM(bases, j);
                PyList_SET_ITEM(new_bases, j, base);
                Py_INCREF(base);
            }
        }
        j = PyList_GET_SIZE(new_bases);
        if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
            goto error;
        }
        Py_DECREF(new_base);
    }
    if (!new_bases) {
        Py_INCREF(bases);
        return bases;
    }
    result = PyList_AsTuple(new_bases);
    Py_DECREF(new_bases);
    return result;
error:
    Py_XDECREF(new_bases);
    return NULL;
}

/* CalculateMetaclass */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases;
#if CYTHON_ASSUME_SAFE_MACROS
    nbases = PyTuple_GET_SIZE(bases);
#else
    nbases = PyTuple_Size(bases);
    if (nbases < 0) return NULL;
#endif
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
#if CYTHON_ASSUME_SAFE_MACROS
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *tmp = PyTuple_GetItem(bases, i);
        if (!tmp) return NULL;
#endif
        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;
}

/* 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

/* FetchSharedCythonModule */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
}

/* 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 */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    if (__Pyx_CyFunction_Check(func)) {
        return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
    } else if (PyCFunction_Check(func)) {
        return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
    }
    return 0;
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
}
#endif
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    __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 CYTHON_COMPILING_IN_LIMITED_API
        op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
        if (unlikely(!op->func_doc)) return NULL;
#else
        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;
        }
#endif
    }
    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 CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#elif 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 = __Pyx_PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = __Pyx_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);
#if CYTHON_ASSUME_SAFE_MACROS
        PyList_SET_ITEM(fromlist, 0, marker);
#else
        if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
            Py_DECREF(marker);
            Py_DECREF(fromlist);
            return NULL;
        }
#endif
        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);
}
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *
__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_GetAttrString(op->func, "__module__");
}
static int
__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_SetAttrString(op->func, "__module__", value);
}
#endif
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},
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
#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
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#endif
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    {(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 || CYTHON_COMPILING_IN_LIMITED_API
#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) {
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
#endif
    if (unlikely(op == NULL))
        return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
    if (unlikely(!op->func)) return NULL;
#endif
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
#if !CYTHON_COMPILING_IN_LIMITED_API
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
#endif
    Py_XINCREF(closure);
    op->func_closure = closure;
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_XINCREF(module);
    cf->m_module = module;
#endif
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    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);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func);
#else
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
    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 !CYTHON_COMPILING_IN_LIMITED_API
#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
#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);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
    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);
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
#endif
    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) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
    PyObject *py_name = NULL;
    PyCFunction meth;
    int flags;
    meth = PyCFunction_GetFunction(f);
    if (unlikely(!meth)) return NULL;
    flags = PyCFunction_GetFlags(f);
    if (unlikely(flags < 0)) return NULL;
#else
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    int flags = f->m_ml->ml_flags;
#endif
    Py_ssize_t size;
    switch (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)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 0))
                return (*meth)(self, NULL);
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = __Pyx_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;
            }
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
    if (!py_name) return NULL;
    PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
                 py_name);
    Py_DECREF(py_name);
#else
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
#endif
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *self, *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
    if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
    self = ((PyCFunctionObject*)func)->m_self;
#endif
    result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
    return result;
}
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;
#if CYTHON_ASSUME_SAFE_MACROS
        argc = PyTuple_GET_SIZE(args);
#else
        argc = PyTuple_Size(args);
        if (unlikely(!argc) < 0) return NULL;
#endif
        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 ((__Pyx_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
#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
    _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 PY_VERSION_HEX >= 0x030d00A4
    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;
}

/* 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);
        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;
}

/* 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_11
#define __PYX_HAVE_RT_ImportType_3_0_11
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 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_11 &&
            ((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_11 && (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;
}

/* 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;
}

/* 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;
#if CYTHON_ASSUME_SAFE_MACROS
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (n < 0) return -1;
#endif
    for (i = 1; i < n; i++)
    {
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *b0 = PySequence_GetItem(bases, i);
        if (!b0) return -1;
#elif CYTHON_ASSUME_SAFE_MACROS
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *b0 = PyTuple_GetItem(bases, i);
        if (!b0) return -1;
#endif
        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));
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            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);
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
        if (dictoffset == 0)
        {
            Py_ssize_t b_dictoffset = 0;
#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
            b_dictoffset = b->tp_dictoffset;
#else
            PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
            if (!py_b_dictoffset) goto dictoffset_return;
            b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
            Py_DECREF(py_b_dictoffset);
            if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
#endif
            if (b_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);
                }
#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
              dictoffset_return:
#endif
#if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(b0);
#endif
                return -1;
            }
        }
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(b0);
#endif
    }
    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

/* 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__108);
        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;
}

/* 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 && !CYTHON_COMPILING_IN_LIMITED_API
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
                                                       PyObject *firstlineno, PyObject *name) {
    PyObject *replace = NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
    replace = PyObject_GetAttrString(code, "replace");
    if (likely(replace)) {
        PyObject *result;
        result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    #if __PYX_LIMITED_VERSION_HEX < 0x030780000
    {
        PyObject *compiled = NULL, *result = NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
        compiled = Py_CompileString(
            "out = type(code)(\n"
            "  code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
            "  code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
            "  code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
            "  code.co_lnotab)\n", "<dummy>", Py_file_input);
        if (!compiled) return NULL;
        result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
        Py_DECREF(compiled);
        if (!result) PyErr_Print();
        Py_DECREF(result);
        result = PyDict_GetItemString(scratch_dict, "out");
        if (result) Py_INCREF(result);
        return result;
    }
    #else
    return NULL;
    #endif
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
    PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
    PyObject *exc_type, *exc_value, *exc_traceback;
    int success = 0;
    if (c_line) {
        (void) __pyx_cfilenm;
        (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
    if (unlikely(!code_object)) goto bad;
    py_py_line = PyLong_FromLong(py_line);
    if (unlikely(!py_py_line)) goto bad;
    py_funcname = PyUnicode_FromString(funcname);
    if (unlikely(!py_funcname)) goto bad;
    dict = PyDict_New();
    if (unlikely(!dict)) goto bad;
    {
        PyObject *old_code_object = code_object;
        code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
        Py_DECREF(old_code_object);
    }
    if (unlikely(!code_object)) goto bad;
    getframe = PySys_GetObject("_getframe");
    if (unlikely(!getframe)) goto bad;
    if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
    frame = PyEval_EvalCode(code_object, dict, dict);
    if (unlikely(!frame) || frame == Py_None) goto bad;
    success = 1;
  bad:
    PyErr_Restore(exc_type, exc_value, exc_traceback);
    Py_XDECREF(code_object);
    Py_XDECREF(py_py_line);
    Py_XDECREF(py_funcname);
    Py_XDECREF(dict);
    Py_XDECREF(replace);
    if (success) {
        PyTraceBack_Here(
            (struct _frame*)frame);
    }
    Py_XDECREF(frame);
}
#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);
    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;\
    }

/* Print */
#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
static PyObject *__Pyx_GetStdout(void) {
    PyObject *f = PySys_GetObject((char *)"stdout");
    if (!f) {
        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
    }
    return f;
}
static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) {
    int i;
    if (!f) {
        if (!(f = __Pyx_GetStdout()))
            return -1;
    }
    Py_INCREF(f);
    for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
        PyObject* v;
        if (PyFile_SoftSpace(f, 1)) {
            if (PyFile_WriteString(" ", f) < 0)
                goto error;
        }
        v = PyTuple_GET_ITEM(arg_tuple, i);
        if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
            goto error;
        if (PyString_Check(v)) {
            char *s = PyString_AsString(v);
            Py_ssize_t len = PyString_Size(v);
            if (len > 0) {
                switch (s[len-1]) {
                    case ' ': break;
                    case '\f': case '\r': case '\n': case '\t': case '\v':
                        PyFile_SoftSpace(f, 0);
                        break;
                    default:  break;
                }
            }
        }
    }
    if (newline) {
        if (PyFile_WriteString("\n", f) < 0)
            goto error;
        PyFile_SoftSpace(f, 0);
    }
    Py_DECREF(f);
    return 0;
error:
    Py_DECREF(f);
    return -1;
}
#else
static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
    PyObject* kwargs = 0;
    PyObject* result = 0;
    PyObject* end_string;
    if (unlikely(!__pyx_print)) {
        __pyx_print = PyObject_GetAttr(__pyx_b, __pyx_n_s_print);
        if (!__pyx_print)
            return -1;
    }
    if (stream) {
        kwargs = PyDict_New();
        if (unlikely(!kwargs))
            return -1;
        if (unlikely(PyDict_SetItem(kwargs, __pyx_n_s_file, stream) < 0))
            goto bad;
        if (!newline) {
            end_string = PyUnicode_FromStringAndSize(" ", 1);
            if (unlikely(!end_string))
                goto bad;
            if (PyDict_SetItem(kwargs, __pyx_n_s_end, end_string) < 0) {
                Py_DECREF(end_string);
                goto bad;
            }
            Py_DECREF(end_string);
        }
    } else if (!newline) {
        if (unlikely(!__pyx_print_kwargs)) {
            __pyx_print_kwargs = PyDict_New();
            if (unlikely(!__pyx_print_kwargs))
                return -1;
            end_string = PyUnicode_FromStringAndSize(" ", 1);
            if (unlikely(!end_string))
                return -1;
            if (PyDict_SetItem(__pyx_print_kwargs, __pyx_n_s_end, end_string) < 0) {
                Py_DECREF(end_string);
                return -1;
            }
            Py_DECREF(end_string);
        }
        kwargs = __pyx_print_kwargs;
    }
    result = PyObject_Call(__pyx_print, arg_tuple, kwargs);
    if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs))
        Py_DECREF(kwargs);
    if (!result)
        return -1;
    Py_DECREF(result);
    return 0;
bad:
    if (kwargs != __pyx_print_kwargs)
        Py_XDECREF(kwargs);
    return -1;
}
#endif

/* 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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        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;
    }
    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;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(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 *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (size_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (size_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (size_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        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;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((size_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long 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 (!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
        if (unlikely(ret))
            return (size_t) -1;
        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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    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;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(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 *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        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;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long 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 (!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
        if (unlikely(ret))
            return (int) -1;
        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_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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        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;
    }
    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;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(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 *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        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;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long 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 (!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
        if (unlikely(ret))
            return (unsigned int) -1;
        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;
}

/* PrintOne */
#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
    if (!f) {
        if (!(f = __Pyx_GetStdout()))
            return -1;
    }
    Py_INCREF(f);
    if (PyFile_SoftSpace(f, 0)) {
        if (PyFile_WriteString(" ", f) < 0)
            goto error;
    }
    if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
        goto error;
    if (PyFile_WriteString("\n", f) < 0)
        goto error;
    Py_DECREF(f);
    return 0;
error:
    Py_DECREF(f);
    return -1;
    /* the line below is just to avoid C compiler
     * warnings about unused functions */
    return __Pyx_Print(f, NULL, 0);
}
#else
static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
    int res;
    PyObject* arg_tuple = PyTuple_Pack(1, o);
    if (unlikely(!arg_tuple))
        return -1;
    res = __Pyx_Print(stream, arg_tuple, 1);
    Py_DECREF(arg_tuple);
    return res;
}
#endif

/* 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_XDECREF(name);
        name = __Pyx_NewRef(__pyx_n_s__1405);
    }
    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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    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;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(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 *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        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;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long 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 (!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
        if (unlikely(ret))
            return (long) -1;
        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

/* 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 {
#if PY_VERSION_HEX < 0x030d00A1
            _PyGen_SetStopIterationValue(result);
#else
            if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) {
                PyErr_SetObject(PyExc_StopIteration, result);
            } else {
                PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result);
                if (likely(exc != NULL)) {
                    PyErr_SetObject(PyExc_StopIteration, exc);
                    Py_DECREF(exc);
                }
            }
#endif
        }
        Py_DECREF(result);
        result = NULL;
    }
    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 PY_VERSION_HEX >= 0x030d00A4
    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 unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
    return Py_Version & ~0xFFUL;
#else
    const char* rt_version = Py_GetVersion();
    unsigned long version = 0;
    unsigned long factor = 0x01000000UL;
    unsigned int digit = 0;
    int i = 0;
    while (factor) {
        while ('0' <= rt_version[i] && rt_version[i] <= '9') {
            digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
            ++i;
        }
        version += factor * digit;
        if (rt_version[i] != '.')
            break;
        digit = 0;
        factor >>= 8;
        ++i;
    }
    return version;
#endif
}
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
    const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
    if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
        return 0;
    if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
        return 1;
    {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compile time Python version %d.%d "
                      "of module '%.100s' "
                      "%s "
                      "runtime version %d.%d",
                       (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
                       __Pyx_MODULE_NAME,
                       (allow_newer) ? "was newer than" : "does not match",
                       (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
       );
        return PyErr_WarnEx(NULL, message, 1);
    }
}

/* 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;
}

#include <string.h>
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
    size_t len = strlen(s);
    if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
        PyErr_SetString(PyExc_OverflowError, "byte string is too long");
        return -1;
    }
    return (Py_ssize_t) len;
}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return PyByteArray_FromStringAndSize(c_str, len);
}
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 */
